From a606421b8b508b3bc42e43b6bad426dae71f1438 Mon Sep 17 00:00:00 2001 From: Georg Kahest Date: Tue, 11 Apr 2017 14:27:19 +0300 Subject: [PATCH 1/6] log digidoc to same place as rails #448 --- app/controllers/registrant/sessions_controller.rb | 2 ++ app/controllers/registrar/sessions_controller.rb | 2 ++ config/initializers/digidoc.rb | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) delete mode 100644 config/initializers/digidoc.rb diff --git a/app/controllers/registrant/sessions_controller.rb b/app/controllers/registrant/sessions_controller.rb index 91589d510..d1fd1e004 100644 --- a/app/controllers/registrant/sessions_controller.rb +++ b/app/controllers/registrant/sessions_controller.rb @@ -29,6 +29,7 @@ class Registrant::SessionsController < Devise::SessionsController phone = params[:user][:phone] endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger if Rails.env.test? && phone == "123" @user = ApiUser.find_by(identity_code: "14212128025") @@ -70,6 +71,7 @@ class Registrant::SessionsController < Devise::SessionsController def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger client.session_code = session[:mid_session_code] auth_status = client.authentication_status diff --git a/app/controllers/registrar/sessions_controller.rb b/app/controllers/registrar/sessions_controller.rb index 2d04c6fdd..ebdbb04bb 100644 --- a/app/controllers/registrar/sessions_controller.rb +++ b/app/controllers/registrar/sessions_controller.rb @@ -100,6 +100,7 @@ class Registrar::SessionsController < Devise::SessionsController phone = params[:user][:phone] endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger # country_codes = {'+372' => 'EST'} phone.gsub!('+372', '') @@ -135,6 +136,7 @@ class Registrar::SessionsController < Devise::SessionsController def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) + client.logger = Rails.application.config.logger client.session_code = session[:mid_session_code] auth_status = client.authentication_status diff --git a/config/initializers/digidoc.rb b/config/initializers/digidoc.rb deleted file mode 100644 index 0090c420d..000000000 --- a/config/initializers/digidoc.rb +++ /dev/null @@ -1 +0,0 @@ -#Digidoc::Client.logger = Rails.application.config.logger From aa141b50d6c223a6644df99d3f35fa1626379d8b Mon Sep 17 00:00:00 2001 From: Georg Kahest Date: Wed, 12 Apr 2017 16:02:22 +0300 Subject: [PATCH 2/6] skip client.logger in TEST env --- app/controllers/registrant/sessions_controller.rb | 4 ++-- app/controllers/registrar/sessions_controller.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/registrant/sessions_controller.rb b/app/controllers/registrant/sessions_controller.rb index d1fd1e004..e1523c919 100644 --- a/app/controllers/registrant/sessions_controller.rb +++ b/app/controllers/registrant/sessions_controller.rb @@ -29,7 +29,7 @@ class Registrant::SessionsController < Devise::SessionsController phone = params[:user][:phone] endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) - client.logger = Rails.application.config.logger + client.logger = Rails.application.config.logger unless Rails.env.test? if Rails.env.test? && phone == "123" @user = ApiUser.find_by(identity_code: "14212128025") @@ -71,7 +71,7 @@ class Registrant::SessionsController < Devise::SessionsController def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) - client.logger = Rails.application.config.logger + client.logger = Rails.application.config.logger unless Rails.env.test? client.session_code = session[:mid_session_code] auth_status = client.authentication_status diff --git a/app/controllers/registrar/sessions_controller.rb b/app/controllers/registrar/sessions_controller.rb index ebdbb04bb..a66d6f034 100644 --- a/app/controllers/registrar/sessions_controller.rb +++ b/app/controllers/registrar/sessions_controller.rb @@ -100,7 +100,7 @@ class Registrar::SessionsController < Devise::SessionsController phone = params[:user][:phone] endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) - client.logger = Rails.application.config.logger + client.logger = Rails.application.config.logger unless Rails.env.test? # country_codes = {'+372' => 'EST'} phone.gsub!('+372', '') @@ -136,7 +136,7 @@ class Registrar::SessionsController < Devise::SessionsController def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) - client.logger = Rails.application.config.logger + client.logger = Rails.application.config.logger Rails.env.test? client.session_code = session[:mid_session_code] auth_status = client.authentication_status From cc58c687b668d64e11f34a42cd112e5be16d916a Mon Sep 17 00:00:00 2001 From: Georg Kahest Date: Wed, 12 Apr 2017 16:39:38 +0300 Subject: [PATCH 3/6] lock digidoc_client to commit, fix typo --- Gemfile | 2 +- app/controllers/registrar/sessions_controller.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 4d039cd92..0249290fa 100644 --- a/Gemfile +++ b/Gemfile @@ -86,7 +86,7 @@ gem 'deep_cloneable', '2.1.1' # gem 'digidoc_client', '0.3.0' gem 'digidoc_client', github: 'tarmotalu/digidoc_client', - branch: 'master' + ref: '1645e83a5a548addce383f75703b0275c5310c32' gem 'epp', '1.5.0', github: 'internetee/epp' diff --git a/app/controllers/registrar/sessions_controller.rb b/app/controllers/registrar/sessions_controller.rb index a66d6f034..8c148acc2 100644 --- a/app/controllers/registrar/sessions_controller.rb +++ b/app/controllers/registrar/sessions_controller.rb @@ -136,7 +136,7 @@ class Registrar::SessionsController < Devise::SessionsController def mid_status endpoint = "#{ENV['sk_digi_doc_service_endpoint']}" client = Digidoc::Client.new(endpoint) - client.logger = Rails.application.config.logger Rails.env.test? + client.logger = Rails.application.config.logger unless Rails.env.test? client.session_code = session[:mid_session_code] auth_status = client.authentication_status From c38bef5af0dd1c466880ec1c6acbab43f823a9ef Mon Sep 17 00:00:00 2001 From: Georg Kahest Date: Wed, 12 Apr 2017 16:56:56 +0300 Subject: [PATCH 4/6] fix Gemfile.lock --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c314d836d..59ba30d96 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -47,7 +47,7 @@ GIT GIT remote: https://github.com/tarmotalu/digidoc_client.git revision: 1645e83a5a548addce383f75703b0275c5310c32 - branch: master + ref: 1645e83a5a548addce383f75703b0275c5310c32 specs: digidoc_client (0.3.0) crack (>= 0.1.8) From 603edfce79548a796369c4e397067babc65d8eb7 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 14 Apr 2017 16:16:10 +0300 Subject: [PATCH 5/6] Remove unicorn gem --- Gemfile | 3 --- Gemfile.lock | 6 ------ 2 files changed, 9 deletions(-) diff --git a/Gemfile b/Gemfile index 0249290fa..1c4c5d457 100644 --- a/Gemfile +++ b/Gemfile @@ -149,9 +149,6 @@ group :development, :test do gem 'html2haml', '2.1.0' gem 'sdoc', '0.4.1' # bundle exec rake doc:rails generates the API under doc/api. gem 'railroady', '1.3.0' # to generate database diagrams - - # dev tools - gem 'unicorn' gem 'autodoc' end diff --git a/Gemfile.lock b/Gemfile.lock index 59ba30d96..c9a17e96c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -284,7 +284,6 @@ GEM kaminari (0.16.3) actionpack (>= 3.0.0) activesupport (>= 3.0.0) - kgio (2.11.0) launchy (2.4.3) addressable (~> 2.3) libv8 (3.16.14.19) @@ -394,7 +393,6 @@ GEM rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.2.1) - raindrops (0.18.0) rake (12.0.0) ransack (1.5.1) actionpack (>= 3.0) @@ -525,9 +523,6 @@ GEM unf_ext (0.0.7.2) unicode-display_width (1.2.0) unicode_utils (1.4.0) - unicorn (5.3.0) - kgio (~> 2.6) - raindrops (~> 0.7) uniform_notifier (1.9.0) uuidtools (2.1.5) validates_email_format_of (1.6.3) @@ -635,7 +630,6 @@ DEPENDENCIES therubyracer (= 0.12.2) turbolinks (= 2.5.3) uglifier (= 2.7.2) - unicorn uuidtools (= 2.1.5) validates_email_format_of (= 1.6.3) webmock From 4c9deea1fb94c9e77a6c50ec580ae064a672d676 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 22 Apr 2017 16:13:58 +0300 Subject: [PATCH 6/6] Update "generate_zonefile" SQL function - Taken from staging --- ...0422130054_update_generate_zonefile_sql.rb | 124 ++++++++++++++++++ db/schema-read-only.rb | 2 +- db/structure.sql | 10 +- 3 files changed, 131 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20170422130054_update_generate_zonefile_sql.rb diff --git a/db/migrate/20170422130054_update_generate_zonefile_sql.rb b/db/migrate/20170422130054_update_generate_zonefile_sql.rb new file mode 100644 index 000000000..d20257f31 --- /dev/null +++ b/db/migrate/20170422130054_update_generate_zonefile_sql.rb @@ -0,0 +1,124 @@ +class UpdateGenerateZonefileSql < ActiveRecord::Migration + def change + execute <<-SQL + CREATE OR REPLACE FUNCTION generate_zonefile(i_origin character varying) RETURNS text + LANGUAGE plpgsql + AS $_$ + DECLARE + zone_header text := concat('$ORIGIN ', i_origin, '.'); + serial_num varchar; + include_filter varchar := ''; + exclude_filter varchar := ''; + tmp_var text; + ret text; + BEGIN + -- define filters + include_filter = '%.' || i_origin; + + -- for %.%.% + IF i_origin ~ '.' THEN + exclude_filter := ''; + -- for %.% + ELSE + exclude_filter := '%.%.' || i_origin; + END IF; + + SELECT ROUND(extract(epoch from now() at time zone 'utc')) INTO serial_num; + + -- zonefile header + SELECT concat( + format('%-10s', '$ORIGIN .'), chr(10), + format('%-10s', '$TTL'), zf.ttl, chr(10), chr(10), + format('%-10s', i_origin || '.'), 'IN SOA ', zf.master_nameserver, '. ', zf.email, '. (', chr(10), + format('%-17s', ''), format('%-12s', serial_num), '; serial number', chr(10), + format('%-17s', ''), format('%-12s', zf.refresh), '; refresh, seconds', chr(10), + format('%-17s', ''), format('%-12s', zf.retry), '; retry, seconds', chr(10), + format('%-17s', ''), format('%-12s', zf.expire), '; expire, seconds', chr(10), + format('%-17s', ''), format('%-12s', zf.minimum_ttl), '; minimum TTL, seconds', chr(10), + format('%-17s', ''), ')' + ) FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + + ret = concat(tmp_var, chr(10), chr(10)); + + -- origin ns records + SELECT ns_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone NS Records', chr(10), tmp_var, chr(10)); + + -- ns records + SELECT array_to_string( + array( + SELECT concat(d.name_puny, '. IN NS ', coalesce(ns.hostname_puny, ns.hostname), '.') + FROM domains d + JOIN nameservers ns ON ns.domain_id = d.id + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND NOT ('{serverHold,clientHold,inactive}' && d.statuses) + ORDER BY d.name + ), + chr(10) + ) INTO tmp_var; + + ret := concat(ret, tmp_var, chr(10), chr(10)); + + -- origin a glue records + SELECT a_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone A Records', chr(10), tmp_var, chr(10)); + + -- a glue records for other nameservers + SELECT array_to_string( + array( + SELECT concat(coalesce(ns.hostname_puny, ns.hostname), '. IN A ', unnest(ns.ipv4)) + FROM nameservers ns + JOIN domains d ON d.id = ns.domain_id + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND ns.hostname LIKE '%.' || d.name + AND d.name <> i_origin + AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '{}' + AND NOT ('{serverHold,clientHold,inactive}' && d.statuses) + ), chr(10) + ) INTO tmp_var; + + ret := concat(ret, tmp_var, chr(10), chr(10)); + + -- origin aaaa glue records + SELECT a4_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var, chr(10)); + + -- aaaa glue records for other nameservers + SELECT array_to_string( + array( + SELECT concat(coalesce(ns.hostname_puny, ns.hostname), '. IN AAAA ', unnest(ns.ipv6)) + FROM nameservers ns + JOIN domains d ON d.id = ns.domain_id + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND ns.hostname LIKE '%.' || d.name + AND d.name <> i_origin + AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '{}' + AND NOT ('{serverHold,clientHold,inactive}' && d.statuses) + ), chr(10) + ) INTO tmp_var; + + ret := concat(ret, tmp_var, chr(10), chr(10)); + + -- ds records + SELECT array_to_string( + array( + SELECT concat( + d.name_puny, '. 3600 IN DS ', dk.ds_key_tag, ' ', + dk.ds_alg, ' ', dk.ds_digest_type, ' ', dk.ds_digest + ) + FROM domains d + JOIN dnskeys dk ON dk.domain_id = d.id + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter AND dk.flags = 257 + AND NOT ('{serverHold,clientHold,inactive}' && d.statuses) + ), + chr(10) + ) INTO tmp_var; + + ret := concat(ret, '; Zone DS Records', chr(10), tmp_var, chr(10)); + + RETURN ret; + END; + $_$; + SQL + end +end diff --git a/db/schema-read-only.rb b/db/schema-read-only.rb index 7bebdbba9..f16c4855e 100644 --- a/db/schema-read-only.rb +++ b/db/schema-read-only.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170221115548) do +ActiveRecord::Schema.define(version: 20170422130054) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/db/structure.sql b/db/structure.sql index 373d7239e..3abedd9f8 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -167,7 +167,7 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text exclude_filter varchar := ''; tmp_var text; ret text; - BEGIN + BEGIN -- define filters include_filter = '%.' || i_origin; @@ -203,7 +203,7 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text -- ns records SELECT array_to_string( array( - SELECT concat(d.name_puny, '. IN NS ', ns.hostname, '.') + SELECT concat(d.name_puny, '. IN NS ', coalesce(ns.hostname_puny, ns.hostname), '.') FROM domains d JOIN nameservers ns ON ns.domain_id = d.id WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter @@ -222,7 +222,7 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text -- a glue records for other nameservers SELECT array_to_string( array( - SELECT concat(ns.hostname, '. IN A ', unnest(ns.ipv4)) + SELECT concat(coalesce(ns.hostname_puny, ns.hostname), '. IN A ', unnest(ns.ipv4)) FROM nameservers ns JOIN domains d ON d.id = ns.domain_id WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter @@ -242,7 +242,7 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text -- aaaa glue records for other nameservers SELECT array_to_string( array( - SELECT concat(ns.hostname, '. IN AAAA ', unnest(ns.ipv6)) + SELECT concat(coalesce(ns.hostname_puny, ns.hostname), '. IN AAAA ', unnest(ns.ipv6)) FROM nameservers ns JOIN domains d ON d.id = ns.domain_id WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter @@ -5280,3 +5280,5 @@ INSERT INTO schema_migrations (version) VALUES ('20161227193500'); INSERT INTO schema_migrations (version) VALUES ('20170221115548'); +INSERT INTO schema_migrations (version) VALUES ('20170422130054'); +