diff --git a/Gemfile b/Gemfile index 4d039cd92..1c4c5d457 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' @@ -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 c314d836d..c9a17e96c 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) @@ -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 diff --git a/app/controllers/registrant/sessions_controller.rb b/app/controllers/registrant/sessions_controller.rb index 91589d510..e1523c919 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 unless Rails.env.test? 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 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 2d04c6fdd..8c148acc2 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 unless Rails.env.test? # 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 unless Rails.env.test? 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 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'); +