From c1f9a470dfcb0b6d062fcf1398c1811d2f9bd251 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 22 Jul 2015 12:45:52 +0300 Subject: [PATCH 01/94] Experimental domain validation #2799 --- app/controllers/epp_controller.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 3fec7910b..6da50eab3 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -6,6 +6,23 @@ class EppController < ApplicationController before_action :generate_svtrid before_action :latin_only + # before_action :validate_against_schema + + # def validate_against_schema + # if params[:epp_object_type] == :domain + + # xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-eis-1.0.xsd')) + # xsd.validate(Nokogiri::XML(params[:raw_frame])).each do |error| + # epp_errors << { + # code: 2002, + # msg: error + # } + # end + # end + + # handle_errors and return if epp_errors.any? + # end + before_action :validate_request before_action :update_epp_session From c79fee5a499885032b859c0005a3d6d0c2b4770c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 22 Jul 2015 18:34:19 +0300 Subject: [PATCH 02/94] Validate request against schemas #2799 --- app/controllers/epp_controller.rb | 30 +++++++++++++++++------------- lib/epp_constraint.rb | 1 + 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 6da50eab3..16e788500 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -6,22 +6,26 @@ class EppController < ApplicationController before_action :generate_svtrid before_action :latin_only - # before_action :validate_against_schema + before_action :validate_against_schema - # def validate_against_schema - # if params[:epp_object_type] == :domain + def validate_against_schema + # filename = + # if params[:epp_object_type] == :domain - # xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-eis-1.0.xsd')) - # xsd.validate(Nokogiri::XML(params[:raw_frame])).each do |error| - # epp_errors << { - # code: 2002, - # msg: error - # } - # end - # end + return if params[:action] == 'hello' + params[:schema] = 'epp-1.0.xsd' unless params[:schema] - # handle_errors and return if epp_errors.any? - # end + xsd = Nokogiri::XML::Schema(File.read("doc/schemas/#{params[:schema]}")) + xsd.validate(Nokogiri::XML(params[:raw_frame])).each do |error| + epp_errors << { + code: 2001, + msg: error + } + end + + # end + handle_errors and return if epp_errors.any? + end before_action :validate_request before_action :update_epp_session diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb index 02bf285d9..c4c5e712e 100644 --- a/lib/epp_constraint.rb +++ b/lib/epp_constraint.rb @@ -15,6 +15,7 @@ class EppConstraint unless [:keyrelay, :poll].include?(@type) element = "//#{@type}:#{request.params[:action]}" return false if parsed_frame.xpath("#{element}", OBJECT_TYPES[@type]).none? + request.params[:schema] = OBJECT_TYPES[@type][@type].split('/').last end request.params[:parsed_frame] = parsed_frame.remove_namespaces! From 2148cc57e5dd652eb82ce566bcf29ced9f01318c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 23 Jul 2015 12:21:53 +0300 Subject: [PATCH 03/94] Refactor #2752 --- app/controllers/epp_controller.rb | 7 +- config/routes.rb | 4 +- doc/epp-doc.md | 6 +- doc/schemas/domain-eis-1.0.xsd | 8 +- lib/epp_constraint.rb | 3 +- lib/schemas/contact-eis-1.0.xsd | 366 ++++++++++++++++++++++ lib/schemas/domain-eis-1.0.xsd | 451 ++++++++++++++++++++++++++++ lib/schemas/eis-1.0.xsd | 102 +++++++ {doc => lib}/schemas/epp-1.0.xsd | 2 +- {doc => lib}/schemas/eppcom-1.0.xsd | 0 {doc => lib}/schemas/host-1.0.xsd | 0 {doc => lib}/schemas/secDNS-1.1.xsd | 0 spec/epp/contact_spec.rb | 2 +- spec/epp/domain_spec.rb | 2 +- spec/epp/poll_spec.rb | 2 +- spec/epp/session_spec.rb | 4 +- 16 files changed, 935 insertions(+), 24 deletions(-) create mode 100644 lib/schemas/contact-eis-1.0.xsd create mode 100644 lib/schemas/domain-eis-1.0.xsd create mode 100644 lib/schemas/eis-1.0.xsd rename {doc => lib}/schemas/epp-1.0.xsd (99%) rename {doc => lib}/schemas/eppcom-1.0.xsd (100%) rename {doc => lib}/schemas/host-1.0.xsd (100%) rename {doc => lib}/schemas/secDNS-1.1.xsd (100%) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 16e788500..931dbc62d 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -9,13 +9,9 @@ class EppController < ApplicationController before_action :validate_against_schema def validate_against_schema - # filename = - # if params[:epp_object_type] == :domain - return if params[:action] == 'hello' params[:schema] = 'epp-1.0.xsd' unless params[:schema] - - xsd = Nokogiri::XML::Schema(File.read("doc/schemas/#{params[:schema]}")) + xsd = Nokogiri::XML::Schema(File.read("lib/schemas/#{params[:schema]}")) xsd.validate(Nokogiri::XML(params[:raw_frame])).each do |error| epp_errors << { code: 2001, @@ -23,7 +19,6 @@ class EppController < ApplicationController } end - # end handle_errors and return if epp_errors.any? end diff --git a/config/routes.rb b/config/routes.rb index bb1828c36..4ec266d9a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,8 +2,8 @@ require 'epp_constraint' Rails.application.routes.draw do namespace(:epp, defaults: { format: :xml }) do - match 'session/:action', controller: 'sessions', via: :all - match 'session/pki/:action', controller: 'sessions', via: :all + match 'session/:action', controller: 'sessions', via: :all, constraints: EppConstraint.new(:session) + match 'session/pki/:action', controller: 'sessions', via: :all, constraints: EppConstraint.new(:session) post 'command/:action', controller: 'domains', constraints: EppConstraint.new(:domain) post 'command/:action', controller: 'contacts', constraints: EppConstraint.new(:contact) diff --git a/doc/epp-doc.md b/doc/epp-doc.md index cf4a84d71..cf6ae2788 100644 --- a/doc/epp-doc.md +++ b/doc/epp-doc.md @@ -16,15 +16,11 @@ Our implementation supports following protocols: [RFC5910 - DNSSEC Mapping](http://tools.ietf.org/html/rfc5910) [RFC3735 - Guidelines for Extending the EPP](http://tools.ietf.org/html/rfc3735) -Related XML Schema Definitions (may differ from policies applied to registry): +EIS specific XML Schema Definitions (may differ from policies applied to registry): [contact-eis-1.0.xsd](schemas/contact-eis-1.0.xsd) [domain-eis-1.0.xsd](schemas/domain-eis-1.0.xsd) [eis-1.0.xsd](schemas/eis-1.0.xsd) -[epp-1.0.xsd](schemas/epp-1.0.xsd) -[eppcom-1.0.xsd](schemas/eppcom-1.0.xsd) -[host-1.0.xsd](schemas/host-1.0.xsd) -[secDNS-1.1.xsd](schemas/secDNS-1.1.xsd) More info about The Extensible Provisioning Protocol (EPP):
http://en.wikipedia.org/wiki/Extensible_Provisioning_Protocol diff --git a/doc/schemas/domain-eis-1.0.xsd b/doc/schemas/domain-eis-1.0.xsd index a0b89c0c6..89d304ed6 100644 --- a/doc/schemas/domain-eis-1.0.xsd +++ b/doc/schemas/domain-eis-1.0.xsd @@ -11,10 +11,10 @@ - - - - + + + + diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb index c4c5e712e..842ecf218 100644 --- a/lib/epp_constraint.rb +++ b/lib/epp_constraint.rb @@ -12,9 +12,10 @@ class EppConstraint def matches?(request) parsed_frame = Nokogiri::XML(request.params[:raw_frame]) - unless [:keyrelay, :poll].include?(@type) + unless [:keyrelay, :poll, :session].include?(@type) element = "//#{@type}:#{request.params[:action]}" return false if parsed_frame.xpath("#{element}", OBJECT_TYPES[@type]).none? + # TODO: Support multiple schemas request.params[:schema] = OBJECT_TYPES[@type][@type].split('/').last end diff --git a/lib/schemas/contact-eis-1.0.xsd b/lib/schemas/contact-eis-1.0.xsd new file mode 100644 index 000000000..66d12ba13 --- /dev/null +++ b/lib/schemas/contact-eis-1.0.xsd @@ -0,0 +1,366 @@ + + + + + + + + + + + + Extensible Provisioning Protocol v1.0 + contact provisioning schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/schemas/domain-eis-1.0.xsd b/lib/schemas/domain-eis-1.0.xsd new file mode 100644 index 000000000..eeea51493 --- /dev/null +++ b/lib/schemas/domain-eis-1.0.xsd @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + Extensible Provisioning Protocol v1.0 + domain provisioning schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/schemas/eis-1.0.xsd b/lib/schemas/eis-1.0.xsd new file mode 100644 index 000000000..2612b5e57 --- /dev/null +++ b/lib/schemas/eis-1.0.xsd @@ -0,0 +1,102 @@ + + + + + + EIS Extensible Provisioning Protocol v1.0 extension schema. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/schemas/epp-1.0.xsd b/lib/schemas/epp-1.0.xsd similarity index 99% rename from doc/schemas/epp-1.0.xsd rename to lib/schemas/epp-1.0.xsd index 1efc25947..448b9ae25 100644 --- a/doc/schemas/epp-1.0.xsd +++ b/lib/schemas/epp-1.0.xsd @@ -9,7 +9,7 @@ - + diff --git a/doc/schemas/eppcom-1.0.xsd b/lib/schemas/eppcom-1.0.xsd similarity index 100% rename from doc/schemas/eppcom-1.0.xsd rename to lib/schemas/eppcom-1.0.xsd diff --git a/doc/schemas/host-1.0.xsd b/lib/schemas/host-1.0.xsd similarity index 100% rename from doc/schemas/host-1.0.xsd rename to lib/schemas/host-1.0.xsd diff --git a/doc/schemas/secDNS-1.1.xsd b/lib/schemas/secDNS-1.1.xsd similarity index 100% rename from doc/schemas/secDNS-1.1.xsd rename to lib/schemas/secDNS-1.1.xsd diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 166ce8659..98bb94bdf 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' describe 'EPP Contact', epp: true do before :all do - @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-eis-1.0.xsd')) + @xsd = Nokogiri::XML::Schema(File.read('lib/schemas/contact-eis-1.0.xsd')) @registrar1 = Fabricate(:registrar1) @registrar2 = Fabricate(:registrar2) @epp_xml = EppXml::Contact.new(cl_trid: 'ABC-12345') diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 6d7ab9fb5..985c6d134 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' describe 'EPP Domain', epp: true do before(:all) do - @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-eis-1.0.xsd')) + @xsd = Nokogiri::XML::Schema(File.read('lib/schemas/domain-eis-1.0.xsd')) @epp_xml = EppXml.new(cl_trid: 'ABC-12345') @registrar1 = Fabricate(:registrar1, code: 'REGDOMAIN1') @registrar1.credit!({ sum: 10000 }) diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index aceb22c3b..12f6c5cee 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -12,7 +12,7 @@ describe 'EPP Poll', epp: true do end before(:all) do - @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/epp-1.0.xsd')) + @xsd = Nokogiri::XML::Schema(File.read('lib/schemas/epp-1.0.xsd')) Fabricate(:api_user, username: 'registrar1', registrar: registrar1) Fabricate(:api_user, username: 'registrar2', registrar: registrar2) diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index d5438ad7a..63b34e52b 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -5,7 +5,7 @@ describe 'EPP Session', epp: true do @api_user = Fabricate(:gitlab_api_user) @epp_xml = EppXml.new(cl_trid: 'ABC-12345') @login_xml_cache = @epp_xml.session.login(clID: { value: 'gitlab' }, pw: { value: 'ghyt9e4fu' }) - @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/epp-1.0.xsd')) + @xsd = Nokogiri::XML::Schema(File.read('lib/schemas/epp-1.0.xsd')) end context 'when not connected' do @@ -51,7 +51,7 @@ describe 'EPP Session', epp: true do end it 'prohibits further actions unless logged in' do - @xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-eis-1.0.xsd')) + @xsd = Nokogiri::XML::Schema(File.read('lib/schemas/domain-eis-1.0.xsd')) response = epp_plain_request(@epp_xml.domain.info(name: { value: 'test.ee' })) response[:msg].should == 'You need to login first.' response[:result_code].should == '2002' From e3a8604ec451e4598cc4d8a5de080073ebbd590c Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 13:30:05 +0300 Subject: [PATCH 04/94] Log all user flash messages #2808 --- Gemfile | 2 +- config/initializers/eis_custom_flash.rb | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 config/initializers/eis_custom_flash.rb diff --git a/Gemfile b/Gemfile index 921074895..e26af28b9 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ end if Bundler::VERSION < '2' source 'https://rubygems.org' # core -gem 'rails', '4.2.3' +gem 'rails', '4.2.3' # when update, all initializers eis_custom files needs check/update gem 'iso8601', '~> 0.8.2' # for dates and times gem 'hashie-forbidden_attributes', '~> 0.1.1' diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb new file mode 100644 index 000000000..4669f1945 --- /dev/null +++ b/config/initializers/eis_custom_flash.rb @@ -0,0 +1,22 @@ +module ActionDispatch + class Flash + def call(env) + @app.call(env) + ensure + session = Request::Session.find(env) || {} + flash_hash = env[KEY] + + if flash_hash && (flash_hash.present? || session.key?('flash')) + session["flash"] = flash_hash.to_session_value + Rails.logger.info "FLASH: #{Time.now.to_s(:db)} #{session['flash']['flashes'].inspect}" if session['flash'] + env[KEY] = flash_hash.dup + end + + if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?) + session.key?('flash') && session['flash'].nil? + session.delete('flash') + end + end + end +end + From c94da28af68c5f3967de8785c5f1f33afe7812ac Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 23 Jul 2015 13:31:22 +0300 Subject: [PATCH 05/94] Move xml parsing to epp constraint #2752 --- app/controllers/epp_controller.rb | 4 ++-- lib/epp_constraint.rb | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 931dbc62d..2c7c25faf 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -9,10 +9,10 @@ class EppController < ApplicationController before_action :validate_against_schema def validate_against_schema - return if params[:action] == 'hello' + return if ['hello', 'error'].include?(params[:action]) params[:schema] = 'epp-1.0.xsd' unless params[:schema] xsd = Nokogiri::XML::Schema(File.read("lib/schemas/#{params[:schema]}")) - xsd.validate(Nokogiri::XML(params[:raw_frame])).each do |error| + xsd.validate(params[:nokogiri_frame]).each do |error| epp_errors << { code: 2001, msg: error diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb index 842ecf218..b7e151a62 100644 --- a/lib/epp_constraint.rb +++ b/lib/epp_constraint.rb @@ -10,16 +10,16 @@ class EppConstraint # creates parsed_frame, detects epp request object def matches?(request) - parsed_frame = Nokogiri::XML(request.params[:raw_frame]) + request.params[:nokogiri_frame] ||= Nokogiri::XML(request.params[:raw_frame]) + request.params[:parsed_frame] ||= request.params[:nokogiri_frame].dup.remove_namespaces! unless [:keyrelay, :poll, :session].include?(@type) element = "//#{@type}:#{request.params[:action]}" - return false if parsed_frame.xpath("#{element}", OBJECT_TYPES[@type]).none? + return false if request.params[:nokogiri_frame].xpath("#{element}", OBJECT_TYPES[@type]).none? # TODO: Support multiple schemas request.params[:schema] = OBJECT_TYPES[@type][@type].split('/').last end - request.params[:parsed_frame] = parsed_frame.remove_namespaces! request.params[:epp_object_type] = @type true end From 67ae9ff020b791d6bf6677f1db52007d33b0b5c2 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 23 Jul 2015 13:34:42 +0300 Subject: [PATCH 06/94] Remove parsed_frame helper from epp sessions #2752 --- app/controllers/epp/sessions_controller.rb | 8 ++------ app/controllers/epp_controller.rb | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/controllers/epp/sessions_controller.rb b/app/controllers/epp/sessions_controller.rb index 021011390..df008c3e3 100644 --- a/app/controllers/epp/sessions_controller.rb +++ b/app/controllers/epp/sessions_controller.rb @@ -75,8 +75,8 @@ class Epp::SessionsController < EppController end if success - if parsed_frame.css('newPW').first - unless @api_user.update(password: parsed_frame.css('newPW').first.text) + if params[:parsed_frame].css('newPW').first + unless @api_user.update(password: params[:parsed_frame].css('newPW').first.text) response.headers['X-EPP-Returncode'] = '2500' handle_errors(@api_user) and return end @@ -127,8 +127,4 @@ class Epp::SessionsController < EppController ph = params_hash['epp']['command']['login'] { username: ph[:clID], password: ph[:pw] } end - - def parsed_frame - @parsed_frame ||= Nokogiri::XML(request.params[:raw_frame]).remove_namespaces! - end end diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 2c7c25faf..931878979 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -6,8 +6,8 @@ class EppController < ApplicationController before_action :generate_svtrid before_action :latin_only - before_action :validate_against_schema + before_action :validate_against_schema def validate_against_schema return if ['hello', 'error'].include?(params[:action]) params[:schema] = 'epp-1.0.xsd' unless params[:schema] From 02186987fc336021d418ad7d10930bf6c2e256cc Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 23 Jul 2015 13:39:02 +0300 Subject: [PATCH 07/94] Migrate from deprecated params_hash to parsed_frame #2752 --- app/controllers/epp/sessions_controller.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/epp/sessions_controller.rb b/app/controllers/epp/sessions_controller.rb index df008c3e3..b877c01ce 100644 --- a/app/controllers/epp/sessions_controller.rb +++ b/app/controllers/epp/sessions_controller.rb @@ -124,7 +124,8 @@ class Epp::SessionsController < EppController ### HELPER METHODS ### def login_params - ph = params_hash['epp']['command']['login'] - { username: ph[:clID], password: ph[:pw] } + user = params[:parsed_frame].css('clID').first.text + pw = params[:parsed_frame].css('pw').first.text + { username: user, password: pw } end end From 09deb2b187d2ab1114a3e1345f64a01a8d501477 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 14:02:40 +0300 Subject: [PATCH 08/94] Update flash logging message #2808 --- config/initializers/eis_custom_flash.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb index 4669f1945..846d46bd5 100644 --- a/config/initializers/eis_custom_flash.rb +++ b/config/initializers/eis_custom_flash.rb @@ -8,7 +8,11 @@ module ActionDispatch if flash_hash && (flash_hash.present? || session.key?('flash')) session["flash"] = flash_hash.to_session_value - Rails.logger.info "FLASH: #{Time.now.to_s(:db)} #{session['flash']['flashes'].inspect}" if session['flash'] + + # EIS custom logging + Rails.logger.info "USER MSG: #{Time.now.to_s(:db)} FLASH: #{session['flash']['flashes'].inspect}" if session['flash'] + # END OF EIS custom logging + env[KEY] = flash_hash.dup end From dd7771c59d4b08476e157b5ae7e8d40587c74e11 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 16:51:32 +0300 Subject: [PATCH 09/94] Log all activerecord and activemodel user issues #2808 --- app/models/epp/domain.rb | 1 - config/initializers/eis_custom_active_model.rb | 18 ++++++++++++++++++ .../initializers/eis_custom_active_record.rb | 7 +++++++ config/initializers/eis_custom_flash.rb | 1 + config/unicorn.rb | 1 - 5 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 config/initializers/eis_custom_active_model.rb create mode 100644 config/initializers/eis_custom_active_record.rb diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 37cbbfa75..57cd1b5a3 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -134,7 +134,6 @@ class Epp::Domain < Domain at[:reserved_pw] = frame.css('reserved > pw').text # at[:statuses] = domain_statuses_attrs(frame, action) - # binding.pry at[:nameservers_attributes] = nameservers_attrs(frame, action) at[:admin_domain_contacts_attributes] = admin_domain_contacts_attrs(frame, action) at[:tech_domain_contacts_attributes] = tech_domain_contacts_attrs(frame, action) diff --git a/config/initializers/eis_custom_active_model.rb b/config/initializers/eis_custom_active_model.rb new file mode 100644 index 000000000..e5ea5b2b3 --- /dev/null +++ b/config/initializers/eis_custom_active_model.rb @@ -0,0 +1,18 @@ +# Log all active model user errors +module ActiveModel + class Errors + def add(attribute, message = :invalid, options = {}) + message = normalize_message(attribute, message, options) + if exception = options[:strict] + exception = ActiveModel::StrictValidationFailed if exception == true + raise exception, full_message(attribute, message) + end + + # CUSTOM logging + Rails.logger.info "USER MSG: #{Time.now.to_s(:db)} ACTIVEMODEL: #{@base.try(:class)} [#{attribute}] #{message}" if message.present? + # END of CUSTOM logging + + self[attribute] << message + end + end +end diff --git a/config/initializers/eis_custom_active_record.rb b/config/initializers/eis_custom_active_record.rb new file mode 100644 index 000000000..142d3b8f4 --- /dev/null +++ b/config/initializers/eis_custom_active_record.rb @@ -0,0 +1,7 @@ +# Log all user issues raised by active record +class ActiveRecord::Base + after_validation do |m| + Rails.logger.info "USER MSG: #{Time.now.to_s(:db)} ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? + true + end +end diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb index 846d46bd5..d9694cf99 100644 --- a/config/initializers/eis_custom_flash.rb +++ b/config/initializers/eis_custom_flash.rb @@ -1,3 +1,4 @@ +# Log all flash messages module ActionDispatch class Flash def call(env) diff --git a/config/unicorn.rb b/config/unicorn.rb index 350bc5ed1..0e6d8d383 100644 --- a/config/unicorn.rb +++ b/config/unicorn.rb @@ -1,7 +1,6 @@ worker_processes 2 # after_fork do |server, worker| - # binding.pry # ActiveRecord::Base.establish_connection # Que.mode = :async From de557bf43e02702e5a1e2d3738f459f843860ddb Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 16:58:47 +0300 Subject: [PATCH 10/94] Update contact --- app/models/contact.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index e9c64d15d..7db3e5ea6 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -316,8 +316,6 @@ class Contact < ActiveRecord::Base end end - private - def manage_linked if domains.present? statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? From 79ac8db0eb5ddce0464870001411cf65d8c7e54c Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 17:04:17 +0300 Subject: [PATCH 11/94] Remove dublicate time string #2808 --- config/initializers/eis_custom_active_model.rb | 2 +- config/initializers/eis_custom_active_record.rb | 2 +- config/initializers/eis_custom_flash.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/initializers/eis_custom_active_model.rb b/config/initializers/eis_custom_active_model.rb index e5ea5b2b3..f41a42325 100644 --- a/config/initializers/eis_custom_active_model.rb +++ b/config/initializers/eis_custom_active_model.rb @@ -9,7 +9,7 @@ module ActiveModel end # CUSTOM logging - Rails.logger.info "USER MSG: #{Time.now.to_s(:db)} ACTIVEMODEL: #{@base.try(:class)} [#{attribute}] #{message}" if message.present? + Rails.logger.info "USER MSG: ACTIVEMODEL: #{@base.try(:class)} [#{attribute}] #{message}" if message.present? # END of CUSTOM logging self[attribute] << message diff --git a/config/initializers/eis_custom_active_record.rb b/config/initializers/eis_custom_active_record.rb index 142d3b8f4..546f5a4ae 100644 --- a/config/initializers/eis_custom_active_record.rb +++ b/config/initializers/eis_custom_active_record.rb @@ -1,7 +1,7 @@ # Log all user issues raised by active record class ActiveRecord::Base after_validation do |m| - Rails.logger.info "USER MSG: #{Time.now.to_s(:db)} ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? + Rails.logger.info "USER MSG: ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? true end end diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb index d9694cf99..ed5832e85 100644 --- a/config/initializers/eis_custom_flash.rb +++ b/config/initializers/eis_custom_flash.rb @@ -11,7 +11,7 @@ module ActionDispatch session["flash"] = flash_hash.to_session_value # EIS custom logging - Rails.logger.info "USER MSG: #{Time.now.to_s(:db)} FLASH: #{session['flash']['flashes'].inspect}" if session['flash'] + Rails.logger.info "USER MSG: FLASH: #{session['flash']['flashes'].inspect}" if session['flash'] # END OF EIS custom logging env[KEY] = flash_hash.dup From 9379563683c33822dec8fb4f31a40896eedf2192 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 23 Jul 2015 17:08:25 +0300 Subject: [PATCH 12/94] Fix most of the errors in domain tests #2752 --- spec/epp/domain_spec.rb | 74 ++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 23 deletions(-) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 985c6d134..b83d80071 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -474,16 +474,16 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == 'Attribute is invalid: unit' - response[:results][0][:result_code].should == '2306' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:result_code].should == '2001' xml = domain_create_xml({ period: { value: '1', attrs: { unit: 'bla' } } }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == 'Attribute is invalid: unit' - response[:results][0][:result_code].should == '2306' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:result_code].should == '2001' end it 'creates a domain with multiple dnskeys' do @@ -542,7 +542,6 @@ describe 'EPP Domain', epp: true do end it 'does not create a domain when dnskeys are invalid' do - xml = domain_create_xml({}, { _anonymus: [ { keyData: { @@ -573,6 +572,39 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(xml, validate_input: false) + response[:results][0][:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'." + response[:results][1][:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': '' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:secDNS-1.1}keyType'." + + xml = domain_create_xml({}, { + _anonymus: [ + { keyData: { + flags: { value: '250' }, + protocol: { value: '4' }, + alg: { value: '9' }, + pubKey: { value: 'AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8' } + } + }, + { + keyData: { + flags: { value: '1' }, + protocol: { value: '3' }, + alg: { value: '10' }, + pubKey: { value: '700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f' } + } + }, + { + keyData: { + flags: { value: '256' }, + protocol: { value: '5' }, + alg: { value: '254' }, + pubKey: { value: 'AwEAAbuFiHS4jZL7ZQKvEPBmsbceNHTVYpEVMdxz2A6YCjlZTEoAH3qK' } + } + } + ] + }) + + response = epp_plain_request(xml, validate_input: false) + response[:results][0][:msg].should == 'Valid algorithms are: 3, 5, 6, 7, 8, 252, 253, 254, 255 [alg]' response[:results][0][:value].should == '9' @@ -589,10 +621,8 @@ describe 'EPP Domain', epp: true do response[:results][4][:msg].should == 'Valid flags are: 0, 256, 257 [flags]' response[:results][4][:value].should == '1' - response[:results][5][:msg].should == 'Public key is missing [public_key]' - - response[:results][6][:msg].should == 'Valid protocols are: 3 [protocol]' - response[:results][6][:value].should == '5' + response[:results][5][:msg].should == 'Valid protocols are: 3 [protocol]' + response[:results][5][:value].should == '5' end it 'does not create a domain with two identical dnskeys' do @@ -806,9 +836,8 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:msg].should == 'Mutually exclusive parameters: extension > create > keyData, '\ - 'extension > create > dsData' - response[:result_code].should == '2306' + response[:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}keyData': This element is not expected. Expected is ( {urn:ietf:params:xml:ns:secDNS-1.1}dsData )." + response[:result_code].should == '2001' end end @@ -1476,8 +1505,8 @@ describe 'EPP Domain', epp: true do it 'returns an error for incorrect op attribute' do response = epp_plain_request(domain_transfer_xml({}, 'bla'), validate_input: false) - response[:msg].should == 'Parameter value range error: op' - response[:result_code].should == '2004' + response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}transfer', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'approve', 'cancel', 'query', 'reject', 'request'}." + response[:result_code].should == '2001' end it 'creates new pw after successful transfer' do @@ -2214,9 +2243,8 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:result_code].should == '2303' - response[:results][0][:msg].should == 'Status was not found' - response[:results][0][:value].should == 'invalidStatus' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}status', attribute 's': [facet 'enumeration'] The value 'invalidStatus' is not an element of the set {'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', 'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', 'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', 'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', 'serverTransferProhibited', 'serverUpdateProhibited'}." + response[:results][0][:result_code].should == '2001' end ### RENEW ### @@ -2328,8 +2356,8 @@ describe 'EPP Domain', epp: true do ) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == 'Attribute is invalid: unit' - response[:results][0][:result_code].should == '2306' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:result_code].should == '2001' xml = @epp_xml.domain.renew( name: { value: domain.name }, @@ -2338,8 +2366,8 @@ describe 'EPP Domain', epp: true do ) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == 'Attribute is invalid: unit' - response[:results][0][:result_code].should == '2306' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:result_code].should == '2001' Setting.days_to_renew_domain_before_expire = 90 end @@ -2693,8 +2721,8 @@ describe 'EPP Domain', epp: true do xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'invalid' } }) response = epp_plain_request(xml, validate_input: false) - response[:msg].should == 'Attribute is invalid: hosts' - response[:result_code].should == '2306' + response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}name', attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the set {'all', 'del', 'none', 'sub'}." + response[:result_code].should == '2001' xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'sub' } }) response = epp_plain_request(xml) From 5da7019bd49900b69ca23640348398078fef9c83 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 17:44:52 +0300 Subject: [PATCH 13/94] TEMP --- app/models/contact.rb | 4 +-- app/models/domain.rb | 1 - app/models/epp/domain.rb | 2 +- .../initializers/eis_custom_active_model.rb | 18 ------------- .../initializers/eis_custom_active_record.rb | 7 ----- config/initializers/eis_custom_flash.rb | 27 ------------------- config/initializers/eis_custom_rack.rb | 14 ---------- 7 files changed, 3 insertions(+), 70 deletions(-) delete mode 100644 config/initializers/eis_custom_active_model.rb delete mode 100644 config/initializers/eis_custom_active_record.rb delete mode 100644 config/initializers/eis_custom_flash.rb delete mode 100644 config/initializers/eis_custom_rack.rb diff --git a/app/models/contact.rb b/app/models/contact.rb index 7db3e5ea6..b3d932bcc 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -311,8 +311,8 @@ class Contact < ActiveRecord::Base def status_notes_array=(notes) self.status_notes = {} notes ||= [] - statuses.each_with_index do |status,i| - self.status_notes[status] = notes[i] + statuses.each_with_index do |status, i| + status_notes[status] = notes[i] end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 70eedccc8..89dffb5b9 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -78,7 +78,6 @@ class Domain < ActiveRecord::Base end after_save :update_whois_record - after_create :update_reserved_domains def update_reserved_domains return unless in_reserved_list? diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 57cd1b5a3..b953e52ab 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -11,7 +11,7 @@ class Epp::Domain < Domain before_validation :validate_contacts def validate_contacts - return if contacts.map {|c| c.valid? }.all? + return if contacts.map(&:valid?).all? add_epp_error('2304', nil, nil, I18n.t(:object_status_prohibits_operation)) false end diff --git a/config/initializers/eis_custom_active_model.rb b/config/initializers/eis_custom_active_model.rb deleted file mode 100644 index f41a42325..000000000 --- a/config/initializers/eis_custom_active_model.rb +++ /dev/null @@ -1,18 +0,0 @@ -# Log all active model user errors -module ActiveModel - class Errors - def add(attribute, message = :invalid, options = {}) - message = normalize_message(attribute, message, options) - if exception = options[:strict] - exception = ActiveModel::StrictValidationFailed if exception == true - raise exception, full_message(attribute, message) - end - - # CUSTOM logging - Rails.logger.info "USER MSG: ACTIVEMODEL: #{@base.try(:class)} [#{attribute}] #{message}" if message.present? - # END of CUSTOM logging - - self[attribute] << message - end - end -end diff --git a/config/initializers/eis_custom_active_record.rb b/config/initializers/eis_custom_active_record.rb deleted file mode 100644 index 546f5a4ae..000000000 --- a/config/initializers/eis_custom_active_record.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Log all user issues raised by active record -class ActiveRecord::Base - after_validation do |m| - Rails.logger.info "USER MSG: ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? - true - end -end diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb deleted file mode 100644 index ed5832e85..000000000 --- a/config/initializers/eis_custom_flash.rb +++ /dev/null @@ -1,27 +0,0 @@ -# Log all flash messages -module ActionDispatch - class Flash - def call(env) - @app.call(env) - ensure - session = Request::Session.find(env) || {} - flash_hash = env[KEY] - - if flash_hash && (flash_hash.present? || session.key?('flash')) - session["flash"] = flash_hash.to_session_value - - # EIS custom logging - Rails.logger.info "USER MSG: FLASH: #{session['flash']['flashes'].inspect}" if session['flash'] - # END OF EIS custom logging - - env[KEY] = flash_hash.dup - end - - if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?) - session.key?('flash') && session['flash'].nil? - session.delete('flash') - end - end - end -end - diff --git a/config/initializers/eis_custom_rack.rb b/config/initializers/eis_custom_rack.rb deleted file mode 100644 index 52dbd8244..000000000 --- a/config/initializers/eis_custom_rack.rb +++ /dev/null @@ -1,14 +0,0 @@ -# EIS custom rack hack in order to enable test external interfaces EPP/REPP inside webserver network -# rubocop:disable Metrics/LineLength -module Rack - class Request - def trusted_proxy?(ip) - if ENV['eis_trusted_proxies'] - ENV['eis_trusted_proxies'].split(',').map(&:strip).include?(ip) - else - ip =~ /\A127\.0\.0\.1\Z|\A(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|\A::1\Z|\Afd[0-9a-f]{2}:.+|\Alocalhost\Z|\Aunix\Z|\Aunix:/i - end - end - end -end -# rubocop:enable Metrics/LineLength From 4294bf564c950129831a9ff514ed9659ba4376c3 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 23 Jul 2015 18:56:47 +0300 Subject: [PATCH 14/94] Fix contact tests #2752 --- spec/epp/contact_spec.rb | 95 ++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 58 deletions(-) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 98bb94bdf..95a73624f 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -59,33 +59,9 @@ describe 'EPP Contact', epp: true do it 'fails if request xml is missing' do response = epp_plain_request(@epp_xml.create, validate_input: false) - response[:results][0][:msg].should == - 'Required parameter missing: create > create > postalInfo > name [name]' - response[:results][1][:msg].should == - 'Required parameter missing: create > create > postalInfo > addr > street [street]' - response[:results][2][:msg].should == - 'Required parameter missing: create > create > postalInfo > addr > city [city]' - response[:results][3][:msg].should == - 'Required parameter missing: create > create > postalInfo > addr > pc [pc]' - response[:results][4][:msg].should == - 'Required parameter missing: create > create > postalInfo > addr > cc [cc]' - response[:results][5][:msg].should == - 'Required parameter missing: create > create > voice [voice]' - response[:results][6][:msg].should == - 'Required parameter missing: create > create > email [email]' - response[:results][7][:msg].should == - 'Required parameter missing: extension > extdata > ident [ident]' - response[:results][0][:result_code].should == '2003' - response[:results][1][:result_code].should == '2003' - response[:results][2][:result_code].should == '2003' - response[:results][3][:result_code].should == '2003' - response[:results][4][:result_code].should == '2003' - response[:results][5][:result_code].should == '2003' - response[:results][6][:result_code].should == '2003' - response[:results][7][:result_code].should == '2003' - - response[:results].count.should == 8 + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}create': Missing child element(s). Expected is one of ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id, {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}postalInfo )." + response[:results][0][:result_code].should == '2001' end it 'successfully creates a contact' do @@ -197,9 +173,8 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension, validate_input: false) - response[:msg].should == - 'Ident country code is not valid, should be in ISO_3166-1 alpha 2 format [ident]' - response[:result_code].should == '2005' + response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'." + response[:result_code].should == '2001' end it 'should return country missing' do @@ -210,9 +185,8 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension, validate_input: false) - response[:msg].should == - 'Required ident attribute missing: cc' - response[:result_code].should == '2003' + response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd}ident': The attribute 'cc' is required but missing." + response[:result_code].should == '2001' end it 'should return country missing' do @@ -222,9 +196,8 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension, validate_input: false) - response[:msg].should == - 'Required ident attribute missing: type' - response[:result_code].should == '2003' + response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd}ident': The attribute 'type' is required but missing." + response[:result_code].should == '2001' end it 'should add registrar prefix for code when legacy prefix present' do @@ -336,14 +309,7 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.update, validate_input: false) - - response[:results][0][:msg].should == - 'Required parameter missing: add, rem or chg' - response[:results][0][:result_code].should == '2003' - response[:results][1][:msg].should == - 'Required parameter missing: update > update > id [id]' - response[:results][1][:result_code].should == '2003' - response[:results].count.should == 2 + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}update': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." end it 'returns error if obj doesnt exist' do @@ -432,8 +398,8 @@ describe 'EPP Contact', epp: true do }, {}, { validate_input: false } ) - response[:msg].should == 'Object does not exist' - response[:result_code].should == '2303' + response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id': This element is not expected." + response[:result_code].should == '2001' @contact.reload.code.should == 'FIRST0:SH8013' end @@ -492,16 +458,16 @@ describe 'EPP Contact', epp: true do id: { value: 'FIRST0:SH8013' }, add: [{ _anonymus: [ - { status: { value: 'Payment overdue.', attrs: { s: 'clientHold', lang: 'en' } } }, + { status: { value: 'Payment overdue.', attrs: { s: 'clientDeleteProhibited', lang: 'en' } } }, { status: { value: '', attrs: { s: 'clientUpdateProhibited' } } } ] }] }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:result_code].should == '2306' response[:results][0][:msg].should == "Parameter value policy error. Client-side object status "\ "management not supported: status [status]" + response[:results][0][:result_code].should == '2306' Setting.client_status_editing_enabled = true end @@ -543,6 +509,7 @@ describe 'EPP Contact', epp: true do end it 'should honor chg value over add value when both changes same attribute' do + pending 'It should not be possible to add voice (in add)' xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, add: { @@ -585,8 +552,10 @@ describe 'EPP Contact', epp: true do # TODO: Update request rem block must be analyzed it 'should not allow to remove required attribute' do + pending 'It should not be possible to remove or add voice (in add and rem)' contact = Contact.find_by(code: 'FIRST0:SH8013') phone = contact.phone + # TODO: Refactor authInfo under chg block xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, @@ -604,6 +573,8 @@ describe 'EPP Contact', epp: true do end it 'should honor add over rem' do + pending 'It should not be possible to remove or add voice (in add and rem)' + # TODO: Refactor authInfo under chg block xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, @@ -626,6 +597,8 @@ describe 'EPP Contact', epp: true do end it 'should honor chg over rem' do + pending 'It should not be possible to remove or add voice (in add and rem)' + # TODO: Refactor authInfo under chg block xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, @@ -648,6 +621,8 @@ describe 'EPP Contact', epp: true do end it 'should honor chg over rem and add' do + pending 'It should not be possible to remove or add voice (in add and rem)' + # TODO: Refactor authInfo under chg block xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, @@ -673,6 +648,7 @@ describe 'EPP Contact', epp: true do end it 'should not remove password' do + pending 'There should be no possibility to remove pw' xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, @@ -690,11 +666,14 @@ describe 'EPP Contact', epp: true do end it 'should return general policy error when removing org' do + pending 'Test says it should throw error when removing org, it does not do it when removing it with chg block' xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, - authInfo: { pw: { value: 'password' } }, - rem: { - postalInfo: { org: { value: 'not important' } } + chg: { + postalInfo: { + org: { value: '' } + }, + authInfo: { pw: { value: 'password' } } } }) @@ -705,6 +684,8 @@ describe 'EPP Contact', epp: true do end it 'should return error when removing street' do + pending 'Test says it tests removing street, but actually street is not removed' + # TODO: Refactor authInfo under chg block xml = @epp_xml.update({ id: { value: 'FIRST0:SH8013' }, authInfo: { pw: { value: 'password' } }, @@ -738,9 +719,8 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.delete, validate_input: false) - response[:results][0][:msg].should == - 'Required parameter missing: delete > delete > id [id]' - response[:results][0][:result_code].should == '2003' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}delete': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -834,8 +814,8 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.check, validate_input: false) - response[:results][0][:msg].should == 'Required parameter missing: check > check > id [id]' - response[:results][0][:result_code].should == '2003' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}check': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -888,9 +868,8 @@ describe 'EPP Contact', epp: true do it 'fails if request invalid' do response = epp_plain_request(@epp_xml.info, validate_input: false) - response[:results][0][:msg].should == - 'Required parameter missing: info > info > id [id]' - response[:results][0][:result_code].should == '2003' + response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}info': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end From 18c911e09737adc637a688615bd61181ab284b83 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 20:02:01 +0300 Subject: [PATCH 15/94] Optimize contact linked status update #2477 --- app/models/contact.rb | 38 +++++++++++++++++++++++-------------- app/models/epp/domain.rb | 18 ++++++++++++++---- config/environments/test.rb | 11 ++++++++++- 3 files changed, 48 insertions(+), 19 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index b3d932bcc..44af31d65 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -260,21 +260,11 @@ class Contact < ActiveRecord::Base Country.new(country_code) end - # Find a way to use self.domains with contact - def domains_owned - Domain.where(registrant_id: id) - end - - def relations_with_domain? - return true if domain_contacts.present? || domains_owned.present? - false - end - # TODO: refactor, it should not allow to destroy with normal destroy, # no need separate method # should use only in transaction def destroy_and_clean - if relations_with_domain? + if domains_present? errors.add(:domains, :exist) return false end @@ -316,14 +306,34 @@ class Contact < ActiveRecord::Base end end + # optimization under children loop, + # otherwise bullet will not be happy + def domains_present? + return @domains_present if @domains_present + domain_contacts.present? || registrant_domains.present? + end + + # for overwrite when doing children loop + def domains_present=(boolean) + @domains_present = boolean + end + def manage_linked - if domains.present? - statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? + if domains_present? + set_linked else - statuses.delete_if { |s| s == LINKED } + unset_linked end end + def set_linked + statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? + end + + def unset_linked + statuses.delete_if { |s| s == LINKED } + end + # rubocop:disable Metrics/CyclomaticComplexity def manage_ok return unset_ok unless valid? diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index b953e52ab..73c015904 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -16,10 +16,20 @@ class Epp::Domain < Domain false end - before_save :update_contact_status - def update_contact_status - contacts.each do |c| - next if c.linked? + before_save :link_contacts + def link_contacts + # Based on bullet report + unlinked_contacts = contacts.select { |c| !c.linked? } # speed up a bit + unlinked_contacts.each do |uc| + uc.domains_present = true # no need to fetch domains again + uc.save(validate: false) + end + end + + after_destroy :unlink_contacts + def unlink_contacts + contacts.each do |c| + c.domains_present = false c.save(validate: false) end end diff --git a/config/environments/test.rb b/config/environments/test.rb index ee1ae12b7..80f7b9064 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -44,18 +44,27 @@ Rails.application.configure do # The available log levels are: :debug, :info, :warn, :error, :fatal, and :unknown, # corresponding to the log level numbers from 0 up to 5 respectively - config.log_level = :info + config.log_level = :debug # for finding database optimization config.after_initialize do Bullet.enable = true Bullet.bullet_logger = true + Bullet.rails_logger = true Bullet.raise = true # raise an error if n+1 query occurs Bullet.unused_eager_loading_enable = false # Currenty hard to fix, it is triggered by Epp::Domain.new_from_epp for create request Bullet.add_whitelist type: :n_plus_one_query, class_name: 'Contact', association: :registrar + + # when domain updates, then we need to update all contact linked status, + # somehow it triggers bullet counter cache for versions, + # there was no output indicating each version where fetched or counted + # thus needs more investigation + Bullet.add_whitelist type: :counter_cache, class_name: 'Contact', association: :versions end + + # config.logger = Logger.new(STDOUT) end # In this mode, any jobs you queue will be run in the same thread, synchronously From 4c52e3b0b4ae7c556ca7609823d2e307528f0028 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 12:52:59 +0300 Subject: [PATCH 16/94] Skip some validations #2752 --- app/controllers/epp_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 931878979..5ddfe104a 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -9,7 +9,7 @@ class EppController < ApplicationController before_action :validate_against_schema def validate_against_schema - return if ['hello', 'error'].include?(params[:action]) + return if ['hello', 'error', 'keyrelay', 'not_found'].include?(params[:action]) params[:schema] = 'epp-1.0.xsd' unless params[:schema] xsd = Nokogiri::XML::Schema(File.read("lib/schemas/#{params[:schema]}")) xsd.validate(params[:nokogiri_frame]).each do |error| From e463fe4d70b468ce25536c36101b4b9a0ccbc4f9 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 13:13:27 +0300 Subject: [PATCH 17/94] Fix contact create in registrar #2752 --- app/models/depp/contact.rb | 49 +++++++++++++++++++------------------- spec/epp/poll_spec.rb | 4 ++-- spec/epp/session_spec.rb | 4 ++-- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/app/models/depp/contact.rb b/app/models/depp/contact.rb index 9af836d45..310f2eade 100644 --- a/app/models/depp/contact.rb +++ b/app/models/depp/contact.rb @@ -4,7 +4,7 @@ module Depp include DisableHtml5Validation attr_accessor :id, :name, :email, :phone, :org_name, - :ident, :ident_type, :ident_country_code, + :ident, :ident_type, :ident_country_code, :street, :city, :zip, :state, :country_code, :password, :legal_document, :statuses, :code @@ -68,7 +68,7 @@ module Depp zip: res.css('postalInfo addr pc').text, state: res.css('postalInfo addr sp').text, country_code: res.css('postalInfo addr cc').text, - + # authInfo password: res.css('authInfo pw').text, @@ -145,25 +145,26 @@ module Depp end def save - create_xml = Depp::Contact.epp_xml.create( - { - id: { value: code }, - email: { value: email }, - voice: { value: phone }, - postalInfo: { - name: { value: name }, - org: { value: org_name }, - addr: { - street: { value: street }, - city: { value: city }, - pc: { value: zip }, - sp: { value: state }, - cc: { value: country_code } - } + hash = { + id: { value: code }, + postalInfo: { + name: { value: name }, + org: { value: org_name }, + addr: { + street: { value: street }, + city: { value: city }, + sp: { value: state }, + pc: { value: zip }, + cc: { value: country_code } } - }, - extension_xml - ) + }, + voice: { value: phone }, + email: { value: email } + } + + hash[:id] = nil if code.blank? + create_xml = Depp::Contact.epp_xml.create(hash, extension_xml) + data = Depp::Contact.user.request(create_xml) self.id = data.css('id').text handle_errors(data) @@ -250,7 +251,7 @@ module Depp return {} if legal_document.blank? type = legal_document.original_filename.split('.').last.downcase - { + { _anonymus: [ legalDocument: { value: Base64.encode64(legal_document.read), attrs: { type: type } } ] @@ -274,7 +275,7 @@ module Depp ident_type == 'priv' end - def persisted? + def persisted? id.present? end @@ -282,13 +283,13 @@ module Depp data.css('result').each do |x| success_codes = %(1000, 1300, 1301) next if success_codes.include?(x['code']) - + message = "#{x.css('msg').text} #{x.css('value').text}" attr = message.split('[').last.strip.sub(']', '') if message.include?('[') attr = :base if attr.nil? attr = 'phone' if attr == 'voice' attr = 'zip' if attr == 'pc' - errors.add(attr, message) + errors.add(attr, message) end errors.blank? end diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index 12f6c5cee..b26121aca 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -87,8 +87,8 @@ describe 'EPP Poll', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:msg].should == 'Parameter value range error: op' - response[:result_code].should == '2004' + response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}poll', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'ack', 'req'}." + response[:result_code].should == '2001' end it 'dequeues multiple messages' do diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 63b34e52b..44d59e25b 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -142,8 +142,8 @@ describe 'EPP Session', epp: true do newPW: { value: '' } ), validate_input: false) - response[:msg].should == 'Password is missing [password]' - response[:result_code].should == '2306' + response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}newPW': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '6'." + response[:result_code].should == '2001' @api_user.reload @api_user.password.should == 'ghyt9e4fu' From cd9851df2f9caabb16a0541e5b381228e45d9ece Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 13:34:51 +0300 Subject: [PATCH 18/94] No need to validate input in tests anymore #2752 --- spec/features/registrar/contact_spec.rb | 8 +++++++- spec/support/epp.rb | 14 +++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/spec/features/registrar/contact_spec.rb b/spec/features/registrar/contact_spec.rb index 150103559..bf0ebcda4 100644 --- a/spec/features/registrar/contact_spec.rb +++ b/spec/features/registrar/contact_spec.rb @@ -45,7 +45,13 @@ feature 'Contact', type: :feature do visit '/registrar/contacts/new' current_path.should == '/registrar/contacts/new' - fill_in 'depp_contact_ident', with: 'bic-ident' + fill_in 'depp_contact_ident', with: '' + fill_in 'depp_contact_name', with: 'Business Name Ltd' + fill_in 'depp_contact_email', with: 'example@example.com' + fill_in 'depp_contact_street', with: 'Example street 12' + fill_in 'depp_contact_city', with: 'Example City' + fill_in 'depp_contact_zip', with: '123456' + fill_in 'depp_contact_phone', with: '+372.12345678' click_button 'Create' current_path.should == '/registrar/contacts' diff --git a/spec/support/epp.rb b/spec/support/epp.rb index 698284735..8ec87c576 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -67,15 +67,15 @@ module Epp def epp_plain_request(data, *args) options = args.extract_options! - validate_input = options[:validate_input] != false # true by default + # validate_input = options[:validate_input] != false # true by default validate_output = options[:validate_output] != false # true by default - if validate_input && @xsd - xml = Nokogiri::XML(data) - @xsd.validate(xml).each do |error| - fail Exception.new, error.to_s - end - end + # if validate_input && @xsd + # xml = Nokogiri::XML(data) + # @xsd.validate(xml).each do |error| + # fail Exception.new, error.to_s + # end + # end res = parse_response(server.send_request(data)) if res From 5e75d0cba34449d31dcde6d0494c70cc42dc9696 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 14:25:11 +0300 Subject: [PATCH 19/94] Fix registrar interface #2752 --- app/models/depp/contact.rb | 12 ++++++------ app/models/depp/domain.rb | 40 +++++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/app/models/depp/contact.rb b/app/models/depp/contact.rb index 310f2eade..ceca67131 100644 --- a/app/models/depp/contact.rb +++ b/app/models/depp/contact.rb @@ -192,23 +192,23 @@ module Depp { id: { value: id }, chg: { - voice: { value: phone }, - email: { value: email }, postalInfo: { name: { value: name }, org: { value: org_name }, addr: { street: { value: street }, city: { value: city }, - pc: { value: zip }, sp: { value: state }, + pc: { value: zip }, cc: { value: country_code } } + }, + voice: { value: phone }, + email: { value: email }, + authInfo: { + pw: { value: password } } }, - authInfo: { - pw: { value: password } - } }, extension_xml ) diff --git a/app/models/depp/domain.rb b/app/models/depp/domain.rb index fa252819e..7b366875a 100644 --- a/app/models/depp/domain.rb +++ b/app/models/depp/domain.rb @@ -36,15 +36,17 @@ module Depp end def create(domain_params) + dns_hash = {} + keys = Domain.create_dnskeys_hash(domain_params) + dns_hash[:_anonymus] = keys if keys.any? + xml = epp_xml.create({ name: { value: domain_params[:name] }, - registrant: { value: domain_params[:registrant] }, period: { value: domain_params[:period].to_s[0], attrs: { unit: domain_params[:period].to_s[1] } }, ns: Domain.create_nameservers_hash(domain_params), + registrant: { value: domain_params[:registrant] }, _anonymus: Domain.create_contacts_hash(domain_params) - }, { - _anonymus: Domain.create_dnskeys_hash(domain_params) - }, Domain.construct_custom_params_hash(domain_params)) + }, dns_hash, Domain.construct_custom_params_hash(domain_params)) current_user.request(xml) end @@ -205,6 +207,16 @@ module Depp contacts = array_difference(create_contacts_hash(old_domain_params), create_contacts_hash(domain_params)) rem_anon = contacts + add_arr = [] + add_ns = create_nameservers_hash(domain_params) - create_nameservers_hash(old_domain_params) + add_arr << { ns: add_ns } if add_ns.any? + add_arr << { _anonymus: add_anon } if add_anon.any? + + rem_arr = [] + rem_ns = create_nameservers_hash(old_domain_params) - create_nameservers_hash(domain_params) + rem_arr << { ns: rem_ns } if rem_ns.any? + rem_arr << { _anonymus: rem_anon } if rem_anon.any? + if domain_params[:registrant] != old_domain_params[:registrant] chg = [{ registrant: { value: domain_params[:registrant] } }] end @@ -212,22 +224,18 @@ module Depp { name: { value: domain_params[:name] }, chg: chg, - add: [ - { ns: create_nameservers_hash(domain_params) - create_nameservers_hash(old_domain_params) }, - { _anonymus: add_anon } - ], - rem: [ - { ns: create_nameservers_hash(old_domain_params) - create_nameservers_hash(domain_params) }, - { _anonymus: rem_anon } - ] + add: add_arr, + rem: rem_arr } end def construct_ext_edit_hash(domain_params, old_domain_params) - { - add: create_dnskeys_hash(domain_params) - create_dnskeys_hash(old_domain_params), - rem: create_dnskeys_hash(old_domain_params) - create_dnskeys_hash(domain_params) - } + rem_keys = create_dnskeys_hash(old_domain_params) - create_dnskeys_hash(domain_params) + add_keys = create_dnskeys_hash(domain_params) - create_dnskeys_hash(old_domain_params) + hash = {} + hash[:rem] = rem_keys if rem_keys.any? + hash[:add] = add_keys if add_keys.any? + hash end def create_nameservers_hash(domain_params) From db33638f0d5ea89bff2d19263a916dcfdb301bf4 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 14:51:54 +0300 Subject: [PATCH 20/94] Add pw length validator #2752 --- app/models/api_user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/api_user.rb b/app/models/api_user.rb index 3d18ea181..51f4d54b9 100644 --- a/app/models/api_user.rb +++ b/app/models/api_user.rb @@ -3,7 +3,7 @@ require 'open3' class ApiUser < User include EppErrors - def epp_code_map + def epp_code_map { '2306' => [ # Parameter policy error [:password, :blank] @@ -16,6 +16,7 @@ class ApiUser < User has_many :certificates validates :username, :password, :registrar, :roles, presence: true + validates :password, length: { minimum: 6 } validates :username, uniqueness: true # TODO: probably cache, because it's requested on every EPP From 626fa6d25dacd4e7b5501f92c2eae13edddb128b Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 16:05:43 +0300 Subject: [PATCH 21/94] Fix api user test #2752 --- spec/models/api_user_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/models/api_user_spec.rb b/spec/models/api_user_spec.rb index 62dd07364..8e46d0c6e 100644 --- a/spec/models/api_user_spec.rb +++ b/spec/models/api_user_spec.rb @@ -12,6 +12,7 @@ describe ApiUser do @api_user.valid? @api_user.errors.full_messages.should match_array([ "Password Password is missing", + "Password is too short (minimum is 6 characters)", "Registrar Registrar is missing", "Username Username is missing", "Roles is missing" From c38680a3b11b7f54379f2e2a8c3adf7b243d50c6 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 16:38:14 +0300 Subject: [PATCH 22/94] Validate not_found too against schema #2752 --- app/controllers/epp_controller.rb | 2 +- config/routes.rb | 2 +- lib/epp_constraint.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 5ddfe104a..a99d739db 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -9,7 +9,7 @@ class EppController < ApplicationController before_action :validate_against_schema def validate_against_schema - return if ['hello', 'error', 'keyrelay', 'not_found'].include?(params[:action]) + return if ['hello', 'error', 'keyrelay'].include?(params[:action]) params[:schema] = 'epp-1.0.xsd' unless params[:schema] xsd = Nokogiri::XML::Schema(File.read("lib/schemas/#{params[:schema]}")) xsd.validate(params[:nokogiri_frame]).each do |error| diff --git a/config/routes.rb b/config/routes.rb index 4ec266d9a..925947ea9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,7 +10,7 @@ Rails.application.routes.draw do post 'command/poll', to: 'polls#poll', constraints: EppConstraint.new(:poll) post 'command/keyrelay', to: 'keyrelays#keyrelay', constraints: EppConstraint.new(:keyrelay) - post 'command/:command', to: 'errors#not_found' # fallback route + post 'command/:command', to: 'errors#not_found', constraints: EppConstraint.new(:not_found) # fallback route get 'error/:command', to: 'errors#error' end diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb index b7e151a62..9c60edbc3 100644 --- a/lib/epp_constraint.rb +++ b/lib/epp_constraint.rb @@ -13,7 +13,7 @@ class EppConstraint request.params[:nokogiri_frame] ||= Nokogiri::XML(request.params[:raw_frame]) request.params[:parsed_frame] ||= request.params[:nokogiri_frame].dup.remove_namespaces! - unless [:keyrelay, :poll, :session].include?(@type) + unless [:keyrelay, :poll, :session, :not_found].include?(@type) element = "//#{@type}:#{request.params[:action]}" return false if request.params[:nokogiri_frame].xpath("#{element}", OBJECT_TYPES[@type]).none? # TODO: Support multiple schemas From 1d82fb9052e33bc574d562cec7bde9c0c4bd27c9 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 17:10:24 +0300 Subject: [PATCH 23/94] Cleanup #2752 --- app/controllers/epp_controller.rb | 11 ++++++++--- config/initializers/load_schemas.rb | 3 +++ lib/epp_constraint.rb | 3 +-- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 config/initializers/load_schemas.rb diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index a99d739db..f719e68b0 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -10,9 +10,7 @@ class EppController < ApplicationController before_action :validate_against_schema def validate_against_schema return if ['hello', 'error', 'keyrelay'].include?(params[:action]) - params[:schema] = 'epp-1.0.xsd' unless params[:schema] - xsd = Nokogiri::XML::Schema(File.read("lib/schemas/#{params[:schema]}")) - xsd.validate(params[:nokogiri_frame]).each do |error| + schema.validate(params[:nokogiri_frame]).each do |error| epp_errors << { code: 2001, msg: error @@ -73,6 +71,13 @@ class EppController < ApplicationController render_epp_response '/epp/error' end + def schema + # TODO: Support multiple schemas + return DOMAIN_SCHEMA if params[:epp_object_type] == :domain + return CONTACT_SCHEMA if params[:epp_object_type] == :contact + EPP_SCHEMA + end + def generate_svtrid # rubocop: disable Style/VariableName @svTRID = "ccReg-#{format('%010d', rand(10**10))}" diff --git a/config/initializers/load_schemas.rb b/config/initializers/load_schemas.rb new file mode 100644 index 000000000..617022179 --- /dev/null +++ b/config/initializers/load_schemas.rb @@ -0,0 +1,3 @@ +EPP_SCHEMA = Nokogiri::XML::Schema(File.read("lib/schemas/epp-1.0.xsd")) +DOMAIN_SCHEMA = Nokogiri::XML::Schema(File.read("lib/schemas/domain-eis-1.0.xsd")) +CONTACT_SCHEMA = Nokogiri::XML::Schema(File.read("lib/schemas/contact-eis-1.0.xsd")) diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb index 9c60edbc3..10bc6b643 100644 --- a/lib/epp_constraint.rb +++ b/lib/epp_constraint.rb @@ -10,14 +10,13 @@ class EppConstraint # creates parsed_frame, detects epp request object def matches?(request) + # TODO: Maybe move this to controller to keep params clean request.params[:nokogiri_frame] ||= Nokogiri::XML(request.params[:raw_frame]) request.params[:parsed_frame] ||= request.params[:nokogiri_frame].dup.remove_namespaces! unless [:keyrelay, :poll, :session, :not_found].include?(@type) element = "//#{@type}:#{request.params[:action]}" return false if request.params[:nokogiri_frame].xpath("#{element}", OBJECT_TYPES[@type]).none? - # TODO: Support multiple schemas - request.params[:schema] = OBJECT_TYPES[@type][@type].split('/').last end request.params[:epp_object_type] = @type From b6cb9e892a7557fdc068bed8b5a25ca51cc7306d Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 17:48:14 +0300 Subject: [PATCH 24/94] Replace namespaces #2752 --- Gemfile | 10 +- Gemfile.lock | 4 +- app/views/epp/contacts/check.xml.builder | 2 +- app/views/epp/contacts/create.xml.builder | 2 +- app/views/epp/contacts/info.xml.builder | 4 +- app/views/epp/contacts/update.xml.builder | 2 +- app/views/epp/domains/check.xml.builder | 2 +- app/views/epp/domains/create.xml.builder | 2 +- app/views/epp/domains/info.xml.builder | 2 +- .../domains/partials/_transfer.xml.builder | 2 +- app/views/epp/domains/renew.xml.builder | 2 +- app/views/epp/poll/poll_keyrelay.xml.builder | 2 +- app/views/epp/sessions/greeting.xml.builder | 6 +- .../epp_requests/contact/check.xml | 2 +- .../epp_requests/contact/check_multiple.xml | 2 +- .../epp_requests/contact/create.xml | 4 +- .../epp_requests/contact/delete.xml | 4 +- .../epp_requests/contact/info.xml | 2 +- .../epp_requests/contact/update_chg.xml | 4 +- .../epp_requests/domain/check.xml | 2 +- .../epp_requests/domain/create.xml | 4 +- .../epp_requests/domain/delete.xml | 4 +- .../xml_consoles/epp_requests/domain/info.xml | 2 +- .../epp_requests/domain/renew.xml | 2 +- .../epp_requests/domain/transfer.xml | 4 +- .../epp_requests/domain/update.xml | 4 +- .../epp_requests/keyrelay/keyrelay.xml | 4 +- doc/epp-examples.md | 1044 ++++++++--------- doc/epp/contact.md | 16 +- doc/epp/domain.md | 24 +- doc/schemas/contact-eis-1.0.xsd | 6 +- doc/schemas/domain-eis-1.0.xsd | 6 +- doc/schemas/eis-1.0.xsd | 4 +- lib/epp_constraint.rb | 4 +- lib/schemas/contact-eis-1.0.xsd | 6 +- lib/schemas/domain-eis-1.0.xsd | 6 +- lib/schemas/eis-1.0.xsd | 4 +- spec/epp/contact_spec.rb | 22 +- spec/epp/domain_spec.rb | 12 +- spec/epp/epp_helper_spec.rb | 4 +- .../contacts/create_with_two_addresses.xml | 2 +- spec/epp/requests/contacts/delete.xml | 2 +- .../requests/contacts/delete_missing_attr.xml | 2 +- spec/epp/requests/contacts/info.xml | 2 +- .../requests/contacts/info_missing_attr.xml | 2 +- spec/epp/requests/contacts/update.xml | 2 +- .../requests/contacts/update_missing_attr.xml | 2 +- .../requests/contacts/update_with_errors.xml | 2 +- 48 files changed, 630 insertions(+), 630 deletions(-) diff --git a/Gemfile b/Gemfile index 921074895..2f987abd4 100644 --- a/Gemfile +++ b/Gemfile @@ -19,8 +19,8 @@ gem 'figaro', '~> 1.1.1' gem 'pg', '~> 0.18.0' gem 'ransack', '~> 1.5.1' # for searching # with polymorphic fix -gem 'paper_trail', - github: 'airblade/paper_trail', +gem 'paper_trail', + github: 'airblade/paper_trail', ref: 'a453811226ec4ea59753ba6b827e390ced2fc140' gem 'rails-settings-cached', '~> 0.4.1' # for settings @@ -82,7 +82,7 @@ gem 'digidoc_client', '~> 0.2.1' # epp gem 'epp', '~> 1.4.2', github: 'internetee/epp' -gem 'epp-xml', '~> 1.0.3' # EIS EPP XMLs +gem 'epp-xml', '~> 1.0.4' # EIS EPP XMLs gem 'uuidtools', '~> 2.1.4' # For unique IDs (used by the epp gem) # que @@ -144,13 +144,13 @@ group :development, :test do gem 'simplecov', '~> 0.10.0', require: false gem 'rubycritic', '~> 1.4.0' gem 'bullet', '~> 4.14.4' # for finding database optimizations - gem 'bundler-audit', + gem 'bundler-audit', github: 'rubysec/bundler-audit', ref: 'f89ef7fae1090bbad825ea76812d56d72b417055' # for finding future vulnerable gems gem 'brakeman', '~> 3.0.5', require: false # for security audit' # tmp, otherwise conflics with breakman # gem 'html2haml', github: 'haml/html2haml', ref: '6984f50bdbbd6291535027726a5697f28778ee8d' - gem 'html2haml', '~> 2.0.0' + gem 'html2haml', '~> 2.0.0' gem 'sdoc', '~> 0.4.0' # bundle exec rake doc:rails generates the API under doc/api. gem 'railroady', '~> 1.3.0' # to generate database diagrams diff --git a/Gemfile.lock b/Gemfile.lock index b6ac5c808..ee1c0ad36 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -177,7 +177,7 @@ GEM nokogiri (>= 1.4.0) savon (>= 2.4.0) docile (1.1.5) - epp-xml (1.0.3) + epp-xml (1.0.4) activesupport (~> 4.1) builder (~> 3.2) equalizer (0.0.11) @@ -564,7 +564,7 @@ DEPENDENCIES devise (~> 3.5.1) digidoc_client (~> 0.2.1) epp (~> 1.4.2)! - epp-xml (~> 1.0.3) + epp-xml (~> 1.0.4) fabrication (~> 2.13.2) faker (~> 1.4.3) figaro (~> 1.1.1) diff --git a/app/views/epp/contacts/check.xml.builder b/app/views/epp/contacts/check.xml.builder index f4dcdea82..4d342fad4 100644 --- a/app/views/epp/contacts/check.xml.builder +++ b/app/views/epp/contacts/check.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('contact:chkData', 'xmlns:contact' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd') do + xml.tag!('contact:chkData', 'xmlns:contact' => 'https://epp.tld.ee/schema/contact-eis-1.0.xsd') do @results.each do |result| xml.tag!('contact:cd') do xml.tag! "contact:id", result[:code], avail: result[:avail] diff --git a/app/views/epp/contacts/create.xml.builder b/app/views/epp/contacts/create.xml.builder index 1a4da8473..2d2c40097 100644 --- a/app/views/epp/contacts/create.xml.builder +++ b/app/views/epp/contacts/create.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('contact:creData', 'xmlns:contact' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd') do + xml.tag!('contact:creData', 'xmlns:contact' => 'https://epp.tld.ee/schema/contact-eis-1.0.xsd') do xml.tag!('contact:id', @contact.code) xml.tag!('contact:crDate', @contact.created_at.try(:iso8601)) end diff --git a/app/views/epp/contacts/info.xml.builder b/app/views/epp/contacts/info.xml.builder index da8edbdf7..2f0895b93 100644 --- a/app/views/epp/contacts/info.xml.builder +++ b/app/views/epp/contacts/info.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('contact:infData', 'xmlns:contact' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd') do + xml.tag!('contact:infData', 'xmlns:contact' => 'https://epp.tld.ee/schema/contact-eis-1.0.xsd') do xml.tag!('contact:id', @contact.code) xml.tag!('contact:roid', @contact.roid) @@ -55,7 +55,7 @@ xml.epp_head do end if can? :view_full_info, @contact, @password xml.tag!('extension') do - xml.tag!('eis:extdata', 'xmlns:eis' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd') do + xml.tag!('eis:extdata', 'xmlns:eis' => 'https://epp.tld.ee/schema/eis-1.0.xsd') do xml.tag!('eis:ident', @contact.ident, type: @contact.ident_type, cc: @contact.ident_country_code) end diff --git a/app/views/epp/contacts/update.xml.builder b/app/views/epp/contacts/update.xml.builder index 1a4da8473..2d2c40097 100644 --- a/app/views/epp/contacts/update.xml.builder +++ b/app/views/epp/contacts/update.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('contact:creData', 'xmlns:contact' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd') do + xml.tag!('contact:creData', 'xmlns:contact' => 'https://epp.tld.ee/schema/contact-eis-1.0.xsd') do xml.tag!('contact:id', @contact.code) xml.tag!('contact:crDate', @contact.created_at.try(:iso8601)) end diff --git a/app/views/epp/domains/check.xml.builder b/app/views/epp/domains/check.xml.builder index 8441f4118..903cee769 100644 --- a/app/views/epp/domains/check.xml.builder +++ b/app/views/epp/domains/check.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('domain:chkData', 'xmlns:domain' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd') do + xml.tag!('domain:chkData', 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd') do @domains.each do |x| xml.tag!('domain:cd') do xml.tag!('domain:name', x[:name], 'avail' => x[:avail]) diff --git a/app/views/epp/domains/create.xml.builder b/app/views/epp/domains/create.xml.builder index dd22fb0b8..213a2aa8f 100644 --- a/app/views/epp/domains/create.xml.builder +++ b/app/views/epp/domains/create.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('domain:creData', 'xmlns:domain' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd') do + xml.tag!('domain:creData', 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd') do xml.tag!('domain:name', @domain.name) xml.tag!('domain:crDate', @domain.created_at.try(:iso8601)) xml.tag!('domain:exDate', @domain.valid_to.try(:iso8601)) diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder index ebaf613d5..c4827f29f 100644 --- a/app/views/epp/domains/info.xml.builder +++ b/app/views/epp/domains/info.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('domain:infData', 'xmlns:domain' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd') do + xml.tag!('domain:infData', 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd') do xml.tag!('domain:name', @domain.name) xml.tag!('domain:roid', @domain.roid) @domain.statuses.each do |s| diff --git a/app/views/epp/domains/partials/_transfer.xml.builder b/app/views/epp/domains/partials/_transfer.xml.builder index a98cf231e..13daf8014 100644 --- a/app/views/epp/domains/partials/_transfer.xml.builder +++ b/app/views/epp/domains/partials/_transfer.xml.builder @@ -1,4 +1,4 @@ -builder.tag!('domain:trnData', 'xmlns:domain' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd') do +builder.tag!('domain:trnData', 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd') do builder.tag!('domain:name', dt.domain_name) builder.tag!('domain:trStatus', dt.status) builder.tag!('domain:reID', dt.transfer_to.code) diff --git a/app/views/epp/domains/renew.xml.builder b/app/views/epp/domains/renew.xml.builder index b970b322e..5d03c7128 100644 --- a/app/views/epp/domains/renew.xml.builder +++ b/app/views/epp/domains/renew.xml.builder @@ -5,7 +5,7 @@ xml.epp_head do end xml.resData do - xml.tag!('domain:renData', 'xmlns:domain' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd') do + xml.tag!('domain:renData', 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd') do xml.tag!('domain:name', @domain[:name]) xml.tag!('domain:exDate', @domain.valid_to.try(:iso8601)) end diff --git a/app/views/epp/poll/poll_keyrelay.xml.builder b/app/views/epp/poll/poll_keyrelay.xml.builder index 9e245bd3e..a2fed7915 100644 --- a/app/views/epp/poll/poll_keyrelay.xml.builder +++ b/app/views/epp/poll/poll_keyrelay.xml.builder @@ -2,7 +2,7 @@ xml.instruct!(:xml, standalone: 'no') xml.epp( 'xmlns' => 'urn:ietf:params:xml:ns:epp-1.0', 'xmlns:secDNS' => 'urn:ietf:params:xml:ns:secDNS-1.1', - 'xmlns:domain' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd', + 'xmlns:domain' => 'https://epp.tld.ee/schema/domain-eis-1.0.xsd', 'xmlns:keyrelay' => 'urn:ietf:params:xml:ns:keyrelay-1.0' ) do xml.response do diff --git a/app/views/epp/sessions/greeting.xml.builder b/app/views/epp/sessions/greeting.xml.builder index 34a983aca..308de3c59 100644 --- a/app/views/epp/sessions/greeting.xml.builder +++ b/app/views/epp/sessions/greeting.xml.builder @@ -5,13 +5,13 @@ xml.epp_head do xml.svcMenu do xml.version '1.0' xml.lang 'en' - xml.objURI 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd' - xml.objURI 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd' + xml.objURI 'https://epp.tld.ee/schema/domain-eis-1.0.xsd' + xml.objURI 'https://epp.tld.ee/schema/contact-eis-1.0.xsd' xml.objURI 'urn:ietf:params:xml:ns:host-1.0' xml.objURI 'urn:ietf:params:xml:ns:keyrelay-1.0' xml.svcExtension do xml.extURI 'urn:ietf:params:xml:ns:secDNS-1.1' - xml.extURI 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd' + xml.extURI 'https://epp.tld.ee/schema/eis-1.0.xsd' end end diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/check.xml b/app/views/registrar/xml_consoles/epp_requests/contact/check.xml index 4bf1e6eb3..a0e02a3dc 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/check.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/check.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> sh8013 diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/check_multiple.xml b/app/views/registrar/xml_consoles/epp_requests/contact/check_multiple.xml index 67f9f266c..57f0ad279 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/check_multiple.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/check_multiple.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> sh8013 sh13 vsdfvq diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/create.xml b/app/views/registrar/xml_consoles/epp_requests/contact/create.xml index 8fa81d779..cab39ffe6 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/create.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/create.xml @@ -2,7 +2,7 @@ - + Sillius Soddus @@ -20,7 +20,7 @@ - + 123 JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml b/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml index 69dc8d3b8..d288df7a0 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/delete.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> sh8013 wrong-one @@ -11,7 +11,7 @@ - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/info.xml b/app/views/registrar/xml_consoles/epp_requests/contact/info.xml index 19ad4de9d..3a2f195a6 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/info.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/info.xml @@ -2,7 +2,7 @@ - + sh8013 Aas34fq diff --git a/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml b/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml index 49631d3a0..aec36cc92 100644 --- a/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml +++ b/app/views/registrar/xml_consoles/epp_requests/contact/update_chg.xml @@ -2,7 +2,7 @@ - + sh8013 @@ -25,7 +25,7 @@ - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/check.xml b/app/views/registrar/xml_consoles/epp_requests/domain/check.xml index 94c765ab6..88dd550b6 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/check.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/check.xml @@ -3,7 +3,7 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/create.xml b/app/views/registrar/xml_consoles/epp_requests/domain/create.xml index e80c17cbf..3cb39cf0e 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/create.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/create.xml @@ -3,7 +3,7 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee 1 @@ -33,7 +33,7 @@ - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml b/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml index 1a97703f8..c1c7fd96f 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/delete.xml @@ -3,12 +3,12 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/info.xml b/app/views/registrar/xml_consoles/epp_requests/domain/info.xml index f7f0192c0..36204bba9 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/info.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/info.xml @@ -3,7 +3,7 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee 2fooBAR diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/renew.xml b/app/views/registrar/xml_consoles/epp_requests/domain/renew.xml index 73070bfc4..512d88de5 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/renew.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/renew.xml @@ -3,7 +3,7 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee 2014-08-07 1 diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml index 266b56e9c..55792a42c 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml @@ -3,7 +3,7 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee 2BARfoo @@ -11,7 +11,7 @@ - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/update.xml b/app/views/registrar/xml_consoles/epp_requests/domain/update.xml index 26df74165..bd1df68c6 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/update.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/update.xml @@ -3,7 +3,7 @@ + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> example.ee mak21 @@ -37,7 +37,7 @@ - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== diff --git a/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml b/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml index 54532f23a..f04b34969 100644 --- a/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml +++ b/app/views/registrar/xml_consoles/epp_requests/keyrelay/keyrelay.xml @@ -1,5 +1,5 @@ - + example6.ee @@ -16,7 +16,7 @@ P1D - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== 1422542244 diff --git a/doc/epp-examples.md b/doc/epp-examples.md index 1d7999cdc..ed44a83fd 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -19,13 +19,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -60,7 +60,7 @@ REQUEST: - + ABC-12345 @@ -114,7 +114,7 @@ REQUEST: - + John Doe @@ -129,7 +129,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -171,7 +171,7 @@ REQUEST: - + John Doe @@ -186,7 +186,7 @@ REQUEST: - + 1990-22-12 dGVzdCBmYWlsCg== @@ -228,7 +228,7 @@ REQUEST: - + John Doe @@ -243,7 +243,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -285,7 +285,7 @@ REQUEST: - + John Doe @@ -300,7 +300,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -342,7 +342,7 @@ REQUEST: - + abc12345 John Doe @@ -358,7 +358,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -400,7 +400,7 @@ REQUEST: - + abc:ABC:12345 John Doe @@ -416,7 +416,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -458,7 +458,7 @@ REQUEST: - + abc 123 John Doe @@ -474,7 +474,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -510,7 +510,7 @@ REQUEST: - + John Doe @@ -525,7 +525,7 @@ REQUEST: - + 1990-22-12 @@ -560,7 +560,7 @@ REQUEST: - + CID:FIRST0:abc:ABC:NEW:12345 John Doe @@ -576,7 +576,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -618,7 +618,7 @@ REQUEST: - + CID:FIRST0:abc:CID:ABC:NEW:12345 John Doe @@ -634,7 +634,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -676,7 +676,7 @@ REQUEST: - + FIRST0:abc22 John Doe @@ -692,7 +692,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -734,7 +734,7 @@ REQUEST: - + cid2:first0:abc:ABC:11111 John Doe @@ -750,7 +750,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -792,7 +792,7 @@ REQUEST: - + CID:FIRST0 John Doe @@ -808,7 +808,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -850,7 +850,7 @@ REQUEST: - + John Doe @@ -865,7 +865,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -907,7 +907,7 @@ REQUEST: - + John Doe @@ -922,7 +922,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -964,7 +964,7 @@ REQUEST: - + John Doe should not save @@ -980,7 +980,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1016,7 +1016,7 @@ REQUEST: - + John Doe @@ -1032,7 +1032,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -1068,7 +1068,7 @@ REQUEST: - + ABC-12345 @@ -1104,7 +1104,7 @@ REQUEST: - + not-exists @@ -1119,7 +1119,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1157,7 +1157,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1172,7 +1172,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1213,7 +1213,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1266,13 +1266,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1305,7 +1305,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1320,7 +1320,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1366,13 +1366,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1414,13 +1414,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1453,7 +1453,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1498,13 +1498,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -1539,7 +1539,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1554,7 +1554,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1592,7 +1592,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1608,7 +1608,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1646,7 +1646,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1661,7 +1661,7 @@ REQUEST: - + 1990-22-12 dGVzdCBmYWlsCg== @@ -1697,7 +1697,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1713,7 +1713,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1748,7 +1748,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1764,7 +1764,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -1799,7 +1799,7 @@ REQUEST: - + FIRST0:SH8013 Payment overdue. @@ -1838,7 +1838,7 @@ REQUEST: - + FIRST0:SH8013 +372.11111111 @@ -1885,7 +1885,7 @@ REQUEST: - + FIRST0:SH8013 @@ -1930,7 +1930,7 @@ REQUEST: - + FIRST0:SH8013 +372.11111111111 @@ -1980,7 +1980,7 @@ REQUEST: - + FIRST0:SH8013 @@ -2024,7 +2024,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2068,7 +2068,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2118,7 +2118,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2168,7 +2168,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2221,7 +2221,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2270,7 +2270,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2313,7 +2313,7 @@ REQUEST: - + FIRST0:SH8013 password @@ -2356,7 +2356,7 @@ REQUEST: - + ABC-12345 @@ -2389,7 +2389,7 @@ REQUEST: - + not-exists password @@ -2397,7 +2397,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2436,7 +2436,7 @@ REQUEST: - + FIRST0:SH737607533 password @@ -2444,7 +2444,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2480,7 +2480,7 @@ REQUEST: - + FIRST0:SH348236744 wrong password @@ -2488,7 +2488,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2524,7 +2524,7 @@ REQUEST: - + FIRST0:SH982687135 @@ -2559,7 +2559,7 @@ REQUEST: - + FIRST0:SH648273286 password @@ -2567,7 +2567,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2610,13 +2610,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2649,7 +2649,7 @@ REQUEST: - + FIRST0:SH129859989 password @@ -2657,7 +2657,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2698,13 +2698,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2746,13 +2746,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2785,7 +2785,7 @@ REQUEST: - + FIRST0:SH5773127110 @@ -2825,13 +2825,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2873,13 +2873,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -2912,7 +2912,7 @@ REQUEST: - + FIRST0:SH8279968911 wrong password @@ -2920,7 +2920,7 @@ REQUEST: - + 37605030299 dGVzdCBmYWlsCg== @@ -2961,13 +2961,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3002,7 +3002,7 @@ REQUEST: - + ABC-12345 @@ -3035,7 +3035,7 @@ REQUEST: - + FIXED:CHECK-1234 check-4321 @@ -3082,7 +3082,7 @@ REQUEST: - + FIXED:CHECK-LEGACY CID:FIXED:CHECK-LEGACY @@ -3129,7 +3129,7 @@ REQUEST: - + ABC-12345 @@ -3162,7 +3162,7 @@ REQUEST: - + no-contact password @@ -3203,7 +3203,7 @@ REQUEST: - + FIXED:INFO-4444 password @@ -3271,7 +3271,7 @@ REQUEST: - + FIXED:CID:FIXED:INFO-5555 password @@ -3339,7 +3339,7 @@ REQUEST: - + FIRST0:INFO-IDENT password @@ -3407,7 +3407,7 @@ REQUEST: - + FIRST0:SH025726680 wrong-pw @@ -3475,7 +3475,7 @@ REQUEST: - + FIXED:TEST:CUSTOM:CODE password @@ -3550,13 +3550,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3589,7 +3589,7 @@ REQUEST: - + FIRST0:SH025726680 password @@ -3662,13 +3662,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3710,13 +3710,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3749,7 +3749,7 @@ REQUEST: - + FIRST0:SH025726680 wrong-pw @@ -3792,13 +3792,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3840,13 +3840,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3879,7 +3879,7 @@ REQUEST: - + FIRST0:SH025726680 @@ -3935,13 +3935,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -3981,13 +3981,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -4022,7 +4022,7 @@ REQUEST: - + example570502870390653.ee 1 @@ -4050,7 +4050,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4085,7 +4085,7 @@ REQUEST: - + example75362879070324119.ee 1 @@ -4113,7 +4113,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4157,7 +4157,7 @@ REQUEST: - + test.ee @@ -4201,7 +4201,7 @@ REQUEST: - + example33195882581021572.ee 1 @@ -4229,7 +4229,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4271,7 +4271,7 @@ REQUEST: - + example29083099037202800.ee 1 @@ -4291,7 +4291,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -4333,7 +4333,7 @@ REQUEST: - + example50220100704932421.ee 1 @@ -4359,7 +4359,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4394,7 +4394,7 @@ REQUEST: - + äääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääää.ee 1 @@ -4422,7 +4422,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4457,7 +4457,7 @@ REQUEST: - + 1162.ee 1 @@ -4485,7 +4485,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4518,7 +4518,7 @@ REQUEST: - + 1162.ee 1 @@ -4546,7 +4546,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== wrong_pw @@ -4584,7 +4584,7 @@ REQUEST: - + 1162.ee 1 @@ -4612,7 +4612,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== abc @@ -4657,7 +4657,7 @@ REQUEST: - + ftp.ee 1 @@ -4685,7 +4685,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4723,7 +4723,7 @@ REQUEST: - + example60325525827762784.ee 1 @@ -4747,7 +4747,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4782,7 +4782,7 @@ REQUEST: - + example42884591161561847.ee 1 FIXED:CITIZEN_1234 @@ -4800,7 +4800,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4838,7 +4838,7 @@ REQUEST: - + example51822641645885173.ee 1 @@ -4900,7 +4900,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -4935,7 +4935,7 @@ REQUEST: - + example95701265975718561.ee 1 @@ -4961,7 +4961,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5005,7 +5005,7 @@ REQUEST: - + example79689508380822639.ee 1 @@ -5027,7 +5027,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5062,7 +5062,7 @@ REQUEST: - + example65830382884082211.ee 1 @@ -5085,7 +5085,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5127,7 +5127,7 @@ REQUEST: - + example37104311749905114.ee 1 @@ -5150,7 +5150,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5194,7 +5194,7 @@ REQUEST: - + example17283406877102608.ee 365 @@ -5222,7 +5222,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5264,7 +5264,7 @@ REQUEST: - + example42530658953623496.ee 2 @@ -5292,7 +5292,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5334,7 +5334,7 @@ REQUEST: - + example20254148699039299.ee 36 @@ -5362,7 +5362,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5404,7 +5404,7 @@ REQUEST: - + example41984719173309545.ee @@ -5431,7 +5431,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5473,7 +5473,7 @@ REQUEST: - + example85680911639912537.ee 367 @@ -5501,7 +5501,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5539,7 +5539,7 @@ REQUEST: - + example80718300051718809.ee 1 @@ -5567,7 +5567,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5600,7 +5600,7 @@ REQUEST: - + example53736479297046054.ee 1 @@ -5628,7 +5628,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -5663,7 +5663,7 @@ REQUEST: - + example18929120996156482.ee 1 @@ -5703,7 +5703,7 @@ REQUEST: 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 - + dGVzdCBmYWlsCg== @@ -5745,7 +5745,7 @@ REQUEST: - + example92492494814312141.ee 1 @@ -5785,7 +5785,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -5856,7 +5856,7 @@ REQUEST: - + example62629375729901991.ee 1 @@ -5890,7 +5890,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -5928,7 +5928,7 @@ REQUEST: - + example96324057439285023.ee 1 @@ -5962,7 +5962,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -5997,7 +5997,7 @@ REQUEST: - + example7613404788385072.ee 1 @@ -6025,7 +6025,7 @@ REQUEST: 49FD46E6C4B45C55D4AC - + dGVzdCBmYWlsCg== @@ -6067,7 +6067,7 @@ REQUEST: - + example49277921871401732.ee 1 @@ -6101,7 +6101,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6143,7 +6143,7 @@ REQUEST: - + example56030289069030352.ee 1 @@ -6177,7 +6177,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6212,7 +6212,7 @@ REQUEST: - + example75160608584221394.ee 1 @@ -6240,7 +6240,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6275,7 +6275,7 @@ REQUEST: - + example3956990749578865.ee 1 @@ -6309,7 +6309,7 @@ REQUEST: 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - + dGVzdCBmYWlsCg== @@ -6344,7 +6344,7 @@ REQUEST: - + example75024791554839013.ee 1 @@ -6370,7 +6370,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6412,7 +6412,7 @@ REQUEST: - + example53305717298495096.ee 1 @@ -6438,7 +6438,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6473,7 +6473,7 @@ REQUEST: - + example32384352982726855.ee 1 @@ -6499,7 +6499,7 @@ REQUEST: AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - + dGVzdCBmYWlsCg== @@ -6544,13 +6544,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -6583,7 +6583,7 @@ REQUEST: - + domain1.ee 42ae0ae9efbfe30e392c68f43868c156 @@ -6591,7 +6591,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6642,13 +6642,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -6725,7 +6725,7 @@ REQUEST: - + domain1.ee 0e24645ded1d5674883359a3a6efc6d8 @@ -6733,7 +6733,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6777,7 +6777,7 @@ REQUEST: - + domain1.ee 0e24645ded1d5674883359a3a6efc6d8 @@ -6785,7 +6785,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -6836,13 +6836,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -6926,13 +6926,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -6972,13 +6972,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7048,13 +7048,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7096,13 +7096,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7135,7 +7135,7 @@ REQUEST: - + domain2.ee cc8d4d0ec06659816e33ffa712bfcb96 @@ -7143,7 +7143,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -7194,13 +7194,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7240,13 +7240,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7279,7 +7279,7 @@ REQUEST: - + domain2.ee cc8d4d0ec06659816e33ffa712bfcb96 @@ -7287,7 +7287,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -7338,13 +7338,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7386,13 +7386,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7425,7 +7425,7 @@ REQUEST: - + domain3.ee 11a06f18e5e558f6b64753eaaa49173c @@ -7479,13 +7479,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7527,13 +7527,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7566,7 +7566,7 @@ REQUEST: - + domain4.ee fc66d69a22fd1bcdbf3be76be431b09d @@ -7620,13 +7620,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7668,13 +7668,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7707,7 +7707,7 @@ REQUEST: - + domain5.ee 4d5a71cc6c7d0ddcf59d2816b42e98d3 @@ -7761,13 +7761,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7809,13 +7809,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7848,7 +7848,7 @@ REQUEST: - + domain8.ee 2ec2e6c76768ad88df0dbeba38f710e6 @@ -7902,13 +7902,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7950,13 +7950,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -7989,7 +7989,7 @@ REQUEST: - + domain9.ee d36b447200a1aaac2bd7b5a878652bf5 @@ -8043,13 +8043,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8091,13 +8091,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8130,7 +8130,7 @@ REQUEST: - + domain11.ee cbb169bf8cd2f5ba0a3fcebaf7fa97fb @@ -8184,13 +8184,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8232,13 +8232,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8271,7 +8271,7 @@ REQUEST: - + domain14.ee 7590473cda31d3a0b3c2d8ffbf410b7c @@ -8325,13 +8325,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8373,13 +8373,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8412,7 +8412,7 @@ REQUEST: - + domain15.ee 91a1593675c6b62f498280dcff1613ae @@ -8466,13 +8466,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8514,13 +8514,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8553,7 +8553,7 @@ REQUEST: - + domain16.ee 98oiewslkfkd @@ -8596,13 +8596,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8637,7 +8637,7 @@ REQUEST: - + domain17.ee 66a79e8236d629c800bc4cddbb5b4b5f @@ -8645,7 +8645,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8698,13 +8698,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8737,7 +8737,7 @@ REQUEST: - + domain18.ee 6d38dcddecdb6cd04201e5bffd7ac13d @@ -8745,7 +8745,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8785,13 +8785,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8824,7 +8824,7 @@ REQUEST: - + domain18.ee 6d38dcddecdb6cd04201e5bffd7ac13d @@ -8832,7 +8832,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8885,13 +8885,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -8924,7 +8924,7 @@ REQUEST: - + domain19.ee c39986ad356b45908b93934b9b531b3e @@ -8932,7 +8932,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -8972,13 +8972,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9013,7 +9013,7 @@ REQUEST: - + domain20.ee test @@ -9021,7 +9021,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9056,7 +9056,7 @@ REQUEST: - + domain21.ee 97ffdf9ce35006bb804a90b0be86158f @@ -9064,7 +9064,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9099,7 +9099,7 @@ REQUEST: - + example23607638467376100.ee 98oiewslkfkd @@ -9144,13 +9144,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9183,7 +9183,7 @@ REQUEST: - + domain22.ee ed362ab554eed93eef9ba15f47b3a86b @@ -9191,7 +9191,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9235,7 +9235,7 @@ REQUEST: - + domain22.ee ed362ab554eed93eef9ba15f47b3a86b @@ -9243,7 +9243,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9283,13 +9283,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9324,7 +9324,7 @@ REQUEST: - + domain23.ee aefa0df0d6e304b99ae3c5ff5220feec @@ -9332,7 +9332,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9367,7 +9367,7 @@ REQUEST: - + domain24.ee 40bce48fe3a738128d78e17d37bf296b @@ -9412,13 +9412,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9451,7 +9451,7 @@ REQUEST: - + domain25.ee 064c71aaa009061b95fba395d67df5c5 @@ -9459,7 +9459,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9503,7 +9503,7 @@ REQUEST: - + domain25.ee 064c71aaa009061b95fba395d67df5c5 @@ -9557,13 +9557,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -9596,7 +9596,7 @@ REQUEST: - + domain25.ee 064c71aaa009061b95fba395d67df5c5 @@ -9604,7 +9604,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9648,7 +9648,7 @@ REQUEST: - + domain25.ee 5bfe0b53635867fb9e51d987d686b95e @@ -9697,7 +9697,7 @@ REQUEST: - + domain26.ee FIXED:CITIZEN_1234 @@ -9706,7 +9706,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9741,7 +9741,7 @@ REQUEST: - + domain27.ee FIXED:CITIZEN_1234 @@ -9750,7 +9750,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9785,7 +9785,7 @@ REQUEST: - + domain28.ee @@ -9807,7 +9807,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9842,7 +9842,7 @@ REQUEST: - + domain29.ee FIXED:CITIZEN_1234 @@ -9851,7 +9851,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9886,7 +9886,7 @@ REQUEST: - + domain30.ee FIXED:CITIZEN_1234 @@ -9895,7 +9895,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -9930,7 +9930,7 @@ REQUEST: - + domain31.ee @@ -9997,7 +9997,7 @@ REQUEST: - + domain31.ee @@ -10061,7 +10061,7 @@ REQUEST: - + domain31.ee @@ -10154,7 +10154,7 @@ REQUEST: - + domain32.ee @@ -10191,7 +10191,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -10227,7 +10227,7 @@ REQUEST: - + domain32.ee @@ -10264,7 +10264,7 @@ REQUEST: - + dGVzdCBmYWlsCg== @@ -10299,7 +10299,7 @@ REQUEST: - + domain33.ee Payment overdue. @@ -10338,7 +10338,7 @@ REQUEST: - + domain34.ee @@ -10402,7 +10402,7 @@ REQUEST: - + domain34.ee @@ -10456,7 +10456,7 @@ REQUEST: - + domain34.ee @@ -10533,7 +10533,7 @@ REQUEST: - + domain35.ee @@ -10574,7 +10574,7 @@ REQUEST: - + domain36.ee @@ -10615,7 +10615,7 @@ REQUEST: - + domain36.ee @@ -10667,7 +10667,7 @@ REQUEST: - + domain37.ee FIXED:CITIZEN_1234 @@ -10705,7 +10705,7 @@ REQUEST: - + domain38.ee @@ -10746,7 +10746,7 @@ REQUEST: - + domain39.ee 2016-07-20 1 @@ -10789,7 +10789,7 @@ REQUEST: - + domain40.ee 2016-07-20 1 @@ -10832,7 +10832,7 @@ REQUEST: - + domain41.ee 2016-07-20 @@ -10874,7 +10874,7 @@ REQUEST: - + domain42.ee 2016-07-20 1 @@ -10909,7 +10909,7 @@ REQUEST: - + domain42.ee 2016-07-20 1 @@ -10946,7 +10946,7 @@ REQUEST: - + domain43.ee 2015-07-30 730 @@ -10989,7 +10989,7 @@ REQUEST: - + domain44.ee 2015-07-30 36 @@ -11032,7 +11032,7 @@ REQUEST: - + domain45.ee 2015-07-30 1 @@ -11069,7 +11069,7 @@ REQUEST: - + domain46.ee 2200-08-07 1 @@ -11112,7 +11112,7 @@ REQUEST: - + domain47.ee 2015-07-30 4 @@ -11152,7 +11152,7 @@ REQUEST: - + domain48.ee 2015-10-18 1 @@ -11187,7 +11187,7 @@ REQUEST: - + domain48.ee 2015-10-17 1 @@ -11230,7 +11230,7 @@ REQUEST: - + domain49.ee 2020-07-20 1 @@ -11273,7 +11273,7 @@ REQUEST: - + domain50.ee 2015-07-30 1 @@ -11319,13 +11319,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -11358,7 +11358,7 @@ REQUEST: - + domain52.ee 2016-07-20 1 @@ -11400,13 +11400,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -11441,7 +11441,7 @@ REQUEST: - + domain53.ee 2fooBAR @@ -11539,7 +11539,7 @@ REQUEST: - + domain53.ee 2fooBAR @@ -11639,7 +11639,7 @@ REQUEST: - + domain54.ee 2fooBAR @@ -11673,7 +11673,7 @@ REQUEST: - + domain54.ee 2fooBAR @@ -11736,7 +11736,7 @@ REQUEST: - + domain54.ee 2fooBAR @@ -11794,7 +11794,7 @@ REQUEST: - + domain54.ee 2fooBAR @@ -11845,7 +11845,7 @@ REQUEST: - + domain54.ee 2fooBAR @@ -11915,7 +11915,7 @@ REQUEST: - + test.ee 2fooBAR @@ -11954,7 +11954,7 @@ REQUEST: - + domain55.ee 2fooBAR @@ -12028,13 +12028,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12067,7 +12067,7 @@ REQUEST: - + domain56.ee 2fooBAR @@ -12108,13 +12108,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12156,13 +12156,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12195,7 +12195,7 @@ REQUEST: - + domain57.ee @@ -12261,13 +12261,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12309,13 +12309,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12348,7 +12348,7 @@ REQUEST: - + domain58.ee 6247f0cbf6ef99c7803d68f9604ef0b0 @@ -12420,13 +12420,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12461,12 +12461,12 @@ REQUEST: - + domain59.ee - + dGVzdCBmYWlsCg== @@ -12501,12 +12501,12 @@ REQUEST: - + domain60.ee - + dGVzdCBmYWlsCg== @@ -12541,12 +12541,12 @@ REQUEST: - + domain61.ee - + dGVzdCBmYWlsCg== @@ -12581,7 +12581,7 @@ REQUEST: - + example.ee @@ -12616,7 +12616,7 @@ REQUEST: - + one.ee @@ -12656,7 +12656,7 @@ REQUEST: - + domain62.ee @@ -12699,7 +12699,7 @@ REQUEST: - + one.ee two.ee three.ee @@ -12749,7 +12749,7 @@ REQUEST: - + one.ee notcorrectdomain @@ -12803,13 +12803,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -12841,7 +12841,7 @@ REQUEST: ```xml - + domain63.ee @@ -12889,7 +12889,7 @@ REQUEST: ```xml - + domain63.ee @@ -12939,7 +12939,7 @@ REQUEST: ```xml - + domain63.ee @@ -12987,7 +12987,7 @@ REQUEST: ```xml - + domain63.ee @@ -13035,7 +13035,7 @@ REQUEST: ```xml - + domain63.ee @@ -13052,7 +13052,7 @@ REQUEST: P1D - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== 1437394918 @@ -13086,7 +13086,7 @@ REQUEST: ```xml - + domain63.ee @@ -13103,7 +13103,7 @@ REQUEST: P1D - + JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== 1437394919 @@ -13142,13 +13142,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13221,13 +13221,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13296,13 +13296,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13375,13 +13375,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13453,13 +13453,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13811,13 +13811,13 @@ RESPONSE: 1.0 en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13857,13 +13857,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13905,13 +13905,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -13946,7 +13946,7 @@ REQUEST: - + test.ee @@ -13988,13 +13988,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14034,13 +14034,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14082,13 +14082,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14130,13 +14130,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14176,13 +14176,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14224,13 +14224,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14302,13 +14302,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd @@ -14351,13 +14351,13 @@ REQUEST: en - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd urn:ietf:params:xml:ns:host-1.0 urn:ietf:params:xml:ns:keyrelay-1.0 urn:ietf:params:xml:ns:secDNS-1.1 - https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd + https://epp.tld.ee/schema/eis-1.0.xsd diff --git a/doc/epp/contact.md b/doc/epp/contact.md index 8d0045506..b8a0be47d 100644 --- a/doc/epp/contact.md +++ b/doc/epp/contact.md @@ -12,7 +12,7 @@ Contact Mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:contact="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd" + 1 Attribute: xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd" 0-1 Contact id, optional, string, no spaces, max 100 characters, generated automatically if missing 1 Postal information container @@ -27,7 +27,7 @@ Contact Mapping protocol short version: 1 Phone number in format \+ddd.d+ 1 E-mail 1 - 1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Contact identificator Attribute: "type" "bic" # Business registry code @@ -46,7 +46,7 @@ Contact Mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:contact="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd" + 1 Attribute: xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd" 1 Contact id, required 1 Change container 1 Postal information container @@ -63,7 +63,7 @@ Contact Mapping protocol short version: 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Contact identificator Attribute: "type" "bic" # Business registry code @@ -83,12 +83,12 @@ Contact Mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:contact="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd" + 1 Attribute: xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd" 1 Contact id 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -101,7 +101,7 @@ Contact Mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:contact="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd" + 1 Attribute: xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd" 1-n Contact id 0-1 Client transaction id @@ -113,7 +113,7 @@ Contact Mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:contact="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd" + 1 Attribute: xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd" 1-n Contact id 0-1 Required if registrar is not the owner of the contact. 1 Contact password. Attribute: roid="String" diff --git a/doc/epp/domain.md b/doc/epp/domain.md index f3a45c8da..e609b934e 100644 --- a/doc/epp/domain.md +++ b/doc/epp/domain.md @@ -13,7 +13,7 @@ Domain name mapping protocol short version: Field name Min-max Field description ------------------------- ------- ----------------- 1 - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" 1 Domain name. Can contain unicode characters. 0-1 Registration period for domain. Must add up to 1 / 2 / 3 years. @@ -36,7 +36,7 @@ Domain name mapping protocol short version: 1 Allowed values: 3 1 Allowed values: 3, 5, 6, 7, 8, 252, 253, 254, 255 1 Public key - 1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Base64 encoded document. Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 @@ -50,7 +50,7 @@ Domain name mapping protocol short version: Field name Min-max Field description ------------------------ -------- ----------------- 1 - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" 1 Domain name. Can contain unicode characters. 0-1 Attributes to change 0-1 Contact reference to the registrant @@ -85,7 +85,7 @@ Domain name mapping protocol short version: 0-1 1-n 1 Public key - 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. Required if registrant is changing. Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -97,11 +97,11 @@ Domain name mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" Optional attribute: verified="yes/no" 1 Domain name. Can contain unicode characters. 1 - 1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 1 Base64 encoded document. Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -113,7 +113,7 @@ Domain name mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" 1 Domain name. Can contain unicode characters. Attribute: hosts="all / del / sub / none" 0-1 Required if registrar is not the owner of the domain. @@ -127,14 +127,14 @@ Domain name mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" 1 Domain name. Can contain unicode characters. 1 Current expiry date (ISO8601 format) 0-1 Registration period for domain. Must add up to 1 / 2 / 3 years. Attribute: unit="y/m/d" Default value is 1 year. 0-1 - 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -146,12 +146,12 @@ Domain name mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 Attribute: op="request/query/approve/reject/cancel" - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" 1 Domain name. Can contain unicode characters. 1 1 Domain password. Attribute: roid="String" 0-1 - 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" + 0-1 Attribute: xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd" 0-1 Base64 encoded document. Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z" 0-1 Client transaction id @@ -163,7 +163,7 @@ Domain name mapping protocol short version: Field name Min-max Field description ----------------------- ------- ----------------- 1 - 1 Attribute: xmlns:domain="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd" + 1 Attribute: xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd" 1 Domain name. Can contain unicode characters. 0-1 Client transaction id diff --git a/doc/schemas/contact-eis-1.0.xsd b/doc/schemas/contact-eis-1.0.xsd index 341888e47..a13561395 100644 --- a/doc/schemas/contact-eis-1.0.xsd +++ b/doc/schemas/contact-eis-1.0.xsd @@ -1,7 +1,7 @@ - - + diff --git a/doc/schemas/domain-eis-1.0.xsd b/doc/schemas/domain-eis-1.0.xsd index 89d304ed6..62da465fe 100644 --- a/doc/schemas/domain-eis-1.0.xsd +++ b/doc/schemas/domain-eis-1.0.xsd @@ -1,7 +1,7 @@ - - + diff --git a/doc/schemas/eis-1.0.xsd b/doc/schemas/eis-1.0.xsd index 2612b5e57..a8b7221a3 100644 --- a/doc/schemas/eis-1.0.xsd +++ b/doc/schemas/eis-1.0.xsd @@ -1,7 +1,7 @@ diff --git a/lib/epp_constraint.rb b/lib/epp_constraint.rb index 10bc6b643..06cf3d45a 100644 --- a/lib/epp_constraint.rb +++ b/lib/epp_constraint.rb @@ -1,7 +1,7 @@ class EppConstraint OBJECT_TYPES = { - domain: { domain: 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd' }, - contact: { contact: 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd' } + domain: { domain: 'https://epp.tld.ee/schema/domain-eis-1.0.xsd' }, + contact: { contact: 'https://epp.tld.ee/schema/contact-eis-1.0.xsd' } } def initialize(type) diff --git a/lib/schemas/contact-eis-1.0.xsd b/lib/schemas/contact-eis-1.0.xsd index 66d12ba13..ed0596c96 100644 --- a/lib/schemas/contact-eis-1.0.xsd +++ b/lib/schemas/contact-eis-1.0.xsd @@ -1,7 +1,7 @@ - - + diff --git a/lib/schemas/domain-eis-1.0.xsd b/lib/schemas/domain-eis-1.0.xsd index eeea51493..222d3d6f4 100644 --- a/lib/schemas/domain-eis-1.0.xsd +++ b/lib/schemas/domain-eis-1.0.xsd @@ -1,7 +1,7 @@ - - + diff --git a/lib/schemas/eis-1.0.xsd b/lib/schemas/eis-1.0.xsd index 2612b5e57..a8b7221a3 100644 --- a/lib/schemas/eis-1.0.xsd +++ b/lib/schemas/eis-1.0.xsd @@ -1,7 +1,7 @@ diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 95a73624f..937362ad5 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -60,7 +60,7 @@ describe 'EPP Contact', epp: true do it 'fails if request xml is missing' do response = epp_plain_request(@epp_xml.create, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}create': Missing child element(s). Expected is one of ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id, {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}postalInfo )." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}create': Missing child element(s). Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}postalInfo )." response[:results][0][:result_code].should == '2001' end @@ -173,7 +173,7 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension, validate_input: false) - response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'." + response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'." response[:result_code].should == '2001' end @@ -185,7 +185,7 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension, validate_input: false) - response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd}ident': The attribute 'cc' is required but missing." + response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing." response[:result_code].should == '2001' end @@ -196,7 +196,7 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension, validate_input: false) - response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd}ident': The attribute 'type' is required but missing." + response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'type' is required but missing." response[:result_code].should == '2001' end @@ -309,7 +309,7 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.update, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}update': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}update': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." end it 'returns error if obj doesnt exist' do @@ -398,7 +398,7 @@ describe 'EPP Contact', epp: true do }, {}, { validate_input: false } ) - response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id': This element is not expected." + response[:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}id': This element is not expected." response[:result_code].should == '2001' @contact.reload.code.should == 'FIRST0:SH8013' @@ -719,7 +719,7 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.delete, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}delete': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}delete': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -814,7 +814,7 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.check, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}check': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}check': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -868,7 +868,7 @@ describe 'EPP Contact', epp: true do it 'fails if request invalid' do response = epp_plain_request(@epp_xml.info, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}info': Missing child element(s). Expected is ( {https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}info': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -992,7 +992,7 @@ describe 'EPP Contact', epp: true do + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> FIXED:CHECK-1234 check-4321 @@ -1008,7 +1008,7 @@ describe 'EPP Contact', epp: true do + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> FIXED:CHECK-LEGACY CID:FIXED:CHECK-LEGACY diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index b83d80071..b0b78bbaf 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -474,7 +474,7 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' xml = domain_create_xml({ @@ -482,7 +482,7 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' end @@ -2243,7 +2243,7 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}status', attribute 's': [facet 'enumeration'] The value 'invalidStatus' is not an element of the set {'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', 'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', 'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', 'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', 'serverTransferProhibited', 'serverUpdateProhibited'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}status', attribute 's': [facet 'enumeration'] The value 'invalidStatus' is not an element of the set {'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', 'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', 'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', 'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', 'serverTransferProhibited', 'serverUpdateProhibited'}." response[:results][0][:result_code].should == '2001' end @@ -2356,7 +2356,7 @@ describe 'EPP Domain', epp: true do ) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' xml = @epp_xml.domain.renew( @@ -2366,7 +2366,7 @@ describe 'EPP Domain', epp: true do ) response = epp_plain_request(xml, validate_input: false) - response[:results][0][:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' Setting.days_to_renew_domain_before_expire = 90 @@ -2721,7 +2721,7 @@ describe 'EPP Domain', epp: true do xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'invalid' } }) response = epp_plain_request(xml, validate_input: false) - response[:msg].should == "Element '{https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/domain-eis-1.0.xsd}name', attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the set {'all', 'del', 'none', 'sub'}." + response[:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the set {'all', 'del', 'none', 'sub'}." response[:result_code].should == '2001' xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'sub' } }) diff --git a/spec/epp/epp_helper_spec.rb b/spec/epp/epp_helper_spec.rb index 7b85a1ab1..006baf171 100644 --- a/spec/epp/epp_helper_spec.rb +++ b/spec/epp/epp_helper_spec.rb @@ -12,7 +12,7 @@ describe 'EPP Helper', epp: true do + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> ' + dn + ' 98oiewslkfkd @@ -32,7 +32,7 @@ describe 'EPP Helper', epp: true do + xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd"> one.ee test diff --git a/spec/epp/requests/contacts/create_with_two_addresses.xml b/spec/epp/requests/contacts/create_with_two_addresses.xml index 74ff6486d..640febf34 100644 --- a/spec/epp/requests/contacts/create_with_two_addresses.xml +++ b/spec/epp/requests/contacts/create_with_two_addresses.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> loc_int John Doe Int diff --git a/spec/epp/requests/contacts/delete.xml b/spec/epp/requests/contacts/delete.xml index 230edfb0d..004090aa2 100644 --- a/spec/epp/requests/contacts/delete.xml +++ b/spec/epp/requests/contacts/delete.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> dwa1234 diff --git a/spec/epp/requests/contacts/delete_missing_attr.xml b/spec/epp/requests/contacts/delete_missing_attr.xml index 2817bb75e..b3502252b 100644 --- a/spec/epp/requests/contacts/delete_missing_attr.xml +++ b/spec/epp/requests/contacts/delete_missing_attr.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> ABC-12345 diff --git a/spec/epp/requests/contacts/info.xml b/spec/epp/requests/contacts/info.xml index 0f0b3d657..58fb2efee 100644 --- a/spec/epp/requests/contacts/info.xml +++ b/spec/epp/requests/contacts/info.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> info-4444 2fooBAR diff --git a/spec/epp/requests/contacts/info_missing_attr.xml b/spec/epp/requests/contacts/info_missing_attr.xml index baaea80c5..1b42c56f2 100644 --- a/spec/epp/requests/contacts/info_missing_attr.xml +++ b/spec/epp/requests/contacts/info_missing_attr.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> ABC-12345 diff --git a/spec/epp/requests/contacts/update.xml b/spec/epp/requests/contacts/update.xml index 2b7e34226..3dcf17374 100644 --- a/spec/epp/requests/contacts/update.xml +++ b/spec/epp/requests/contacts/update.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> sh8013 diff --git a/spec/epp/requests/contacts/update_missing_attr.xml b/spec/epp/requests/contacts/update_missing_attr.xml index 05222ff76..74590aa25 100644 --- a/spec/epp/requests/contacts/update_missing_attr.xml +++ b/spec/epp/requests/contacts/update_missing_attr.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> ABC-12345 diff --git a/spec/epp/requests/contacts/update_with_errors.xml b/spec/epp/requests/contacts/update_with_errors.xml index d3e147c54..ac6426a21 100644 --- a/spec/epp/requests/contacts/update_with_errors.xml +++ b/spec/epp/requests/contacts/update_with_errors.xml @@ -3,7 +3,7 @@ + xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd"> sh8013 123456798 From 14a1b317fb20a1884dbe5feb84baca08915251a4 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 24 Jul 2015 17:51:57 +0300 Subject: [PATCH 25/94] Remove redundant schemas #2752 --- doc/schemas/contact-1.0.xsd | 388 ---------------------------- doc/schemas/contact-eis-1.0.xsd | 4 +- doc/schemas/domain-1.0.xsd | 432 -------------------------------- 3 files changed, 2 insertions(+), 822 deletions(-) delete mode 100644 doc/schemas/contact-1.0.xsd delete mode 100644 doc/schemas/domain-1.0.xsd diff --git a/doc/schemas/contact-1.0.xsd b/doc/schemas/contact-1.0.xsd deleted file mode 100644 index 3ed0eb6d8..000000000 --- a/doc/schemas/contact-1.0.xsd +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - - - - Extensible Provisioning Protocol v1.0 - contact provisioning schema. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/schemas/contact-eis-1.0.xsd b/doc/schemas/contact-eis-1.0.xsd index a13561395..e1fb084a5 100644 --- a/doc/schemas/contact-eis-1.0.xsd +++ b/doc/schemas/contact-eis-1.0.xsd @@ -10,8 +10,8 @@ - - + + diff --git a/doc/schemas/domain-1.0.xsd b/doc/schemas/domain-1.0.xsd deleted file mode 100644 index db650414e..000000000 --- a/doc/schemas/domain-1.0.xsd +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - - - - - - Extensible Provisioning Protocol v1.0 - domain provisioning schema. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 59e48cf286c616067d067d2992d67b884c40a4d8 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 27 Jul 2015 10:57:37 +0300 Subject: [PATCH 26/94] Remove validate import #2752 --- spec/epp/domain_spec.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index b0b78bbaf..81ba7e08a 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -473,7 +473,7 @@ describe 'EPP Domain', epp: true do period: { value: '1', attrs: { unit: '' } } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' @@ -481,7 +481,7 @@ describe 'EPP Domain', epp: true do period: { value: '1', attrs: { unit: 'bla' } } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' end @@ -570,7 +570,7 @@ describe 'EPP Domain', epp: true do ] }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'." response[:results][1][:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': '' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:secDNS-1.1}keyType'." @@ -603,7 +603,7 @@ describe 'EPP Domain', epp: true do ] }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Valid algorithms are: 3, 5, 6, 7, 8, 252, 253, 254, 255 [alg]' @@ -835,7 +835,7 @@ describe 'EPP Domain', epp: true do }] }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}keyData': This element is not expected. Expected is ( {urn:ietf:params:xml:ns:secDNS-1.1}dsData )." response[:result_code].should == '2001' end @@ -1504,7 +1504,7 @@ describe 'EPP Domain', epp: true do end it 'returns an error for incorrect op attribute' do - response = epp_plain_request(domain_transfer_xml({}, 'bla'), validate_input: false) + response = epp_plain_request(domain_transfer_xml({}, 'bla')) response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}transfer', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'approve', 'cancel', 'query', 'reject', 'request'}." response[:result_code].should == '2001' end @@ -2242,7 +2242,7 @@ describe 'EPP Domain', epp: true do ] }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}status', attribute 's': [facet 'enumeration'] The value 'invalidStatus' is not an element of the set {'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', 'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', 'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', 'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', 'serverTransferProhibited', 'serverUpdateProhibited'}." response[:results][0][:result_code].should == '2001' end @@ -2355,7 +2355,7 @@ describe 'EPP Domain', epp: true do period: { value: '1', attrs: { unit: '' } } ) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' @@ -2365,7 +2365,7 @@ describe 'EPP Domain', epp: true do period: { value: '1', attrs: { unit: 'bla' } } ) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' @@ -2720,7 +2720,7 @@ describe 'EPP Domain', epp: true do domain.save xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'invalid' } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the set {'all', 'del', 'none', 'sub'}." response[:result_code].should == '2001' From c7940ce5f401ff0a37587b83f624e654b6474c5e Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 27 Jul 2015 11:02:38 +0300 Subject: [PATCH 27/94] Remove validate_input in contacts #2752 --- spec/epp/contact_spec.rb | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 937362ad5..047a2a67e 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -58,7 +58,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request xml is missing' do - response = epp_plain_request(@epp_xml.create, validate_input: false) + response = epp_plain_request(@epp_xml.create) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}create': Missing child element(s). Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}postalInfo )." response[:results][0][:result_code].should == '2001' @@ -172,7 +172,7 @@ describe 'EPP Contact', epp: true do attrs: { type: 'birthday', cc: 'WRONG' } } } - response = create_request({}, extension, validate_input: false) + response = create_request({}, extension) response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'." response[:result_code].should == '2001' end @@ -184,7 +184,7 @@ describe 'EPP Contact', epp: true do attrs: { type: 'birthday' } } } - response = create_request({}, extension, validate_input: false) + response = create_request({}, extension) response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing." response[:result_code].should == '2001' end @@ -195,7 +195,7 @@ describe 'EPP Contact', epp: true do value: '1990-22-12' } } - response = create_request({}, extension, validate_input: false) + response = create_request({}, extension) response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'type' is required but missing." response[:result_code].should == '2001' end @@ -308,7 +308,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request is invalid' do - response = epp_plain_request(@epp_xml.update, validate_input: false) + response = epp_plain_request(@epp_xml.update) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}update': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." end @@ -395,7 +395,7 @@ describe 'EPP Contact', epp: true do chg: { id: { value: 'notpossibletoupdate' } } - }, {}, { validate_input: false } + }, {} ) response[:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}id': This element is not expected." @@ -464,7 +464,7 @@ describe 'EPP Contact', epp: true do }] }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Parameter value policy error. Client-side object status "\ "management not supported: status [status]" response[:results][0][:result_code].should == '2306' @@ -521,7 +521,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' @@ -564,7 +564,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Required parameter missing - phone [phone]' response[:results][0][:result_code].should == '2003' @@ -586,7 +586,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' @@ -610,7 +610,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' @@ -637,7 +637,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' @@ -657,7 +657,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Command completed successfully' response[:results][0][:result_code].should == '1000' @@ -677,7 +677,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == 'Parameter value policy error. Org must be blank: postalInfo > org [org]' response[:results][0][:result_code].should == '2306' @@ -696,7 +696,7 @@ describe 'EPP Contact', epp: true do } }) - response = epp_plain_request(xml, validate_input: false) + response = epp_plain_request(xml) response[:results][0][:msg].should == "Required parameter missing - name [name]" response[:results][0][:result_code].should == '2003' end @@ -717,7 +717,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request is invalid' do - response = epp_plain_request(@epp_xml.delete, validate_input: false) + response = epp_plain_request(@epp_xml.delete) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}delete': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' @@ -812,7 +812,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request is invalid' do - response = epp_plain_request(@epp_xml.check, validate_input: false) + response = epp_plain_request(@epp_xml.check) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}check': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' @@ -867,7 +867,7 @@ describe 'EPP Contact', epp: true do end it 'fails if request invalid' do - response = epp_plain_request(@epp_xml.info, validate_input: false) + response = epp_plain_request(@epp_xml.info) response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}info': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 From 8700beea607f469b206a7cd0a7a9fe58a6143226 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 17:44:52 +0300 Subject: [PATCH 28/94] Logging user actions #2808 --- app/models/contact.rb | 4 +-- app/models/domain.rb | 1 - app/models/epp/domain.rb | 2 +- .../initializers/eis_custom_active_model.rb | 18 ------------- .../initializers/eis_custom_active_record.rb | 7 ----- config/initializers/eis_custom_flash.rb | 27 ------------------- config/initializers/eis_custom_rack.rb | 14 ---------- 7 files changed, 3 insertions(+), 70 deletions(-) delete mode 100644 config/initializers/eis_custom_active_model.rb delete mode 100644 config/initializers/eis_custom_active_record.rb delete mode 100644 config/initializers/eis_custom_flash.rb delete mode 100644 config/initializers/eis_custom_rack.rb diff --git a/app/models/contact.rb b/app/models/contact.rb index 7db3e5ea6..b3d932bcc 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -311,8 +311,8 @@ class Contact < ActiveRecord::Base def status_notes_array=(notes) self.status_notes = {} notes ||= [] - statuses.each_with_index do |status,i| - self.status_notes[status] = notes[i] + statuses.each_with_index do |status, i| + status_notes[status] = notes[i] end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 70eedccc8..89dffb5b9 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -78,7 +78,6 @@ class Domain < ActiveRecord::Base end after_save :update_whois_record - after_create :update_reserved_domains def update_reserved_domains return unless in_reserved_list? diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 57cd1b5a3..b953e52ab 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -11,7 +11,7 @@ class Epp::Domain < Domain before_validation :validate_contacts def validate_contacts - return if contacts.map {|c| c.valid? }.all? + return if contacts.map(&:valid?).all? add_epp_error('2304', nil, nil, I18n.t(:object_status_prohibits_operation)) false end diff --git a/config/initializers/eis_custom_active_model.rb b/config/initializers/eis_custom_active_model.rb deleted file mode 100644 index f41a42325..000000000 --- a/config/initializers/eis_custom_active_model.rb +++ /dev/null @@ -1,18 +0,0 @@ -# Log all active model user errors -module ActiveModel - class Errors - def add(attribute, message = :invalid, options = {}) - message = normalize_message(attribute, message, options) - if exception = options[:strict] - exception = ActiveModel::StrictValidationFailed if exception == true - raise exception, full_message(attribute, message) - end - - # CUSTOM logging - Rails.logger.info "USER MSG: ACTIVEMODEL: #{@base.try(:class)} [#{attribute}] #{message}" if message.present? - # END of CUSTOM logging - - self[attribute] << message - end - end -end diff --git a/config/initializers/eis_custom_active_record.rb b/config/initializers/eis_custom_active_record.rb deleted file mode 100644 index 546f5a4ae..000000000 --- a/config/initializers/eis_custom_active_record.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Log all user issues raised by active record -class ActiveRecord::Base - after_validation do |m| - Rails.logger.info "USER MSG: ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? - true - end -end diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb deleted file mode 100644 index ed5832e85..000000000 --- a/config/initializers/eis_custom_flash.rb +++ /dev/null @@ -1,27 +0,0 @@ -# Log all flash messages -module ActionDispatch - class Flash - def call(env) - @app.call(env) - ensure - session = Request::Session.find(env) || {} - flash_hash = env[KEY] - - if flash_hash && (flash_hash.present? || session.key?('flash')) - session["flash"] = flash_hash.to_session_value - - # EIS custom logging - Rails.logger.info "USER MSG: FLASH: #{session['flash']['flashes'].inspect}" if session['flash'] - # END OF EIS custom logging - - env[KEY] = flash_hash.dup - end - - if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?) - session.key?('flash') && session['flash'].nil? - session.delete('flash') - end - end - end -end - diff --git a/config/initializers/eis_custom_rack.rb b/config/initializers/eis_custom_rack.rb deleted file mode 100644 index 52dbd8244..000000000 --- a/config/initializers/eis_custom_rack.rb +++ /dev/null @@ -1,14 +0,0 @@ -# EIS custom rack hack in order to enable test external interfaces EPP/REPP inside webserver network -# rubocop:disable Metrics/LineLength -module Rack - class Request - def trusted_proxy?(ip) - if ENV['eis_trusted_proxies'] - ENV['eis_trusted_proxies'].split(',').map(&:strip).include?(ip) - else - ip =~ /\A127\.0\.0\.1\Z|\A(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|\A::1\Z|\Afd[0-9a-f]{2}:.+|\Alocalhost\Z|\Aunix\Z|\Aunix:/i - end - end - end -end -# rubocop:enable Metrics/LineLength From 48bc4d4ac98d66a51606a4f8807c3d366f0b68ad Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Thu, 23 Jul 2015 20:02:01 +0300 Subject: [PATCH 29/94] Optimize contact linked status update #2477 --- app/models/contact.rb | 38 +++++++++++++++++++++++-------------- app/models/epp/domain.rb | 18 ++++++++++++++---- config/environments/test.rb | 11 ++++++++++- 3 files changed, 48 insertions(+), 19 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index b3d932bcc..44af31d65 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -260,21 +260,11 @@ class Contact < ActiveRecord::Base Country.new(country_code) end - # Find a way to use self.domains with contact - def domains_owned - Domain.where(registrant_id: id) - end - - def relations_with_domain? - return true if domain_contacts.present? || domains_owned.present? - false - end - # TODO: refactor, it should not allow to destroy with normal destroy, # no need separate method # should use only in transaction def destroy_and_clean - if relations_with_domain? + if domains_present? errors.add(:domains, :exist) return false end @@ -316,14 +306,34 @@ class Contact < ActiveRecord::Base end end + # optimization under children loop, + # otherwise bullet will not be happy + def domains_present? + return @domains_present if @domains_present + domain_contacts.present? || registrant_domains.present? + end + + # for overwrite when doing children loop + def domains_present=(boolean) + @domains_present = boolean + end + def manage_linked - if domains.present? - statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? + if domains_present? + set_linked else - statuses.delete_if { |s| s == LINKED } + unset_linked end end + def set_linked + statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? + end + + def unset_linked + statuses.delete_if { |s| s == LINKED } + end + # rubocop:disable Metrics/CyclomaticComplexity def manage_ok return unset_ok unless valid? diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index b953e52ab..73c015904 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -16,10 +16,20 @@ class Epp::Domain < Domain false end - before_save :update_contact_status - def update_contact_status - contacts.each do |c| - next if c.linked? + before_save :link_contacts + def link_contacts + # Based on bullet report + unlinked_contacts = contacts.select { |c| !c.linked? } # speed up a bit + unlinked_contacts.each do |uc| + uc.domains_present = true # no need to fetch domains again + uc.save(validate: false) + end + end + + after_destroy :unlink_contacts + def unlink_contacts + contacts.each do |c| + c.domains_present = false c.save(validate: false) end end diff --git a/config/environments/test.rb b/config/environments/test.rb index ee1ae12b7..80f7b9064 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -44,18 +44,27 @@ Rails.application.configure do # The available log levels are: :debug, :info, :warn, :error, :fatal, and :unknown, # corresponding to the log level numbers from 0 up to 5 respectively - config.log_level = :info + config.log_level = :debug # for finding database optimization config.after_initialize do Bullet.enable = true Bullet.bullet_logger = true + Bullet.rails_logger = true Bullet.raise = true # raise an error if n+1 query occurs Bullet.unused_eager_loading_enable = false # Currenty hard to fix, it is triggered by Epp::Domain.new_from_epp for create request Bullet.add_whitelist type: :n_plus_one_query, class_name: 'Contact', association: :registrar + + # when domain updates, then we need to update all contact linked status, + # somehow it triggers bullet counter cache for versions, + # there was no output indicating each version where fetched or counted + # thus needs more investigation + Bullet.add_whitelist type: :counter_cache, class_name: 'Contact', association: :versions end + + # config.logger = Logger.new(STDOUT) end # In this mode, any jobs you queue will be run in the same thread, synchronously From 7fa9fb3c6eeb06bed2ff15c956b2673ac2799be6 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 27 Jul 2015 15:12:34 +0300 Subject: [PATCH 30/94] Added backtrace reverse info --- app/controllers/epp_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 3fec7910b..f81a89ea6 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -43,7 +43,8 @@ class EppController < ApplicationController if Rails.env.test? || Rails.env.development? # rubocop:disable Rails/Output puts e.backtrace.reverse.join("\n") - puts "\nFROM-EPP-RESCUE: #{e.message}\n" + puts "\n BACKTRACE REVERSED!\n" + puts "\n FROM-EPP-RESCUE: #{e.message}\n\n\n" # rubocop:enable Rails/Output else logger.error "FROM-EPP-RESCUE: #{e.message}" From a9ba4dbfd201cd801a03ddf489bd2efabcd2b066 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 27 Jul 2015 15:59:23 +0300 Subject: [PATCH 31/94] Contact linked test update/refactor #2411 --- app/models/contact.rb | 8 +++----- app/models/epp/domain.rb | 2 +- app/views/admin/contacts/partials/_domains.haml | 2 +- spec/fabricators/domain_fabricator.rb | 2 +- spec/mailers/contact_mailer_spec.rb | 1 + spec/models/contact_spec.rb | 10 ++++++++-- spec/rails_helper.rb | 1 + 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 44af31d65..d1ea2da63 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -51,6 +51,9 @@ class Contact < ActiveRecord::Base manage_ok end + # for overwrite when doing children loop + attr_writer :domains_present + scope :current_registrars, ->(id) { where(registrar_id: id) } BIC = 'bic' @@ -313,11 +316,6 @@ class Contact < ActiveRecord::Base domain_contacts.present? || registrant_domains.present? end - # for overwrite when doing children loop - def domains_present=(boolean) - @domains_present = boolean - end - def manage_linked if domains_present? set_linked diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 73c015904..c36912d6b 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -528,7 +528,7 @@ class Epp::Domain < Domain return if registrant.registrar_id == registrar_id is_other_domains_contact = DomainContact.where('contact_id = ? AND domain_id != ?', registrant_id, id).count > 0 - if registrant.domains_owned.count > 1 || is_other_domains_contact + if registrant.registrant_domains.count > 1 || is_other_domains_contact oc = copy_and_transfer_contact(registrant_id, registrar_id) self.registrant_id = oc.id else diff --git a/app/views/admin/contacts/partials/_domains.haml b/app/views/admin/contacts/partials/_domains.haml index 142c06397..0c319127b 100644 --- a/app/views/admin/contacts/partials/_domains.haml +++ b/app/views/admin/contacts/partials/_domains.haml @@ -8,7 +8,7 @@ %th{class: 'col-xs-4'}= t(:registrar) %th{class: 'col-xs-4'}= t(:valid_to) %tbody - - @contact.domains_owned.each do |x| + - @contact.registrant_domains.each do |x| %tr %td= link_to(x.name, [:admin, x]) %td= link_to(x.registrar, [:admin, x.registrar]) diff --git a/spec/fabricators/domain_fabricator.rb b/spec/fabricators/domain_fabricator.rb index 80d8bf598..24f7a45f4 100644 --- a/spec/fabricators/domain_fabricator.rb +++ b/spec/fabricators/domain_fabricator.rb @@ -3,7 +3,7 @@ Fabricator(:domain) do valid_to Date.new(2014, 8, 7) period 1 period_unit 'y' - registrant(fabricator: :registrant) + registrant { Fabricate(:registrant) } nameservers(count: 3) admin_domain_contacts(count: 1) { Fabricate(:admin_domain_contact) } tech_domain_contacts(count: 1) { Fabricate(:tech_domain_contact) } diff --git a/spec/mailers/contact_mailer_spec.rb b/spec/mailers/contact_mailer_spec.rb index 9f825b380..fe4ccc84c 100644 --- a/spec/mailers/contact_mailer_spec.rb +++ b/spec/mailers/contact_mailer_spec.rb @@ -29,6 +29,7 @@ describe ContactMailer do before :all do @domain = Fabricate(:domain) @contact = @domain.registrant + @contact.reload # until figured out why registrant_domains not loaded @contact.deliver_emails = true @contact.email = 'test@example.org' # new email @mail = ContactMailer.email_updated(@contact) diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb index 721039f14..6cc3ee124 100644 --- a/spec/models/contact_spec.rb +++ b/spec/models/contact_spec.rb @@ -137,8 +137,8 @@ describe Contact do end end - it 'should not have relation' do - @contact.relations_with_domain?.should == false + it 'should not have relation with domains' do + @contact.domains_present?.should == false end it 'bic should be valid' do @@ -234,9 +234,15 @@ describe Contact do it 'should have related domain descriptions hash' do contact = @domain.registrant + contact.reload # somehow it registrant_domains are empty? contact.related_domain_descriptions.should == { "#{@domain.name}" => [:registrant] } end + it 'should have related domain descriptions hash when find directly' do + contact = @domain.registrant + Contact.find(contact.id).related_domain_descriptions.should == { "#{@domain.name}" => [:registrant] } + end + it 'should have related domain descriptions hash' do contact = @domain.contacts.first contact.related_domain_descriptions.should == { "#{@domain.name}" => [:admin] } diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 453d8fc13..c36859300 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -48,6 +48,7 @@ def create_settings Setting.client_side_status_editing_enabled = true + # speedup and easier to create fabrications @fixed_registrar = Registrar.find_by_name('fixed registrar') || Fabricate(:registrar, name: 'fixed registrar', code: 'FIXED') From 95a73327dbe215332d6273120c3b39e7facfe152 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 27 Jul 2015 18:08:13 +0300 Subject: [PATCH 32/94] Add configurable invoice due date #2775 --- app/controllers/admin/settings_controller.rb | 1 + app/models/registrar.rb | 4 +++- app/views/admin/invoices/index.haml | 4 ++-- app/views/admin/settings/index.haml | 1 + app/views/registrar/invoices/index.haml | 4 ++-- app/views/registrar/invoices/partials/_details.haml | 8 ++++---- config/initializers/initial_settings.rb | 1 + spec/models/registrar_spec.rb | 2 ++ spec/rails_helper.rb | 4 ++-- 9 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index 805c983f4..7cdcf323b 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -53,6 +53,7 @@ class Admin::SettingsController < AdminController :transfer_wait_time, :invoice_number_min, :invoice_number_max, + :days_to_keep_invoices_active, :days_to_keep_overdue_invoices_active, :days_to_renew_domain_before_expire, :expire_warning_period, diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 1da3f2d20..d5ba8bd9a 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -72,10 +72,11 @@ class Registrar < ActiveRecord::Base end # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/AbcSize def issue_prepayment_invoice(amount, description = nil) invoices.create( invoice_type: 'DEB', - due_date: Time.zone.now.to_date + 1.day, + due_date: (Time.zone.now.to_date + Setting.days_to_keep_invoices_active.days).end_of_day, payment_term: 'prepayment', description: description, currency: 'EUR', @@ -117,6 +118,7 @@ class Registrar < ActiveRecord::Base ] ) end + # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/MethodLength def cash_account diff --git a/app/views/admin/invoices/index.haml b/app/views/admin/invoices/index.haml index 837300133..a79c66f5d 100644 --- a/app/views/admin/invoices/index.haml +++ b/app/views/admin/invoices/index.haml @@ -24,10 +24,10 @@ - if x.cancelled? %td.text-grey= t(:cancelled) - else - %td= l(x.due_date) + %td= l(x.due_date, format: :date_long) - if x.binded? - %td= l(x.receipt_date) + %td= l(x.receipt_date, format: :date_long) - elsif x.cancelled? %td.text-grey= t(:cancelled) - else diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml index b47a23384..7b727146d 100644 --- a/app/views/admin/settings/index.haml +++ b/app/views/admin/settings/index.haml @@ -65,6 +65,7 @@ %tbody = render 'setting_row', var: :invoice_number_min = render 'setting_row', var: :invoice_number_max + = render 'setting_row', var: :days_to_keep_invoices_active = render 'setting_row', var: :days_to_keep_overdue_invoices_active = render 'setting_row', var: :registry_billing_email = render 'setting_row', var: :registry_invoice_contact diff --git a/app/views/registrar/invoices/index.haml b/app/views/registrar/invoices/index.haml index e20158ea7..ed543f381 100644 --- a/app/views/registrar/invoices/index.haml +++ b/app/views/registrar/invoices/index.haml @@ -61,13 +61,13 @@ %tr %td= link_to(x, [:registrar, x]) - if x.receipt_date - %td= l(x.receipt_date) + %td= l(x.receipt_date, format: :date_long) - elsif x.cancelled? %td.text-grey= t(:cancelled) - else %td{class: 'text-danger'}= t(:unpaid) - %td= l(x.due_date) + %td= l(x.due_date, format: :date_long) %td= x.sum .row .col-md-12 diff --git a/app/views/registrar/invoices/partials/_details.haml b/app/views/registrar/invoices/partials/_details.haml index 07a2d0761..0b897ce7f 100644 --- a/app/views/registrar/invoices/partials/_details.haml +++ b/app/views/registrar/invoices/partials/_details.haml @@ -2,21 +2,21 @@ %hr %dl.dl-horizontal %dt= t(:issue_date) - %dd= l(@invoice.created_at) + %dd= l(@invoice.created_at, format: :date_long) - if @invoice.cancelled? %dt= t(:cancel_date) - %dd= l(@invoice.cancelled_at) + %dd= l(@invoice.cancelled_at, format: :date_long) %dt= t(:due_date) - if @invoice.cancelled? %dd.text-grey= t(:cancelled) - else - %dd= l(@invoice.due_date) + %dd= l(@invoice.due_date, format: :date_long) %dt= t(:receipt_date) - if @invoice.binded? - %dd= l(@invoice.receipt_date) + %dd= l(@invoice.receipt_date, format: :date_long) - elsif @invoice.cancelled? %dd.text-grey= t(:cancelled) - else diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index 1417ef7e3..9fbea8343 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -27,6 +27,7 @@ if con.present? && con.table_exists?('settings') Setting.save_default(:invoice_number_min, 131050) Setting.save_default(:invoice_number_max, 149999) + Setting.save_default(:days_to_keep_invoices_active, 30) Setting.save_default(:days_to_keep_overdue_invoices_active, 30) Setting.save_default(:days_to_renew_domain_before_expire, 90) Setting.save_default(:expire_warning_period, 15) diff --git a/spec/models/registrar_spec.rb b/spec/models/registrar_spec.rb index 98219bf85..e754664ac 100644 --- a/spec/models/registrar_spec.rb +++ b/spec/models/registrar_spec.rb @@ -122,11 +122,13 @@ describe Registrar do end it 'should be able to issue a prepayment invoice' do + Setting.days_to_keep_invoices_active = 30 Fabricate(:registrar, name: 'EIS', reg_no: '90010019') @registrar.issue_prepayment_invoice(200, 'add some money') @registrar.invoices.count.should == 1 i = @registrar.invoices.first i.sum.should == BigDecimal.new('240.0') + i.due_date.should be_within(0.1).of((Time.zone.now + 30.days).end_of_day) i.description.should == 'add some money' end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index c36859300..fc25543f2 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -49,8 +49,8 @@ def create_settings Setting.client_side_status_editing_enabled = true # speedup and easier to create fabrications - @fixed_registrar = - Registrar.find_by_name('fixed registrar') || + @fixed_registrar = + Registrar.find_by_name('fixed registrar') || Fabricate(:registrar, name: 'fixed registrar', code: 'FIXED') end From 6d3f2f611bbccd91867e3296a64819b8a8065ad9 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 27 Jul 2015 18:30:19 +0300 Subject: [PATCH 33/94] Add more logging #2796 --- app/controllers/registrar/depp_controller.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/registrar/depp_controller.rb b/app/controllers/registrar/depp_controller.rb index 753a8a6e0..aff0406a3 100644 --- a/app/controllers/registrar/depp_controller.rb +++ b/app/controllers/registrar/depp_controller.rb @@ -1,7 +1,10 @@ class Registrar::DeppController < RegistrarController # EPP controller helper_method :depp_current_user - rescue_from(Errno::ECONNRESET, Errno::ECONNREFUSED) do |_exception| + rescue_from(Errno::ECONNRESET, Errno::ECONNREFUSED) do |exception| + logger.error 'COULD NOT CONNECT TO REGISTRY' + logger.error exception.backtrace.join("\n") + NewRelic::Agent.notice_error(exception) redirect_to registrar_login_url, alert: t(:no_connection_to_registry) end From aecd61670a0daa3232ab14cab50329205f394e53 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 11:17:19 +0300 Subject: [PATCH 34/94] Fix rubocop errors, add error message for transfer period #2803 --- app/controllers/epp/domains_controller.rb | 9 ++++ spec/epp/domain_spec.rb | 54 +++++++++++++++++++---- spec/epp/poll_spec.rb | 3 +- spec/epp/session_spec.rb | 4 +- spec/support/epp.rb | 1 + 5 files changed, 60 insertions(+), 11 deletions(-) diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index c7713e3e6..b2a20e2a2 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -196,6 +196,15 @@ class Epp::DomainsController < EppController end def validate_transfer + # period element is disabled for now + if params[:parsed_frame].css('period').any? + epp_errors << { + code: '2307', + msg: I18n.t(:unimplemented_object_service), + value: { obj: 'period' } + } + end + requires 'transfer > transfer' @prefix = 'transfer > transfer >' diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 81ba7e08a..2ae9b6908 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -474,7 +474,9 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': "\ + "[facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' xml = domain_create_xml({ @@ -482,7 +484,9 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': "\ + "[facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' end @@ -572,8 +576,12 @@ describe 'EPP Domain', epp: true do response = epp_plain_request(xml) - response[:results][0][:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'." - response[:results][1][:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': '' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:secDNS-1.1}keyType'." + response[:results][0][:msg].should == + "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': [facet 'minLength'] The value has a "\ + "length of '0'; this underruns the allowed minimum length of '1'." + response[:results][1][:msg].should == + "Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': '' is not a valid value of the atomic "\ + "type '{urn:ietf:params:xml:ns:secDNS-1.1}keyType'." xml = domain_create_xml({}, { _anonymus: [ @@ -836,7 +844,8 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml) - response[:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}keyData': This element is not expected. Expected is ( {urn:ietf:params:xml:ns:secDNS-1.1}dsData )." + response[:msg].should == "Element '{urn:ietf:params:xml:ns:secDNS-1.1}keyData': This element "\ + "is not expected. Expected is ( {urn:ietf:params:xml:ns:secDNS-1.1}dsData )." response[:result_code].should == '2001' end end @@ -1505,7 +1514,9 @@ describe 'EPP Domain', epp: true do it 'returns an error for incorrect op attribute' do response = epp_plain_request(domain_transfer_xml({}, 'bla')) - response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}transfer', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'approve', 'cancel', 'query', 'reject', 'request'}." + response[:msg].should == + "Element '{urn:ietf:params:xml:ns:epp-1.0}transfer', attribute 'op': [facet 'enumeration'] "\ + "The value 'bla' is not an element of the set {'approve', 'cancel', 'query', 'reject', 'request'}." response[:result_code].should == '2001' end @@ -1658,6 +1669,22 @@ describe 'EPP Domain', epp: true do Setting.transfer_wait_time = 0 end + it 'should not transfer when period element is present' do + pw = domain.auth_info + xml = domain_transfer_xml({ + name: { value: domain.name }, + period: { value: '1', attrs: { unit: 'y' } }, + authInfo: { pw: { value: pw } } + }) + + login_as :registrar2 do + response = epp_plain_request(xml) + response[:msg].should == 'Unimplemented object service' + response[:result_code].should == '2307' + response[:parsed].css('value > period').any?.should == true + end + end + ### UPDATE ### it 'should update right away without update pending status' do existing_pw = domain.auth_info @@ -2243,7 +2270,14 @@ describe 'EPP Domain', epp: true do }) response = epp_plain_request(xml) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}status', attribute 's': [facet 'enumeration'] The value 'invalidStatus' is not an element of the set {'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', 'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', 'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', 'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', 'serverTransferProhibited', 'serverUpdateProhibited'}." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}status', attribute 's': "\ + "[facet 'enumeration'] The value 'invalidStatus' is not an element of the set "\ + "{'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', "\ + "'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', "\ + "'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', "\ + "'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', "\ + "'serverTransferProhibited', 'serverUpdateProhibited'}." response[:results][0][:result_code].should == '2001' end @@ -2356,7 +2390,8 @@ describe 'EPP Domain', epp: true do ) response = epp_plain_request(xml) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', "\ + "attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' xml = @epp_xml.domain.renew( @@ -2366,7 +2401,8 @@ describe 'EPP Domain', epp: true do ) response = epp_plain_request(xml) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." + response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', "\ + "attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}." response[:results][0][:result_code].should == '2001' Setting.days_to_renew_domain_before_expire = 90 diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index b26121aca..99e91103c 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -87,7 +87,8 @@ describe 'EPP Poll', epp: true do }) response = epp_plain_request(xml, validate_input: false) - response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}poll', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'ack', 'req'}." + response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}poll', attribute 'op': "\ + "[facet 'enumeration'] The value 'bla' is not an element of the set {'ack', 'req'}." response[:result_code].should == '2001' end diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 44d59e25b..56910c1a3 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -142,7 +142,9 @@ describe 'EPP Session', epp: true do newPW: { value: '' } ), validate_input: false) - response[:msg].should == "Element '{urn:ietf:params:xml:ns:epp-1.0}newPW': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '6'." + response[:msg].should == + "Element '{urn:ietf:params:xml:ns:epp-1.0}newPW': [facet 'minLength'] The value has a "\ + "length of '0'; this underruns the allowed minimum length of '6'." response[:result_code].should == '2001' @api_user.reload diff --git a/spec/support/epp.rb b/spec/support/epp.rb index 8ec87c576..db6b522c5 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -352,6 +352,7 @@ module Epp def domain_transfer_xml(xml_params = {}, op = 'request', custom_params = {}) defaults = { name: { value: next_domain_name }, + period: nil, authInfo: { pw: { value: '98oiewslkfkd', attrs: { roid: 'citizen_1234-REP' } } } From 49845d1d0b160d89c81ef0a0f151503d8688197a Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 11:34:19 +0300 Subject: [PATCH 35/94] Fix rubocop #2803 --- app/models/depp/contact.rb | 2 +- spec/epp/contact_spec.rb | 34 +++++++++++++++++++++++++--------- spec/epp/domain_spec.rb | 4 +++- spec/epp/epp_helper_spec.rb | 2 -- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/app/models/depp/contact.rb b/app/models/depp/contact.rb index ceca67131..316d78818 100644 --- a/app/models/depp/contact.rb +++ b/app/models/depp/contact.rb @@ -208,7 +208,7 @@ module Depp authInfo: { pw: { value: password } } - }, + } }, extension_xml ) diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 047a2a67e..dcd5e79db 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -60,7 +60,10 @@ describe 'EPP Contact', epp: true do it 'fails if request xml is missing' do response = epp_plain_request(@epp_xml.create) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}create': Missing child element(s). Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}postalInfo )." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}create': Missing child element(s). "\ + "Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id, "\ + "{https://epp.tld.ee/schema/contact-eis-1.0.xsd}postalInfo )." response[:results][0][:result_code].should == '2001' end @@ -173,7 +176,9 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension) - response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'." + response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', "\ + "attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds "\ + "the allowed maximum length of '2'." response[:result_code].should == '2001' end @@ -185,7 +190,8 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension) - response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing." + response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute "\ + "'cc' is required but missing." response[:result_code].should == '2001' end @@ -196,7 +202,8 @@ describe 'EPP Contact', epp: true do } } response = create_request({}, extension) - response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'type' is required but missing." + response[:msg].should == "Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute "\ + "'type' is required but missing." response[:result_code].should == '2001' end @@ -309,7 +316,9 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.update) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}update': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}update': Missing child element(s). "\ + "Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." end it 'returns error if obj doesnt exist' do @@ -398,7 +407,8 @@ describe 'EPP Contact', epp: true do }, {} ) - response[:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}id': This element is not expected." + response[:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}id': "\ + "This element is not expected." response[:result_code].should == '2001' @contact.reload.code.should == 'FIRST0:SH8013' @@ -719,7 +729,9 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.delete) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}delete': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}delete': Missing child element(s). "\ + "Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -814,7 +826,9 @@ describe 'EPP Contact', epp: true do it 'fails if request is invalid' do response = epp_plain_request(@epp_xml.check) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}check': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}check': Missing child element(s). "\ + "Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end @@ -868,7 +882,9 @@ describe 'EPP Contact', epp: true do it 'fails if request invalid' do response = epp_plain_request(@epp_xml.info) - response[:results][0][:msg].should == "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}info': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." + response[:results][0][:msg].should == + "Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}info': Missing child element(s). "\ + "Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id )." response[:results][0][:result_code].should == '2001' response[:results].count.should == 1 end diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 2ae9b6908..0f5e4aff4 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -2757,7 +2757,9 @@ describe 'EPP Domain', epp: true do xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'invalid' } }) response = epp_plain_request(xml) - response[:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the set {'all', 'del', 'none', 'sub'}." + response[:msg].should == "Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', "\ + "attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the "\ + "set {'all', 'del', 'none', 'sub'}." response[:result_code].should == '2001' xml = domain_info_xml(name: { value: domain.name, attrs: { hosts: 'sub' } }) diff --git a/spec/epp/epp_helper_spec.rb b/spec/epp/epp_helper_spec.rb index 006baf171..7247877fb 100644 --- a/spec/epp/epp_helper_spec.rb +++ b/spec/epp/epp_helper_spec.rb @@ -4,7 +4,6 @@ describe 'EPP Helper', epp: true do context 'in context of Domain' do before(:all) { @uniq_no = proc { @i ||= 0; @i += 1 } } - # rubocop: disable Metrics/LineLength it 'generates valid transfer xml' do dn = next_domain_name expected = Nokogiri::XML(' @@ -54,6 +53,5 @@ describe 'EPP Helper', epp: true do generated = Nokogiri::XML(xml).to_s.squish generated.should == expected end - # rubocop: enable Metrics/LineLength end end From dd2019082e3cd187ec94944a2033df886856e73a Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 11:44:37 +0300 Subject: [PATCH 36/94] Update epp-examples #2803 --- doc/epp-examples.md | 2946 ++++++++++++++++++++++++------------------- 1 file changed, 1666 insertions(+), 1280 deletions(-) diff --git a/doc/epp-examples.md b/doc/epp-examples.md index ed44a83fd..c26d25426 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -1,7 +1,6 @@ -Run options: include {:focus=>true, :epp=>true} # EPP REQUEST - RESPONSE EXAMPLES -GENERATED AT: 2015-07-20 12:20:02 UTC -EXAMPLE COUNT: 182 +GENERATED AT: 2015-07-28 08:39:28 UTC +EXAMPLE COUNT: 187 --- @@ -45,7 +44,7 @@ RESPONSE: ABC-12345 - ccReg-4920267570 + ccReg-3999773216 @@ -73,33 +72,12 @@ RESPONSE: - - Required parameter missing: create > create > postalInfo > name [name] - - - Required parameter missing: create > create > postalInfo > addr > street [street] - - - Required parameter missing: create > create > postalInfo > addr > city [city] - - - Required parameter missing: create > create > postalInfo > addr > pc [pc] - - - Required parameter missing: create > create > postalInfo > addr > cc [cc] - - - Required parameter missing: create > create > voice [voice] - - - Required parameter missing: create > create > email [email] - - - Required parameter missing: extension > extdata > ident [ident] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}create': Missing child element(s). Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}postalInfo ). ABC-12345 - ccReg-2829680447 + ccReg-5475530912 @@ -150,13 +128,13 @@ RESPONSE: - FIRST0:C2587535 - 2015-07-20T12:20:04Z + FIRST0:6A469D40 + 2015-07-28T08:39:31Z ABC-12345 - ccReg-8333628932 + ccReg-9419100913 @@ -207,13 +185,13 @@ RESPONSE: - FIRST0:CFD72BFA - 2015-07-20T12:20:04Z + FIRST0:9175FF51 + 2015-07-28T08:39:31Z ABC-12345 - ccReg-4302090779 + ccReg-7112806347 @@ -264,13 +242,13 @@ RESPONSE: - FIRST0:E7BBB510 - 2015-07-20T12:20:05Z + FIRST0:B0D47101 + 2015-07-28T08:39:31Z ABC-12345 - ccReg-7603334266 + ccReg-3112027327 @@ -321,13 +299,13 @@ RESPONSE: - FIRST0:1946F17C - 2015-07-20T12:20:05Z + FIRST0:D97D17A8 + 2015-07-28T08:39:31Z ABC-12345 - ccReg-1020907599 + ccReg-8158844070 @@ -380,12 +358,12 @@ RESPONSE: FIRST0:ABC12345 - 2015-07-20T12:20:05Z + 2015-07-28T08:39:32Z ABC-12345 - ccReg-6093271914 + ccReg-6348378603 @@ -438,12 +416,12 @@ RESPONSE: FIRST0:ABC:ABC:12345 - 2015-07-20T12:20:05Z + 2015-07-28T08:39:32Z ABC-12345 - ccReg-2872143839 + ccReg-6309817337 @@ -495,7 +473,111 @@ RESPONSE: ABC-12345 - ccReg-7072544384 + ccReg-3718665628 + + + +``` + +### EPP Contact with valid user create command should not strange characters in custom code + +REQUEST: + +```xml + + + + + + 33&$@@ + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + + + + + 37605030299 + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + is invalid [code] + + + ABC-12345 + ccReg-7046803120 + + + +``` + +### EPP Contact with valid user create command should not strange characters in custom code + +REQUEST: + +```xml + + + + + + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + + + + + 37605030299 + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Contact code is too long, max 100 characters [code] + + + ABC-12345 + ccReg-7830897117 @@ -540,12 +622,118 @@ RESPONSE: - - Ident country code is not valid, should be in ISO_3166-1 alpha 2 format [ident] + + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': [facet 'maxLength'] The value 'WRONG' has a length of '5'; this exceeds the allowed maximum length of '2'. + + + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident', attribute 'cc': 'WRONG' is not a valid value of the atomic type '{https://epp.tld.ee/schema/eis-1.0.xsd}ccType'. ABC-12345 - ccReg-7730182529 + ccReg-0585936448 + + + +``` + +### EPP Contact with valid user create command should return country missing + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + + + + + 1990-22-12 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing. + + + ABC-12345 + ccReg-9395726958 + + + +``` + +### EPP Contact with valid user create command should return country missing + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + test@example.example + + + + + 1990-22-12 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'type' is required but missing. + + + Element '{https://epp.tld.ee/schema/eis-1.0.xsd}ident': The attribute 'cc' is required but missing. + + + ABC-12345 + ccReg-3003187201 @@ -598,12 +786,12 @@ RESPONSE: FIRST0:CID:FIRST0:ABC:ABC:NEW:12345 - 2015-07-20T12:20:07Z + 2015-07-28T08:39:38Z ABC-12345 - ccReg-6222136293 + ccReg-3792142117 @@ -656,12 +844,12 @@ RESPONSE: FIRST0:CID:FIRST0:ABC:CID:ABC:NEW:12345 - 2015-07-20T12:20:07Z + 2015-07-28T08:39:38Z ABC-12345 - ccReg-9080919659 + ccReg-8833719931 @@ -714,12 +902,12 @@ RESPONSE: FIRST0:ABC22 - 2015-07-20T12:20:07Z + 2015-07-28T08:39:39Z ABC-12345 - ccReg-5432573173 + ccReg-9289988831 @@ -772,12 +960,12 @@ RESPONSE: FIRST0:CID2:FIRST0:ABC:ABC:11111 - 2015-07-20T12:20:07Z + 2015-07-28T08:39:39Z ABC-12345 - ccReg-3698130590 + ccReg-8383857357 @@ -830,12 +1018,12 @@ RESPONSE: FIRST0:CID:FIRST0 - 2015-07-20T12:20:07Z + 2015-07-28T08:39:39Z ABC-12345 - ccReg-8343524830 + ccReg-5997788919 @@ -886,13 +1074,13 @@ RESPONSE: - FIRST0:C2E220E5 - 2015-07-20T12:20:07Z + FIRST0:87E70060 + 2015-07-28T08:39:39Z ABC-12345 - ccReg-1230036196 + ccReg-9532742811 @@ -943,13 +1131,13 @@ RESPONSE: - FIRST0:B4E6C044 - 2015-07-20T12:20:07Z + FIRST0:A74EABFE + 2015-07-28T08:39:39Z ABC-12345 - ccReg-1305492733 + ccReg-2995036796 @@ -1001,7 +1189,7 @@ RESPONSE: ABC-12345 - ccReg-6235132526 + ccReg-9068419905 @@ -1053,7 +1241,7 @@ RESPONSE: ABC-12345 - ccReg-0548112175 + ccReg-3667432897 @@ -1081,15 +1269,12 @@ RESPONSE: - - Required parameter missing: add, rem or chg - - - Required parameter missing: update > update > id [id] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}update': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id ). ABC-12345 - ccReg-4283141204 + ccReg-8184249905 @@ -1142,7 +1327,7 @@ RESPONSE: ABC-12345 - ccReg-9934346442 + ccReg-7422710793 @@ -1193,12 +1378,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-20T12:20:10Z + 2015-07-28T08:39:41Z ABC-12345 - ccReg-9640595881 + ccReg-4865022436 @@ -1239,12 +1424,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-20T12:20:10Z + 2015-07-28T08:39:41Z ABC-12345 - ccReg-3267691971 + ccReg-6633367984 @@ -1292,7 +1477,7 @@ RESPONSE: ABC-12345 - ccReg-7922782878 + ccReg-7530163933 @@ -1341,12 +1526,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-20T12:20:10Z + 2015-07-28T08:39:41Z ABC-12345 - ccReg-4465076583 + ccReg-4277646314 @@ -1392,7 +1577,7 @@ RESPONSE: ABC-12345 - ccReg-0386955176 + ccReg-4538846364 @@ -1440,7 +1625,7 @@ RESPONSE: ABC-12345 - ccReg-0382849943 + ccReg-6831340132 @@ -1478,7 +1663,7 @@ RESPONSE: ABC-12345 - ccReg-6132228546 + ccReg-6564840615 @@ -1524,7 +1709,7 @@ RESPONSE: ABC-12345 - ccReg-1914602917 + ccReg-5442863323 @@ -1577,7 +1762,7 @@ RESPONSE: ABC-12345 - ccReg-1060982386 + ccReg-8528718455 @@ -1623,15 +1808,12 @@ RESPONSE: - - Object does not exist - - FIRST0:SH8013NOTPOSSIBLETOUPDATE - + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}id': This element is not expected. ABC-12345 - ccReg-0568353576 + ccReg-4331200914 @@ -1682,7 +1864,7 @@ RESPONSE: ABC-12345 - ccReg-9542690815 + ccReg-4397523800 @@ -1733,7 +1915,7 @@ RESPONSE: ABC-12345 - ccReg-6359354372 + ccReg-7928150587 @@ -1784,7 +1966,7 @@ RESPONSE: ABC-12345 - ccReg-1556756909 + ccReg-3817458970 @@ -1802,7 +1984,7 @@ REQUEST: FIRST0:SH8013 - Payment overdue. + Payment overdue. @@ -1823,7 +2005,7 @@ RESPONSE: ABC-12345 - ccReg-4931159448 + ccReg-3807652405 @@ -1865,12 +2047,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-20T12:20:10Z + 2015-07-28T08:39:41Z ABC-12345 - ccReg-3983107320 + ccReg-8133702938 @@ -1915,7 +2097,7 @@ RESPONSE: ABC-12345 - ccReg-7993909097 + ccReg-7011374408 @@ -1954,18 +2136,12 @@ RESPONSE: - - Command completed successfully + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}voice': This element is not expected. Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}status ). - - - FIRST0:SH8013 - 2015-07-20T12:20:10Z - - ABC-12345 - ccReg-4048395100 + ccReg-7610710976 @@ -2009,7 +2185,7 @@ RESPONSE: ABC-12345 - ccReg-9680507822 + ccReg-6395479303 @@ -2045,15 +2221,12 @@ RESPONSE: - - Required parameter missing - phone [phone] - - - Phone nr is invalid [phone] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}authInfo': This element is not expected. Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}add, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}rem, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}chg ). ABC-12345 - ccReg-1188969737 + ccReg-7007003785 @@ -2092,18 +2265,12 @@ RESPONSE: - - Command completed successfully + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}authInfo': This element is not expected. Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}add, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}rem, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}chg ). - - - FIRST0:SH8013 - 2015-07-20T12:20:10Z - - ABC-12345 - ccReg-6297323206 + ccReg-8061878233 @@ -2142,18 +2309,12 @@ RESPONSE: - - Command completed successfully + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}authInfo': This element is not expected. Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}add, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}rem, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}chg ). - - - FIRST0:SH8013 - 2015-07-20T12:20:10Z - - ABC-12345 - ccReg-0548767531 + ccReg-3091851486 @@ -2195,18 +2356,12 @@ RESPONSE: - - Command completed successfully + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}authInfo': This element is not expected. Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}add, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}rem, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}chg ). - - - FIRST0:SH8013 - 2015-07-20T12:20:10Z - - ABC-12345 - ccReg-7386099764 + ccReg-8609322144 @@ -2244,18 +2399,12 @@ RESPONSE: - - Command completed successfully + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}authInfo': This element is not expected. Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}add, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}rem, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}chg ). - - - FIRST0:SH8013 - 2015-07-20T12:20:10Z - - ABC-12345 - ccReg-0459626647 + ccReg-0582559112 @@ -2272,14 +2421,14 @@ REQUEST: FIRST0:SH8013 - - password - - + - not important + - + + password + + ABC-12345 @@ -2293,12 +2442,18 @@ RESPONSE: - - Parameter value policy error. Org must be blank: postalInfo > org [org] + + Command completed successfully + + + FIRST0:SH8013 + 2015-07-28T08:39:41Z + + ABC-12345 - ccReg-0963745173 + ccReg-8655942919 @@ -2336,12 +2491,12 @@ RESPONSE: - - Required parameter missing - name [name] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}authInfo': This element is not expected. Expected is one of ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}add, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}rem, {https://epp.tld.ee/schema/contact-eis-1.0.xsd}chg ). ABC-12345 - ccReg-1128233182 + ccReg-9481106190 @@ -2369,12 +2524,12 @@ RESPONSE: - - Required parameter missing: delete > delete > id [id] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}delete': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id ). ABC-12345 - ccReg-3956770183 + ccReg-5578564225 @@ -2421,7 +2576,7 @@ RESPONSE: ABC-12345 - ccReg-6096556295 + ccReg-6663525094 @@ -2437,7 +2592,7 @@ REQUEST: - FIRST0:SH737607533 + FIRST0:SH231039313 password @@ -2465,7 +2620,7 @@ RESPONSE: ABC-12345 - ccReg-4335042546 + ccReg-3780043277 @@ -2481,7 +2636,7 @@ REQUEST: - FIRST0:SH348236744 + FIRST0:SH495814614 wrong password @@ -2509,7 +2664,7 @@ RESPONSE: ABC-12345 - ccReg-3107421005 + ccReg-7212720521 @@ -2525,7 +2680,7 @@ REQUEST: - FIRST0:SH982687135 + FIRST0:SH345416025 ABC-12345 @@ -2544,7 +2699,7 @@ RESPONSE: ABC-12345 - ccReg-2771879725 + ccReg-6437000685 @@ -2560,7 +2715,7 @@ REQUEST: - FIRST0:SH648273286 + FIRST0:SH527033126 password @@ -2588,7 +2743,7 @@ RESPONSE: ABC-12345 - ccReg-2141698310 + ccReg-1807855170 @@ -2636,7 +2791,7 @@ RESPONSE: ABC-12345 - ccReg-2385731488 + ccReg-0288992099 @@ -2650,7 +2805,7 @@ REQUEST: - FIRST0:SH129859989 + FIRST0:SH031616179 password @@ -2678,7 +2833,7 @@ RESPONSE: ABC-12345 - ccReg-6081027274 + ccReg-4336841702 @@ -2724,7 +2879,7 @@ RESPONSE: ABC-12345 - ccReg-0519720508 + ccReg-8729288024 @@ -2772,7 +2927,7 @@ RESPONSE: ABC-12345 - ccReg-4115551482 + ccReg-6840346616 @@ -2786,7 +2941,7 @@ REQUEST: - FIRST0:SH5773127110 + FIRST0:SH2297814310 ABC-12345 @@ -2805,7 +2960,7 @@ RESPONSE: ABC-12345 - ccReg-4744405315 + ccReg-3383228806 @@ -2851,7 +3006,7 @@ RESPONSE: ABC-12345 - ccReg-0830971889 + ccReg-4682199982 @@ -2899,7 +3054,7 @@ RESPONSE: ABC-12345 - ccReg-0164388863 + ccReg-6469460670 @@ -2913,7 +3068,7 @@ REQUEST: - FIRST0:SH8279968911 + FIRST0:SH3326380711 wrong password @@ -2941,7 +3096,7 @@ RESPONSE: ABC-12345 - ccReg-3707602954 + ccReg-7404986506 @@ -2987,7 +3142,7 @@ RESPONSE: ABC-12345 - ccReg-6825816378 + ccReg-7294017342 @@ -3015,12 +3170,12 @@ RESPONSE: - - Required parameter missing: check > check > id [id] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}check': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id ). ABC-12345 - ccReg-9788764550 + ccReg-7052563758 @@ -3067,7 +3222,7 @@ RESPONSE: ABC-12345 - ccReg-9839785016 + ccReg-9831020858 @@ -3114,7 +3269,7 @@ RESPONSE: ABC-12345 - ccReg-9362972292 + ccReg-3695978327 @@ -3142,12 +3297,12 @@ RESPONSE: - - Required parameter missing: info > info > id [id] + + Element '{https://epp.tld.ee/schema/contact-eis-1.0.xsd}info': Missing child element(s). Expected is ( {https://epp.tld.ee/schema/contact-eis-1.0.xsd}id ). ABC-12345 - ccReg-3116135051 + ccReg-0977011305 @@ -3188,7 +3343,7 @@ RESPONSE: ABC-12345 - ccReg-6543073909 + ccReg-5298387301 @@ -3240,10 +3395,10 @@ RESPONSE: +372.12345678 - christop@rohanwiegand.name + adaline.farrell@wilkinson.org fixed registrar TEST-CREATOR - 2015-07-20T12:20:28Z + 2015-07-28T08:40:06Z password @@ -3256,7 +3411,7 @@ RESPONSE: ABC-12345 - ccReg-4281590418 + ccReg-5155368245 @@ -3308,10 +3463,10 @@ RESPONSE: +372.12345678 - christop@rohanwiegand.name + adaline.farrell@wilkinson.org fixed registrar TEST-CREATOR - 2015-07-20T12:20:28Z + 2015-07-28T08:40:06Z password @@ -3324,7 +3479,7 @@ RESPONSE: ABC-12345 - ccReg-3537755285 + ccReg-5763471786 @@ -3376,10 +3531,10 @@ RESPONSE: +372.12345678 - christop@rohanwiegand.name + adaline.farrell@wilkinson.org registrar1 TEST-CREATOR - 2015-07-20T12:20:28Z + 2015-07-28T08:40:06Z password @@ -3392,7 +3547,7 @@ RESPONSE: ABC-12345 - ccReg-9599330280 + ccReg-1407507322 @@ -3408,7 +3563,7 @@ REQUEST: - FIRST0:SH025726680 + FIRST0:SH401752550 wrong-pw @@ -3430,11 +3585,11 @@ RESPONSE: - FIRST0:SH025726680 + FIRST0:SH401752550 EIS-1 - Mya Schultz0 + Gloria Boyer MD0 Short street 11 Tallinn @@ -3444,10 +3599,10 @@ RESPONSE: +372.12345678 - christop@rohanwiegand.name + adaline.farrell@wilkinson.org registrar1 TEST-CREATOR - 2015-07-20T12:20:03Z + 2015-07-28T08:39:30Z password @@ -3460,7 +3615,7 @@ RESPONSE: ABC-12345 - ccReg-6604068273 + ccReg-6798027147 @@ -3502,7 +3657,7 @@ RESPONSE: EIS-32 - Salma Braun I15 + Mr. Brooks Crooks15 Short street 11 Tallinn @@ -3512,10 +3667,10 @@ RESPONSE: +372.12345678 - christop@rohanwiegand.name + adaline.farrell@wilkinson.org fixed registrar TEST-CREATOR - 2015-07-20T12:20:29Z + 2015-07-28T08:40:06Z password @@ -3528,7 +3683,7 @@ RESPONSE: ABC-12345 - ccReg-9069364744 + ccReg-3521737420 @@ -3576,7 +3731,7 @@ RESPONSE: ABC-12345 - ccReg-2255565060 + ccReg-9495273454 @@ -3590,7 +3745,7 @@ REQUEST: - FIRST0:SH025726680 + FIRST0:SH401752550 password @@ -3612,11 +3767,11 @@ RESPONSE: - FIRST0:SH025726680 + FIRST0:SH401752550 EIS-1 - Mya Schultz0 + Gloria Boyer MD0 Short street 11 Tallinn @@ -3626,10 +3781,10 @@ RESPONSE: +372.12345678 - christop@rohanwiegand.name + adaline.farrell@wilkinson.org registrar1 TEST-CREATOR - 2015-07-20T12:20:03Z + 2015-07-28T08:39:30Z password @@ -3642,7 +3797,7 @@ RESPONSE: ABC-12345 - ccReg-4126996626 + ccReg-7991464495 @@ -3688,7 +3843,7 @@ RESPONSE: ABC-12345 - ccReg-3158238134 + ccReg-4527051077 @@ -3736,7 +3891,7 @@ RESPONSE: ABC-12345 - ccReg-8816679423 + ccReg-0913409657 @@ -3750,7 +3905,7 @@ REQUEST: - FIRST0:SH025726680 + FIRST0:SH401752550 wrong-pw @@ -3772,7 +3927,7 @@ RESPONSE: ABC-12345 - ccReg-8022868547 + ccReg-6286749211 @@ -3818,7 +3973,7 @@ RESPONSE: ABC-12345 - ccReg-8211008101 + ccReg-8291798513 @@ -3866,7 +4021,7 @@ RESPONSE: ABC-12345 - ccReg-3690078288 + ccReg-5404035767 @@ -3880,7 +4035,7 @@ REQUEST: - FIRST0:SH025726680 + FIRST0:SH401752550 @@ -3902,20 +4057,20 @@ RESPONSE: - FIRST0:SH025726680 + FIRST0:SH401752550 EIS-1 - Mya Schultz0 + Gloria Boyer MD0 registrar1 TEST-CREATOR - 2015-07-20T12:20:03Z + 2015-07-28T08:39:30Z ABC-12345 - ccReg-4424374395 + ccReg-2003839888 @@ -3961,7 +4116,7 @@ RESPONSE: ABC-12345 - ccReg-8805009598 + ccReg-5982274752 @@ -4007,7 +4162,7 @@ RESPONSE: ABC-12345 - ccReg-9912536318 + ccReg-1309091299 @@ -4023,7 +4178,7 @@ REQUEST: - example570502870390653.ee + example92166977555993338.ee 1 @@ -4070,7 +4225,7 @@ RESPONSE: ABC-12345 - ccReg-5417579954 + ccReg-0406877402 @@ -4086,7 +4241,7 @@ REQUEST: - example75362879070324119.ee + example81690264966073237.ee 1 @@ -4142,7 +4297,7 @@ RESPONSE: ABC-12345 - ccReg-4615781545 + ccReg-7250362476 @@ -4186,7 +4341,7 @@ RESPONSE: ABC-12345 - ccReg-2345416164 + ccReg-0791690819 @@ -4202,7 +4357,7 @@ REQUEST: - example33195882581021572.ee + example32543506110306742.ee 1 @@ -4249,14 +4404,14 @@ RESPONSE: - example33195882581021572.ee - 2015-07-20T12:20:33Z - 2016-07-20T12:20:33Z + example32543506110306742.ee + 2015-07-28T08:40:12Z + 2016-07-28T08:40:12Z ABC-12345 - ccReg-1147889264 + ccReg-3409698461 @@ -4272,7 +4427,7 @@ REQUEST: - example29083099037202800.ee + example36382345567850627.ee 1 @@ -4311,14 +4466,14 @@ RESPONSE: - example29083099037202800.ee - 2015-07-20T12:20:34Z - 2016-07-20T12:20:34Z + example36382345567850627.ee + 2015-07-28T08:40:12Z + 2016-07-28T08:40:12Z ABC-12345 - ccReg-6390466416 + ccReg-4473161202 @@ -4334,14 +4489,14 @@ REQUEST: - example50220100704932421.ee + example94744851802697081.ee 1 - ns1.example50220100704932421.ee + ns1.example94744851802697081.ee - ns2.example50220100704932421.ee + ns2.example94744851802697081.ee FIXED:CITIZEN_1234 @@ -4379,7 +4534,7 @@ RESPONSE: ABC-12345 - ccReg-0487604546 + ccReg-0945142666 @@ -4442,7 +4597,7 @@ RESPONSE: ABC-12345 - ccReg-8422952576 + ccReg-1975664747 @@ -4505,7 +4660,7 @@ RESPONSE: ABC-12345 - ccReg-9059359716 + ccReg-1640127046 @@ -4569,7 +4724,7 @@ RESPONSE: ABC-12345 - ccReg-7880510278 + ccReg-2908502858 @@ -4636,13 +4791,13 @@ RESPONSE: 1162.ee - 2015-07-20T12:20:38Z - 2016-07-20T12:20:38Z + 2015-07-28T08:40:17Z + 2016-07-28T08:40:17Z ABC-12345 - ccReg-5735880569 + ccReg-0275498048 @@ -4708,7 +4863,7 @@ RESPONSE: ABC-12345 - ccReg-4380789258 + ccReg-9470981751 @@ -4724,7 +4879,7 @@ REQUEST: - example60325525827762784.ee + example62168642411513599.ee 1 @@ -4767,7 +4922,7 @@ RESPONSE: ABC-12345 - ccReg-4021668229 + ccReg-0968519360 @@ -4783,7 +4938,7 @@ REQUEST: - example42884591161561847.ee + example71800352143417997.ee 1 FIXED:CITIZEN_1234 FIXED:SH8013 @@ -4823,7 +4978,7 @@ RESPONSE: ABC-12345 - ccReg-0839423432 + ccReg-7839854930 @@ -4839,7 +4994,7 @@ REQUEST: - example51822641645885173.ee + example71680402331588779.ee 1 @@ -4920,7 +5075,7 @@ RESPONSE: ABC-12345 - ccReg-2879314203 + ccReg-3550426764 @@ -4936,7 +5091,7 @@ REQUEST: - example95701265975718561.ee + example68109979538689428.ee 1 @@ -4990,7 +5145,7 @@ RESPONSE: ABC-12345 - ccReg-5350649366 + ccReg-3024443751 @@ -5006,7 +5161,7 @@ REQUEST: - example79689508380822639.ee + example76831955690582435.ee 1 ns1.example.ee @@ -5047,7 +5202,7 @@ RESPONSE: ABC-12345 - ccReg-8596117535 + ccReg-6323264384 @@ -5063,7 +5218,7 @@ REQUEST: - example65830382884082211.ee + example32514723684684037.ee 1 @@ -5105,14 +5260,14 @@ RESPONSE: - example65830382884082211.ee - 2015-07-20T12:20:45Z - 2016-07-20T12:20:45Z + example32514723684684037.ee + 2015-07-28T08:40:23Z + 2016-07-28T08:40:23Z ABC-12345 - ccReg-5868012961 + ccReg-5056598055 @@ -5128,7 +5283,7 @@ REQUEST: - example37104311749905114.ee + example40338285586899571.ee 1 @@ -5179,7 +5334,7 @@ RESPONSE: ABC-12345 - ccReg-0235011217 + ccReg-0826897719 @@ -5195,7 +5350,7 @@ REQUEST: - example17283406877102608.ee + example66186778295502856.ee 365 @@ -5242,14 +5397,14 @@ RESPONSE: - example17283406877102608.ee - 2015-07-20T12:20:47Z - 2016-07-20T12:20:47Z + example66186778295502856.ee + 2015-07-28T08:40:25Z + 2016-07-28T08:40:25Z ABC-12345 - ccReg-1880838523 + ccReg-1614664137 @@ -5265,7 +5420,7 @@ REQUEST: - example42530658953623496.ee + example91954080942379032.ee 2 @@ -5312,14 +5467,14 @@ RESPONSE: - example42530658953623496.ee - 2015-07-20T12:20:47Z - 2017-07-20T12:20:47Z + example91954080942379032.ee + 2015-07-28T08:40:25Z + 2017-07-28T08:40:25Z ABC-12345 - ccReg-8325021198 + ccReg-4703652719 @@ -5335,7 +5490,7 @@ REQUEST: - example20254148699039299.ee + example30928593583996919.ee 36 @@ -5382,14 +5537,14 @@ RESPONSE: - example20254148699039299.ee - 2015-07-20T12:20:47Z - 2018-07-20T12:20:47Z + example30928593583996919.ee + 2015-07-28T08:40:26Z + 2018-07-28T08:40:26Z ABC-12345 - ccReg-7073164530 + ccReg-7270105536 @@ -5405,7 +5560,7 @@ REQUEST: - example41984719173309545.ee + example46362933949869671.ee ns1.example.net @@ -5451,14 +5606,14 @@ RESPONSE: - example41984719173309545.ee - 2015-07-20T12:20:48Z - 2016-07-20T12:20:48Z + example46362933949869671.ee + 2015-07-28T08:40:26Z + 2016-07-28T08:40:26Z ABC-12345 - ccReg-4589575398 + ccReg-1881376659 @@ -5474,7 +5629,7 @@ REQUEST: - example85680911639912537.ee + example11714535017331079.ee 367 @@ -5524,7 +5679,7 @@ RESPONSE: ABC-12345 - ccReg-6760895164 + ccReg-5484931345 @@ -5540,7 +5695,7 @@ REQUEST: - example80718300051718809.ee + example12063060146758107.ee 1 @@ -5582,12 +5737,15 @@ RESPONSE: - - Attribute is invalid: unit + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}. + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': '' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}pUnitType'. ABC-12345 - ccReg-3281076662 + ccReg-8109184091 @@ -5601,7 +5759,7 @@ REQUEST: - example53736479297046054.ee + example22134060080142573.ee 1 @@ -5643,12 +5801,15 @@ RESPONSE: - - Attribute is invalid: unit + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}. + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': 'bla' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}pUnitType'. ABC-12345 - ccReg-9798834679 + ccReg-6082364829 @@ -5664,7 +5825,7 @@ REQUEST: - example18929120996156482.ee + example81422504470924299.ee 1 @@ -5723,14 +5884,14 @@ RESPONSE: - example18929120996156482.ee - 2015-07-20T12:20:51Z - 2016-07-20T12:20:51Z + example81422504470924299.ee + 2015-07-28T08:40:30Z + 2016-07-28T08:40:30Z ABC-12345 - ccReg-3259504282 + ccReg-1274053409 @@ -5746,7 +5907,7 @@ REQUEST: - example92492494814312141.ee + example52530934380418051.ee 1 @@ -5796,6 +5957,82 @@ REQUEST: RESPONSE: +```xml + + + + + Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '1'. + + + Element '{urn:ietf:params:xml:ns:secDNS-1.1}pubKey': '' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:secDNS-1.1}keyType'. + + + ABC-12345 + ccReg-0039779987 + + + +``` + +REQUEST: + +```xml + + + + + + example6111657126731846.ee + 1 + + + ns1.example.net + 192.0.2.2 + 1080:0:0:0:8:800:200C:417A + + + ns2.example.net + + + FIXED:CITIZEN_1234 + FIXED:SH8013 + FIXED:SH8013 + FIXED:SH801333 + + + + + + 250 + 4 + 9 + AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 + + + 1 + 3 + 10 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + 256 + 5 + 254 + AwEAAbuFiHS4jZL7ZQKvEPBmsbceNHTVYpEVMdxz2A6YCjlZTEoAH3qK + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + ```xml @@ -5830,9 +6067,6 @@ RESPONSE: 1 - - Public key is missing [public_key] - Valid protocols are: 3 [protocol] @@ -5841,7 +6075,7 @@ RESPONSE: ABC-12345 - ccReg-0230853937 + ccReg-5415301002 @@ -5857,7 +6091,7 @@ REQUEST: - example62629375729901991.ee + example59960668723180884.ee 1 @@ -5913,7 +6147,7 @@ RESPONSE: ABC-12345 - ccReg-7041910495 + ccReg-3029612280 @@ -5929,7 +6163,7 @@ REQUEST: - example96324057439285023.ee + example96012563680688440.ee 1 @@ -5982,7 +6216,7 @@ RESPONSE: ABC-12345 - ccReg-8684907061 + ccReg-0186058439 @@ -5998,7 +6232,7 @@ REQUEST: - example7613404788385072.ee + example76656279799751526.ee 1 @@ -6045,14 +6279,14 @@ RESPONSE: - example7613404788385072.ee - 2015-07-20T12:20:55Z - 2016-07-20T12:20:55Z + example76656279799751526.ee + 2015-07-28T08:40:35Z + 2016-07-28T08:40:35Z ABC-12345 - ccReg-1502217297 + ccReg-2063281633 @@ -6068,7 +6302,7 @@ REQUEST: - example49277921871401732.ee + example70580501288966544.ee 1 @@ -6121,14 +6355,14 @@ RESPONSE: - example49277921871401732.ee - 2015-07-20T12:20:55Z - 2016-07-20T12:20:55Z + example70580501288966544.ee + 2015-07-28T08:40:35Z + 2016-07-28T08:40:35Z ABC-12345 - ccReg-7793749692 + ccReg-4381859223 @@ -6144,7 +6378,7 @@ REQUEST: - example56030289069030352.ee + example95275486168393163.ee 1 @@ -6197,7 +6431,7 @@ RESPONSE: ABC-12345 - ccReg-6717955892 + ccReg-3354909144 @@ -6213,7 +6447,7 @@ REQUEST: - example75160608584221394.ee + example97367469702829730.ee 1 @@ -6260,7 +6494,7 @@ RESPONSE: ABC-12345 - ccReg-5278324812 + ccReg-8644792351 @@ -6276,7 +6510,7 @@ REQUEST: - example3956990749578865.ee + example70071198549943103.ee 1 @@ -6324,12 +6558,12 @@ RESPONSE: - - Mutually exclusive parameters: extension > create > keyData, extension > create > dsData + + Element '{urn:ietf:params:xml:ns:secDNS-1.1}keyData': This element is not expected. Expected is ( {urn:ietf:params:xml:ns:secDNS-1.1}dsData ). ABC-12345 - ccReg-2075438432 + ccReg-8173091592 @@ -6345,7 +6579,7 @@ REQUEST: - example75024791554839013.ee + example22431835510518513.ee 1 @@ -6390,14 +6624,14 @@ RESPONSE: - example75024791554839013.ee - 2015-07-20T12:20:59Z - 2016-07-20T12:20:59Z + example22431835510518513.ee + 2015-07-28T08:40:39Z + 2016-07-28T08:40:39Z ABC-12345 - ccReg-9163696822 + ccReg-2819985278 @@ -6413,7 +6647,7 @@ REQUEST: - example53305717298495096.ee + example59566819674530307.ee 1 @@ -6458,7 +6692,7 @@ RESPONSE: ABC-12345 - ccReg-3120626473 + ccReg-6708083266 @@ -6474,7 +6708,7 @@ REQUEST: - example32384352982726855.ee + example72083543502407430.ee 1 @@ -6522,7 +6756,7 @@ RESPONSE: ABC-12345 - ccReg-5596974110 + ccReg-7325897703 @@ -6570,7 +6804,7 @@ RESPONSE: ABC-12345 - ccReg-6631909729 + ccReg-4047445422 @@ -6586,7 +6820,7 @@ REQUEST: domain1.ee - 42ae0ae9efbfe30e392c68f43868c156 + 512701cc6a8455e43612526cfd613ef1 @@ -6614,15 +6848,15 @@ RESPONSE: domain1.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:01Z + 2015-07-28T08:40:42Z REGDOMAIN1 - 2015-07-20T12:21:01Z - 2016-07-20T12:21:01Z + 2015-07-28T08:40:42Z + 2016-07-28T08:40:41Z ABC-12345 - ccReg-2214642281 + ccReg-2882098037 @@ -6668,7 +6902,7 @@ RESPONSE: ABC-12345 - ccReg-1292310412 + ccReg-4020170558 @@ -6696,23 +6930,23 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-20T12:21:01Z - Domain transfer was approved, associated contacts were: ["FIXED:SH0793743512", "FIXED:SH0934542813"] and registrant was FIXED:REGISTRANT628212490 + 2015-07-28T08:40:42Z + Domain transfer was approved, associated contacts were: ["FIXED:SH0465812013", "FIXED:SH3835271712"] and registrant was FIXED:REGISTRANT779976690 domain1.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:01Z + 2015-07-28T08:40:42Z REGDOMAIN1 - 2015-07-20T12:21:01Z - 2016-07-20T12:21:01Z + 2015-07-28T08:40:42Z + 2016-07-28T08:40:41Z ABC-12345 - ccReg-9388013169 + ccReg-2433533762 @@ -6728,7 +6962,7 @@ REQUEST: domain1.ee - 0e24645ded1d5674883359a3a6efc6d8 + 3c706b7554d122c07c3a96255b62f728 @@ -6756,15 +6990,15 @@ RESPONSE: domain1.ee pending REGDOMAIN1 - 2015-07-20T12:21:02Z + 2015-07-28T08:40:42Z REGDOMAIN2 - 2015-07-20T13:21:02Z - 2016-07-20T12:21:01Z + 2015-07-28T09:40:42Z + 2016-07-28T08:40:41Z ABC-12345 - ccReg-9029270554 + ccReg-9163815770 @@ -6780,7 +7014,7 @@ REQUEST: domain1.ee - 0e24645ded1d5674883359a3a6efc6d8 + 3c706b7554d122c07c3a96255b62f728 @@ -6808,15 +7042,15 @@ RESPONSE: domain1.ee pending REGDOMAIN1 - 2015-07-20T12:21:02Z + 2015-07-28T08:40:42Z REGDOMAIN2 - 2015-07-20T13:21:02Z - 2016-07-20T12:21:01Z + 2015-07-28T09:40:42Z + 2016-07-28T08:40:41Z ABC-12345 - ccReg-0388826817 + ccReg-1344906774 @@ -6862,7 +7096,7 @@ RESPONSE: ABC-12345 - ccReg-0498670065 + ccReg-2023826073 @@ -6890,7 +7124,7 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-20T12:21:02Z + 2015-07-28T08:40:42Z Transfer requested. @@ -6898,15 +7132,15 @@ RESPONSE: domain1.ee pending REGDOMAIN1 - 2015-07-20T12:21:02Z + 2015-07-28T08:40:42Z REGDOMAIN2 - 2015-07-20T13:21:02Z - 2016-07-20T12:21:01Z + 2015-07-28T09:40:42Z + 2016-07-28T08:40:41Z ABC-12345 - ccReg-6099337553 + ccReg-1404467939 @@ -6952,7 +7186,7 @@ RESPONSE: ABC-12345 - ccReg-6330709065 + ccReg-8545555548 @@ -6998,7 +7232,7 @@ RESPONSE: ABC-12345 - ccReg-0823078626 + ccReg-8253885703 @@ -7028,7 +7262,7 @@ RESPONSE: ABC-12345 - ccReg-3407108277 + ccReg-3483466836 @@ -7074,7 +7308,7 @@ RESPONSE: ABC-12345 - ccReg-8158959328 + ccReg-4285977126 @@ -7122,7 +7356,7 @@ RESPONSE: ABC-12345 - ccReg-7908078276 + ccReg-4057108889 @@ -7138,7 +7372,7 @@ REQUEST: domain2.ee - cc8d4d0ec06659816e33ffa712bfcb96 + 5d98f2cbe11306469ce55447e995a1c4 @@ -7166,15 +7400,15 @@ RESPONSE: domain2.ee pending REGDOMAIN2 - 2015-07-20T12:21:03Z + 2015-07-28T08:40:43Z REGDOMAIN1 - 2015-07-20T13:21:03Z - 2016-07-20T12:21:02Z + 2015-07-28T09:40:43Z + 2016-07-28T08:40:43Z ABC-12345 - ccReg-7665340028 + ccReg-4612548825 @@ -7220,7 +7454,7 @@ RESPONSE: ABC-12345 - ccReg-5828166420 + ccReg-4051705615 @@ -7266,7 +7500,7 @@ RESPONSE: ABC-12345 - ccReg-0390925631 + ccReg-1410613698 @@ -7282,7 +7516,7 @@ REQUEST: domain2.ee - cc8d4d0ec06659816e33ffa712bfcb96 + 5d98f2cbe11306469ce55447e995a1c4 @@ -7310,15 +7544,15 @@ RESPONSE: domain2.ee pending REGDOMAIN2 - 2015-07-20T12:21:03Z + 2015-07-28T08:40:43Z REGDOMAIN1 - 2015-07-20T13:21:03Z - 2016-07-20T12:21:02Z + 2015-07-28T09:40:43Z + 2016-07-28T08:40:43Z ABC-12345 - ccReg-7815459019 + ccReg-2313898331 @@ -7364,7 +7598,7 @@ RESPONSE: ABC-12345 - ccReg-5696383242 + ccReg-5075928895 @@ -7412,7 +7646,7 @@ RESPONSE: ABC-12345 - ccReg-0361532903 + ccReg-8432415801 @@ -7428,7 +7662,7 @@ REQUEST: domain3.ee - 11a06f18e5e558f6b64753eaaa49173c + d21cc5784da4f1cd0a69ebccd64ea825 @@ -7451,15 +7685,15 @@ RESPONSE: domain3.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:03Z + 2015-07-28T08:40:44Z REGDOMAIN1 - 2015-07-20T12:21:03Z - 2016-07-20T12:21:03Z + 2015-07-28T08:40:44Z + 2016-07-28T08:40:44Z ABC-12345 - ccReg-1922684214 + ccReg-8319808701 @@ -7505,7 +7739,7 @@ RESPONSE: ABC-12345 - ccReg-6625998366 + ccReg-3709709960 @@ -7553,7 +7787,7 @@ RESPONSE: ABC-12345 - ccReg-6115177494 + ccReg-7289638867 @@ -7569,7 +7803,7 @@ REQUEST: domain4.ee - fc66d69a22fd1bcdbf3be76be431b09d + c542d3f99353e1d042716d824f6fec12 @@ -7592,15 +7826,15 @@ RESPONSE: domain4.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:04Z + 2015-07-28T08:40:45Z REGDOMAIN1 - 2015-07-20T12:21:04Z - 2016-07-20T12:21:04Z + 2015-07-28T08:40:45Z + 2016-07-28T08:40:45Z ABC-12345 - ccReg-6602340224 + ccReg-6544417100 @@ -7646,7 +7880,7 @@ RESPONSE: ABC-12345 - ccReg-0189478310 + ccReg-9728924318 @@ -7694,7 +7928,7 @@ RESPONSE: ABC-12345 - ccReg-1849244891 + ccReg-4703756087 @@ -7710,7 +7944,7 @@ REQUEST: domain5.ee - 4d5a71cc6c7d0ddcf59d2816b42e98d3 + d4bf9e0bc0fd09c7252541a194473cec @@ -7733,15 +7967,15 @@ RESPONSE: domain5.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:04Z + 2015-07-28T08:40:46Z REGDOMAIN1 - 2015-07-20T12:21:04Z - 2016-07-20T12:21:04Z + 2015-07-28T08:40:46Z + 2016-07-28T08:40:46Z ABC-12345 - ccReg-4389324014 + ccReg-1877217438 @@ -7787,7 +8021,7 @@ RESPONSE: ABC-12345 - ccReg-1406038981 + ccReg-3796353322 @@ -7835,7 +8069,7 @@ RESPONSE: ABC-12345 - ccReg-9456181034 + ccReg-3792624699 @@ -7851,7 +8085,7 @@ REQUEST: domain8.ee - 2ec2e6c76768ad88df0dbeba38f710e6 + 0bd19effb6079c4790d1475bd0199723 @@ -7874,15 +8108,15 @@ RESPONSE: domain8.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:05Z + 2015-07-28T08:40:47Z REGDOMAIN1 - 2015-07-20T12:21:05Z - 2016-07-20T12:21:05Z + 2015-07-28T08:40:47Z + 2016-07-28T08:40:46Z ABC-12345 - ccReg-8961033045 + ccReg-2654465761 @@ -7928,7 +8162,7 @@ RESPONSE: ABC-12345 - ccReg-3331669362 + ccReg-9967282082 @@ -7976,7 +8210,7 @@ RESPONSE: ABC-12345 - ccReg-8610740309 + ccReg-7212461778 @@ -7992,7 +8226,7 @@ REQUEST: domain9.ee - d36b447200a1aaac2bd7b5a878652bf5 + 10eadc71cf7e6f1e87e1bf54bc99e263 @@ -8015,15 +8249,15 @@ RESPONSE: domain9.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:06Z + 2015-07-28T08:40:48Z REGDOMAIN1 - 2015-07-20T12:21:06Z - 2016-07-20T12:21:05Z + 2015-07-28T08:40:48Z + 2016-07-28T08:40:47Z ABC-12345 - ccReg-4924038906 + ccReg-1877104282 @@ -8069,7 +8303,7 @@ RESPONSE: ABC-12345 - ccReg-9466435181 + ccReg-6337086891 @@ -8117,7 +8351,7 @@ RESPONSE: ABC-12345 - ccReg-1012066886 + ccReg-0660234392 @@ -8133,7 +8367,7 @@ REQUEST: domain11.ee - cbb169bf8cd2f5ba0a3fcebaf7fa97fb + 5d943994996a6a851e7247db3d2c1c4a @@ -8156,15 +8390,15 @@ RESPONSE: domain11.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:06Z + 2015-07-28T08:40:48Z REGDOMAIN1 - 2015-07-20T12:21:06Z - 2016-07-20T12:21:06Z + 2015-07-28T08:40:48Z + 2016-07-28T08:40:48Z ABC-12345 - ccReg-3666773781 + ccReg-9157975420 @@ -8210,7 +8444,7 @@ RESPONSE: ABC-12345 - ccReg-8539521284 + ccReg-6402981411 @@ -8258,7 +8492,7 @@ RESPONSE: ABC-12345 - ccReg-9934829298 + ccReg-4407801058 @@ -8274,7 +8508,7 @@ REQUEST: domain14.ee - 7590473cda31d3a0b3c2d8ffbf410b7c + 75065639f9945045256b9c5fe2a8fadc @@ -8297,15 +8531,15 @@ RESPONSE: domain14.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:07Z + 2015-07-28T08:40:49Z REGDOMAIN1 - 2015-07-20T12:21:07Z - 2016-07-20T12:21:07Z + 2015-07-28T08:40:49Z + 2016-07-28T08:40:49Z ABC-12345 - ccReg-3957958416 + ccReg-9637117596 @@ -8351,7 +8585,7 @@ RESPONSE: ABC-12345 - ccReg-2846490102 + ccReg-0421936954 @@ -8399,7 +8633,7 @@ RESPONSE: ABC-12345 - ccReg-8593621207 + ccReg-8532719762 @@ -8415,7 +8649,7 @@ REQUEST: domain15.ee - 91a1593675c6b62f498280dcff1613ae + e6349b913cb0788975f93a02ba220510 @@ -8438,15 +8672,15 @@ RESPONSE: domain15.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:08Z + 2015-07-28T08:40:50Z REGDOMAIN1 - 2015-07-20T12:21:08Z - 2016-07-20T12:21:08Z + 2015-07-28T08:40:50Z + 2016-07-28T08:40:50Z ABC-12345 - ccReg-0429313130 + ccReg-1495969172 @@ -8492,7 +8726,7 @@ RESPONSE: ABC-12345 - ccReg-6710200336 + ccReg-1225162463 @@ -8540,7 +8774,7 @@ RESPONSE: ABC-12345 - ccReg-4167067814 + ccReg-5138326156 @@ -8576,7 +8810,7 @@ RESPONSE: ABC-12345 - ccReg-0768769368 + ccReg-9171426317 @@ -8622,7 +8856,7 @@ RESPONSE: ABC-12345 - ccReg-2348843036 + ccReg-2262790683 @@ -8640,7 +8874,7 @@ REQUEST: domain17.ee - 66a79e8236d629c800bc4cddbb5b4b5f + d0d6f5f660ba9b1cb777074e05c9f9d5 @@ -8668,15 +8902,15 @@ RESPONSE: domain17.ee clientApproved REGDOMAIN2 - 2015-07-20T12:21:09Z + 2015-07-28T08:40:51Z REGDOMAIN1 - 2015-07-20T12:21:09Z - 2016-07-20T12:21:09Z + 2015-07-28T08:40:51Z + 2016-07-28T08:40:51Z ABC-12345 - ccReg-6454975571 + ccReg-2925262739 @@ -8724,7 +8958,7 @@ RESPONSE: ABC-12345 - ccReg-5053250099 + ccReg-2033369372 @@ -8740,7 +8974,7 @@ REQUEST: domain18.ee - 6d38dcddecdb6cd04201e5bffd7ac13d + f40c17f5451f5c80e562bf9250ccd4d2 @@ -8765,7 +8999,7 @@ RESPONSE: ABC-12345 - ccReg-8244838170 + ccReg-7553628884 @@ -8811,7 +9045,7 @@ RESPONSE: ABC-12345 - ccReg-0300500177 + ccReg-8494729995 @@ -8827,7 +9061,7 @@ REQUEST: domain18.ee - 6d38dcddecdb6cd04201e5bffd7ac13d + f40c17f5451f5c80e562bf9250ccd4d2 @@ -8855,15 +9089,15 @@ RESPONSE: domain18.ee clientRejected REGDOMAIN2 - 2015-07-20T12:21:09Z + 2015-07-28T08:40:51Z REGDOMAIN1 - 2015-07-20T12:21:09Z - 2016-07-20T12:21:09Z + 2015-07-28T08:40:51Z + 2016-07-28T08:40:51Z ABC-12345 - ccReg-0452666013 + ccReg-0035055015 @@ -8911,7 +9145,7 @@ RESPONSE: ABC-12345 - ccReg-6312904697 + ccReg-8757184492 @@ -8927,7 +9161,7 @@ REQUEST: domain19.ee - c39986ad356b45908b93934b9b531b3e + 619c6d2109ee1b2deca3674b73619fda @@ -8952,7 +9186,7 @@ RESPONSE: ABC-12345 - ccReg-8667002062 + ccReg-4815280002 @@ -8998,7 +9232,7 @@ RESPONSE: ABC-12345 - ccReg-0572347318 + ccReg-2650484631 @@ -9041,7 +9275,7 @@ RESPONSE: ABC-12345 - ccReg-1663579730 + ccReg-1473008535 @@ -9059,7 +9293,7 @@ REQUEST: domain21.ee - 97ffdf9ce35006bb804a90b0be86158f + fd06d8982dbdecde7e39f41d7f278c7d @@ -9084,7 +9318,7 @@ RESPONSE: ABC-12345 - ccReg-9847617368 + ccReg-0989479481 @@ -9100,7 +9334,7 @@ REQUEST: - example23607638467376100.ee + example44755290217170574.ee 98oiewslkfkd @@ -9117,12 +9351,15 @@ RESPONSE: - - Parameter value range error: op + + Element '{urn:ietf:params:xml:ns:epp-1.0}transfer', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'approve', 'cancel', 'query', 'reject', 'request'}. + + + Element '{urn:ietf:params:xml:ns:epp-1.0}transfer', attribute 'op': 'bla' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:epp-1.0}transferOpType'. ABC-12345 - ccReg-0869737076 + ccReg-7927987439 @@ -9170,7 +9407,7 @@ RESPONSE: ABC-12345 - ccReg-4985517781 + ccReg-2792059598 @@ -9186,7 +9423,7 @@ REQUEST: domain22.ee - ed362ab554eed93eef9ba15f47b3a86b + d7aa8aba40bf70cb78dfebc9474664b2 @@ -9214,15 +9451,15 @@ RESPONSE: domain22.ee serverApproved REGDOMAIN2 - 2015-07-20T12:21:14Z + 2015-07-28T08:40:57Z REGDOMAIN1 - 2015-07-20T12:21:14Z - 2016-07-20T12:21:14Z + 2015-07-28T08:40:57Z + 2016-07-28T08:40:57Z ABC-12345 - ccReg-5260342726 + ccReg-0573122351 @@ -9238,7 +9475,7 @@ REQUEST: domain22.ee - ed362ab554eed93eef9ba15f47b3a86b + d7aa8aba40bf70cb78dfebc9474664b2 @@ -9263,7 +9500,7 @@ RESPONSE: ABC-12345 - ccReg-9380689525 + ccReg-0832624566 @@ -9309,7 +9546,7 @@ RESPONSE: ABC-12345 - ccReg-6443178020 + ccReg-8225650710 @@ -9327,7 +9564,7 @@ REQUEST: domain23.ee - aefa0df0d6e304b99ae3c5ff5220feec + 2c47c46daf97e12ddc0d9fc80da511d0 @@ -9352,7 +9589,7 @@ RESPONSE: ABC-12345 - ccReg-7792092906 + ccReg-2025440519 @@ -9370,7 +9607,7 @@ REQUEST: domain24.ee - 40bce48fe3a738128d78e17d37bf296b + 9bbf18edcc83fb42ddf249dc1f3e42af @@ -9390,7 +9627,7 @@ RESPONSE: ABC-12345 - ccReg-4927161603 + ccReg-8629472751 @@ -9438,7 +9675,7 @@ RESPONSE: ABC-12345 - ccReg-8216102896 + ccReg-7696022252 @@ -9454,7 +9691,7 @@ REQUEST: domain25.ee - 064c71aaa009061b95fba395d67df5c5 + 0935877a40fea9441ffd17fee6c0e7d8 @@ -9482,15 +9719,15 @@ RESPONSE: domain25.ee pending REGDOMAIN2 - 2015-07-20T12:21:17Z + 2015-07-28T08:41:00Z REGDOMAIN1 - 2015-07-20T13:21:17Z - 2016-07-20T12:21:17Z + 2015-07-28T09:41:00Z + 2016-07-28T08:41:00Z ABC-12345 - ccReg-9762150816 + ccReg-7042077941 @@ -9506,7 +9743,7 @@ REQUEST: domain25.ee - 064c71aaa009061b95fba395d67df5c5 + 0935877a40fea9441ffd17fee6c0e7d8 @@ -9529,15 +9766,15 @@ RESPONSE: domain25.ee pending REGDOMAIN2 - 2015-07-20T12:21:17Z + 2015-07-28T08:41:00Z REGDOMAIN1 - 2015-07-20T13:21:17Z - 2016-07-20T12:21:17Z + 2015-07-28T09:41:00Z + 2016-07-28T08:41:00Z ABC-12345 - ccReg-0079805855 + ccReg-4814615747 @@ -9583,7 +9820,7 @@ RESPONSE: ABC-12345 - ccReg-1489226149 + ccReg-6824308586 @@ -9599,7 +9836,7 @@ REQUEST: domain25.ee - 064c71aaa009061b95fba395d67df5c5 + 0935877a40fea9441ffd17fee6c0e7d8 @@ -9627,15 +9864,15 @@ RESPONSE: domain25.ee clientApproved REGDOMAIN2 - 2015-07-20T12:21:17Z + 2015-07-28T08:41:00Z REGDOMAIN1 - 2015-07-20T12:21:18Z - 2016-07-20T12:21:17Z + 2015-07-28T08:41:00Z + 2016-07-28T08:41:00Z ABC-12345 - ccReg-5729769473 + ccReg-2690846279 @@ -9651,7 +9888,7 @@ REQUEST: domain25.ee - 5bfe0b53635867fb9e51d987d686b95e + 665baee3468e834243928ce917ecc3ef @@ -9674,15 +9911,149 @@ RESPONSE: domain25.ee clientApproved REGDOMAIN2 - 2015-07-20T12:21:17Z + 2015-07-28T08:41:00Z REGDOMAIN1 - 2015-07-20T12:21:18Z - 2016-07-20T12:21:17Z + 2015-07-28T08:41:00Z + 2016-07-28T08:41:00Z ABC-12345 - ccReg-3432351900 + ccReg-9400606855 + + + +``` + +### EPP Domain with valid domain should not transfer when period element is present + +REQUEST: + +```xml + + + + + registrar2 + ghyt9e4fu + + 1.0 + en + + + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + https://epp.tld.ee/schema/eis-1.0.xsd + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-1604970396 + + + +``` + +REQUEST: + +```xml + + + + + + domain26.ee + 1 + + e0c3f74927da4bb3eee5667c66115352 + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Unimplemented object service + + + + + + ABC-12345 + ccReg-8617519056 + + + +``` + +REQUEST: + +```xml + + + + + registrar1 + ghyt9e4fu + + 1.0 + en + + + https://epp.tld.ee/schema/domain-eis-1.0.xsd + https://epp.tld.ee/schema/contact-eis-1.0.xsd + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:keyrelay-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + https://epp.tld.ee/schema/eis-1.0.xsd + + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + ABC-12345 + ccReg-1118050637 @@ -9698,7 +10069,7 @@ REQUEST: - domain26.ee + domain27.ee FIXED:CITIZEN_1234 @@ -9726,7 +10097,7 @@ RESPONSE: ABC-12345 - ccReg-9973702297 + ccReg-2670008628 @@ -9742,7 +10113,7 @@ REQUEST: - domain27.ee + domain28.ee FIXED:CITIZEN_1234 @@ -9770,7 +10141,7 @@ RESPONSE: ABC-12345 - ccReg-8501693053 + ccReg-8289277865 @@ -9786,17 +10157,17 @@ REQUEST: - domain28.ee + domain29.ee - ns.larkin86.ee + ns.bernhard89.ee - ns.rogahn85.ee + ns.effertzebert88.ee - ns.millerreinger84.ee + ns.ondrickajakubowski87.ee @@ -9827,7 +10198,7 @@ RESPONSE: ABC-12345 - ccReg-4663382085 + ccReg-1648208045 @@ -9837,50 +10208,6 @@ RESPONSE: REQUEST: -```xml - - - - - - domain29.ee - - FIXED:CITIZEN_1234 - - - - - - - dGVzdCBmYWlsCg== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Nameservers count must be between 2-11 [nameservers] - - - ABC-12345 - ccReg-5422549379 - - - -``` - -### EPP Domain with valid domain should not allow any update when status pending update - -REQUEST: - ```xml @@ -9906,6 +10233,50 @@ REQUEST: RESPONSE: +```xml + + + + + Nameservers count must be between 2-11 [nameservers] + + + ABC-12345 + ccReg-5575143855 + + + +``` + +### EPP Domain with valid domain should not allow any update when status pending update + +REQUEST: + +```xml + + + + + + domain31.ee + + FIXED:CITIZEN_1234 + + + + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + ```xml @@ -9915,7 +10286,7 @@ RESPONSE: ABC-12345 - ccReg-3789746865 + ccReg-7420673440 @@ -9931,7 +10302,7 @@ REQUEST: - domain31.ee + domain32.ee @@ -9984,7 +10355,7 @@ RESPONSE: ABC-12345 - ccReg-8812097526 + ccReg-5413112744 @@ -9998,7 +10369,7 @@ REQUEST: - domain31.ee + domain32.ee @@ -10048,7 +10419,7 @@ RESPONSE: ABC-12345 - ccReg-9781141294 + ccReg-3340757346 @@ -10062,7 +10433,7 @@ REQUEST: - domain31.ee + domain32.ee @@ -10128,18 +10499,18 @@ RESPONSE: Public key already exists [public_key] - 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f Public key already exists [public_key] - 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 ABC-12345 - ccReg-8076872898 + ccReg-2640140355 @@ -10155,7 +10526,7 @@ REQUEST: - domain32.ee + domain33.ee @@ -10214,7 +10585,7 @@ RESPONSE: ABC-12345 - ccReg-4282322448 + ccReg-7630828881 @@ -10228,7 +10599,7 @@ REQUEST: - domain32.ee + domain33.ee @@ -10284,7 +10655,7 @@ RESPONSE: ABC-12345 - ccReg-8176843432 + ccReg-4914897472 @@ -10300,7 +10671,7 @@ REQUEST: - domain33.ee + domain34.ee Payment overdue. @@ -10323,7 +10694,7 @@ RESPONSE: ABC-12345 - ccReg-7937074073 + ccReg-1063100515 @@ -10339,7 +10710,7 @@ REQUEST: - domain34.ee + domain35.ee @@ -10389,7 +10760,7 @@ RESPONSE: ABC-12345 - ccReg-7570068359 + ccReg-6247129672 @@ -10403,7 +10774,7 @@ REQUEST: - domain34.ee + domain35.ee @@ -10443,7 +10814,7 @@ RESPONSE: ABC-12345 - ccReg-1432441976 + ccReg-1536077793 @@ -10457,7 +10828,7 @@ REQUEST: - domain34.ee + domain35.ee @@ -10518,7 +10889,7 @@ RESPONSE: ABC-12345 - ccReg-7970574669 + ccReg-9074810399 @@ -10534,7 +10905,7 @@ REQUEST: - domain35.ee + domain36.ee @@ -10559,7 +10930,7 @@ RESPONSE: ABC-12345 - ccReg-4754082938 + ccReg-6433694543 @@ -10575,14 +10946,14 @@ REQUEST: - domain36.ee + domain37.ee - ns.durganbartoletti105.ee + ns.westemmerich108.ee - FIXED:SH2376317183 + FIXED:SH2488479285 @@ -10602,7 +10973,7 @@ RESPONSE: ABC-12345 - ccReg-5451489239 + ccReg-2752561257 @@ -10616,14 +10987,14 @@ REQUEST: - domain36.ee + domain37.ee - ns.durganbartoletti105.ee + ns.westemmerich108.ee - FIXED:SH2376317183 + FIXED:SH2488479285 @@ -10641,18 +11012,18 @@ RESPONSE: Nameserver already exists on this domain [hostname] - ns.durganbartoletti105.ee + ns.westemmerich108.ee Contact already exists on this domain [contact_code_cache] - FIXED:SH2376317183 + FIXED:SH2488479285 ABC-12345 - ccReg-3672850292 + ccReg-9298371804 @@ -10668,7 +11039,7 @@ REQUEST: - domain37.ee + domain38.ee FIXED:CITIZEN_1234 @@ -10690,7 +11061,7 @@ RESPONSE: ABC-12345 - ccReg-9096243278 + ccReg-4198817730 @@ -10706,7 +11077,7 @@ REQUEST: - domain38.ee + domain39.ee @@ -10723,15 +11094,15 @@ RESPONSE: - - Status was not found - - invalidStatus - + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}status', attribute 's': [facet 'enumeration'] The value 'invalidStatus' is not an element of the set {'clientDeleteProhibited', 'clientHold', 'clientRenewProhibited', 'clientTransferProhibited', 'clientUpdateProhibited', 'inactive', 'ok', 'pendingCreate', 'pendingDelete', 'pendingRenew', 'pendingTransfer', 'pendingUpdate', 'serverDeleteProhibited', 'serverHold', 'serverRenewProhibited', 'serverTransferProhibited', 'serverUpdateProhibited'}. + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}status', attribute 's': 'invalidStatus' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}statusValueType'. ABC-12345 - ccReg-0254454948 + ccReg-8053378605 @@ -10741,49 +11112,6 @@ RESPONSE: REQUEST: -```xml - - - - - - domain39.ee - 2016-07-20 - 1 - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain39.ee - 2017-07-20T12:21:34Z - - - - ABC-12345 - ccReg-7528194119 - - - -``` - -### EPP Domain with valid domain renews a domain when outzone_at or delete_at is nil for some reason - -REQUEST: - ```xml @@ -10791,7 +11119,7 @@ REQUEST: domain40.ee - 2016-07-20 + 2016-07-28 1 @@ -10812,18 +11140,18 @@ RESPONSE: domain40.ee - 2017-07-20T12:21:34Z + 2017-07-28T08:41:19Z ABC-12345 - ccReg-5368631388 + ccReg-2144233121 ``` -### EPP Domain with valid domain renews a domain with no period specified +### EPP Domain with valid domain renews a domain when outzone_at or delete_at is nil for some reason REQUEST: @@ -10834,7 +11162,8 @@ REQUEST: domain41.ee - 2016-07-20 + 2016-07-28 + 1 ABC-12345 @@ -10854,12 +11183,54 @@ RESPONSE: domain41.ee - 2017-07-20T12:21:35Z + 2017-07-28T08:41:20Z ABC-12345 - ccReg-9962016550 + ccReg-6734533900 + + + +``` + +### EPP Domain with valid domain renews a domain with no period specified + +REQUEST: + +```xml + + + + + + domain42.ee + 2016-07-28 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain42.ee + 2017-07-28T08:41:20Z + + + + ABC-12345 + ccReg-1952216525 @@ -10875,8 +11246,8 @@ REQUEST: - domain42.ee - 2016-07-20 + domain43.ee + 2016-07-28 1 @@ -10891,12 +11262,15 @@ RESPONSE: - - Attribute is invalid: unit + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value '' is not an element of the set {'y', 'm', 'd'}. + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': '' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}pUnitType'. ABC-12345 - ccReg-2852772415 + ccReg-9450436889 @@ -10910,8 +11284,8 @@ REQUEST: - domain42.ee - 2016-07-20 + domain43.ee + 2016-07-28 1 @@ -10926,12 +11300,15 @@ RESPONSE: - - Attribute is invalid: unit + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': [facet 'enumeration'] The value 'bla' is not an element of the set {'y', 'm', 'd'}. + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}period', attribute 'unit': 'bla' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}pUnitType'. ABC-12345 - ccReg-4566744629 + ccReg-1447208589 @@ -10947,8 +11324,8 @@ REQUEST: - domain43.ee - 2015-07-30 + domain44.ee + 2015-08-07 730 @@ -10968,13 +11345,13 @@ RESPONSE: - domain43.ee - 2017-07-30T00:00:00Z + domain44.ee + 2017-08-07T00:00:00Z ABC-12345 - ccReg-3667306360 + ccReg-8888058768 @@ -10990,8 +11367,8 @@ REQUEST: - domain44.ee - 2015-07-30 + domain45.ee + 2015-08-07 36 @@ -11011,13 +11388,13 @@ RESPONSE: - domain44.ee - 2018-07-30T00:00:00Z + domain45.ee + 2018-08-07T00:00:00Z ABC-12345 - ccReg-1779357497 + ccReg-2368607304 @@ -11033,8 +11410,8 @@ REQUEST: - domain45.ee - 2015-07-30 + domain46.ee + 2015-08-07 1 @@ -11054,7 +11431,7 @@ RESPONSE: ABC-12345 - ccReg-1591253780 + ccReg-6821240882 @@ -11070,7 +11447,7 @@ REQUEST: - domain46.ee + domain47.ee 2200-08-07 1 @@ -11097,7 +11474,7 @@ RESPONSE: ABC-12345 - ccReg-8983361045 + ccReg-3646435252 @@ -11113,8 +11490,8 @@ REQUEST: - domain47.ee - 2015-07-30 + domain48.ee + 2015-08-07 4 @@ -11137,7 +11514,7 @@ RESPONSE: ABC-12345 - ccReg-1784590716 + ccReg-6217040456 @@ -11153,8 +11530,8 @@ REQUEST: - domain48.ee - 2015-10-18 + domain49.ee + 2015-10-26 1 @@ -11174,7 +11551,7 @@ RESPONSE: ABC-12345 - ccReg-8062610008 + ccReg-8796521058 @@ -11182,49 +11559,6 @@ RESPONSE: REQUEST: -```xml - - - - - - domain48.ee - 2015-10-17 - 1 - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain48.ee - 2016-10-17T00:00:00Z - - - - ABC-12345 - ccReg-6641508559 - - - -``` - -### EPP Domain with valid domain does not renew a domain unless less than 90 days till expiration - -REQUEST: - ```xml @@ -11232,7 +11566,7 @@ REQUEST: domain49.ee - 2020-07-20 + 2015-10-25 1 @@ -11253,12 +11587,55 @@ RESPONSE: domain49.ee - 2021-07-20T00:00:00Z + 2016-10-25T00:00:00Z ABC-12345 - ccReg-4269436324 + ccReg-0448578516 + + + +``` + +### EPP Domain with valid domain does not renew a domain unless less than 90 days till expiration + +REQUEST: + +```xml + + + + + + domain50.ee + 2020-07-28 + 1 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain50.ee + 2021-07-28T00:00:00Z + + + + ABC-12345 + ccReg-5093886658 @@ -11274,8 +11651,8 @@ REQUEST: - domain50.ee - 2015-07-30 + domain51.ee + 2015-08-07 1 @@ -11295,7 +11672,7 @@ RESPONSE: ABC-12345 - ccReg-6783528631 + ccReg-1090831490 @@ -11345,7 +11722,7 @@ RESPONSE: ABC-12345 - ccReg-4175488967 + ccReg-0660211759 @@ -11359,8 +11736,8 @@ REQUEST: - domain52.ee - 2016-07-20 + domain53.ee + 2016-07-28 1 @@ -11380,7 +11757,7 @@ RESPONSE: ABC-12345 - ccReg-2346400220 + ccReg-9082042804 @@ -11426,7 +11803,7 @@ RESPONSE: ABC-12345 - ccReg-0994749954 + ccReg-0461998559 @@ -11442,7 +11819,7 @@ REQUEST: - domain53.ee + domain54.ee 2fooBAR @@ -11463,23 +11840,23 @@ RESPONSE: - domain53.ee - EIS-65 + domain54.ee + EIS-66 - FIXED:REGISTRANT7307565451 - FIXED:SH34551752120 - FIXED:SH65763191119 + FIXED:REGISTRANT3821775852 + FIXED:SH92766468122 + FIXED:SH95283245121 - ns.wehner159.ee + ns.halvorsonkeeling162.ee 192.168.1.1 - ns.wilderman160.ee + ns.cummings163.ee 192.168.1.1 - ns.hauck161.ee + ns.dibbert164.ee 192.168.1.1 @@ -11489,11 +11866,11 @@ RESPONSE: registrar1 - 2015-07-20T12:21:46Z - 2015-07-20T12:21:46Z - 2016-07-20T12:21:46Z + 2015-07-28T08:41:31Z + 2015-07-28T08:41:31Z + 2016-07-28T08:41:31Z - cd8ed996f0e6401b8b5a086d50c54763 + 7bde3f39e40a68635bf5a69098169cc5 @@ -11526,313 +11903,7 @@ RESPONSE: - ccReg-7650872478 - - - -``` - -REQUEST: - -```xml - - - - - - domain53.ee - - 2fooBAR - - - - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain53.ee - EIS-65 - - FIXED:REGISTRANT7307565451 - FIXED:SH34551752120 - FIXED:SH65763191119 - - - ns.wehner159.ee - 192.168.1.1 - - - ns.wilderman160.ee - 192.168.1.1 - - - ns.hauck161.ee - 192.168.1.1 - - - ns1.example.com - 192.168.1.1 - 1080:0:0:0:8:800:200C:417A - - - registrar1 - 2015-07-20T12:21:46Z - 2015-07-20T12:21:46Z - 2016-07-20T12:21:46Z - - cd8ed996f0e6401b8b5a086d50c54763 - - - - - - - 123 - 3 - 1 - 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB - - 257 - 3 - 3 - AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 - - - - 123 - 3 - 1 - 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB - - 0 - 3 - 5 - 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f - - - - - - ccReg-6212765052 - - - -``` - -### EPP Domain with valid domain returns domain info with different nameservers - -REQUEST: - -```xml - - - - - - domain54.ee - - 2fooBAR - - - - - -``` - -RESPONSE: - -```xml - - - - - Attribute is invalid: hosts - - - ccReg-8441039728 - - - -``` - -REQUEST: - -```xml - - - - - - domain54.ee - - 2fooBAR - - - - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain54.ee - EIS-66 - - FIXED:REGISTRANT4591564452 - FIXED:SH08627254122 - FIXED:SH13521612121 - - - ns1.domain54.ee - 192.168.1.1 - 1080:0:0:0:8:800:200C:417A - - - ns2.domain54.ee - 192.168.1.1 - 1080:0:0:0:8:800:200C:417A - - - registrar1 - 2015-07-20T12:21:46Z - 2015-07-20T12:21:46Z - 2016-07-20T12:21:46Z - - 87c62b989527eca8eefee7826767d526 - - - - - ccReg-9775633810 - - - -``` - -REQUEST: - -```xml - - - - - - domain54.ee - - 2fooBAR - - - - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain54.ee - EIS-66 - - FIXED:REGISTRANT4591564452 - FIXED:SH08627254122 - FIXED:SH13521612121 - - - ns3.test.ee - 192.168.1.1 - 1080:0:0:0:8:800:200C:417A - - - registrar1 - 2015-07-20T12:21:46Z - 2015-07-20T12:21:46Z - 2016-07-20T12:21:46Z - - 87c62b989527eca8eefee7826767d526 - - - - - ccReg-0577915344 - - - -``` - -REQUEST: - -```xml - - - - - - domain54.ee - - 2fooBAR - - - - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain54.ee - EIS-66 - - FIXED:REGISTRANT4591564452 - FIXED:SH08627254122 - FIXED:SH13521612121 - registrar1 - 2015-07-20T12:21:46Z - 2015-07-20T12:21:46Z - 2016-07-20T12:21:46Z - - 87c62b989527eca8eefee7826767d526 - - - - - ccReg-9228927284 + ccReg-6011078959 @@ -11869,18 +11940,327 @@ RESPONSE: domain54.ee EIS-66 - - FIXED:REGISTRANT4591564452 - FIXED:SH08627254122 - FIXED:SH13521612121 + + FIXED:REGISTRANT3821775852 + FIXED:SH92766468122 + FIXED:SH95283245121 - ns1.domain54.ee + ns.halvorsonkeeling162.ee + 192.168.1.1 + + + ns.cummings163.ee + 192.168.1.1 + + + ns.dibbert164.ee + 192.168.1.1 + + + ns1.example.com + 192.168.1.1 + 1080:0:0:0:8:800:200C:417A + + + registrar1 + 2015-07-28T08:41:31Z + 2015-07-28T08:41:31Z + 2016-07-28T08:41:31Z + + 7bde3f39e40a68635bf5a69098169cc5 + + + + + + + 123 + 3 + 1 + 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB + + 257 + 3 + 3 + AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8 + + + + 123 + 3 + 1 + 0D85A305D22FCB355BBE29AE9809363D697B64782B9CC73AE349350F8C2AE4BB + + 0 + 3 + 5 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + + + + + + ccReg-9484163738 + + + +``` + +### EPP Domain with valid domain returns domain info with different nameservers + +REQUEST: + +```xml + + + + + + domain55.ee + + 2fooBAR + + + + + +``` + +RESPONSE: + +```xml + + + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', attribute 'hosts': [facet 'enumeration'] The value 'invalid' is not an element of the set {'all', 'del', 'none', 'sub'}. + + + Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', attribute 'hosts': 'invalid' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}hostsType'. + + + ccReg-6664642362 + + + +``` + +REQUEST: + +```xml + + + + + + domain55.ee + + 2fooBAR + + + + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain55.ee + EIS-67 + + FIXED:REGISTRANT0861566953 + FIXED:SH41938455124 + FIXED:SH51239690123 + + + ns1.domain55.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A - ns2.domain54.ee + ns2.domain55.ee + 192.168.1.1 + 1080:0:0:0:8:800:200C:417A + + + registrar1 + 2015-07-28T08:41:31Z + 2015-07-28T08:41:31Z + 2016-07-28T08:41:31Z + + 1f00f9c3dd3137349c89cb6122fd2087 + + + + + ccReg-4706656698 + + + +``` + +REQUEST: + +```xml + + + + + + domain55.ee + + 2fooBAR + + + + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain55.ee + EIS-67 + + FIXED:REGISTRANT0861566953 + FIXED:SH41938455124 + FIXED:SH51239690123 + + + ns3.test.ee + 192.168.1.1 + 1080:0:0:0:8:800:200C:417A + + + registrar1 + 2015-07-28T08:41:31Z + 2015-07-28T08:41:31Z + 2016-07-28T08:41:31Z + + 1f00f9c3dd3137349c89cb6122fd2087 + + + + + ccReg-6524782384 + + + +``` + +REQUEST: + +```xml + + + + + + domain55.ee + + 2fooBAR + + + + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain55.ee + EIS-67 + + FIXED:REGISTRANT0861566953 + FIXED:SH41938455124 + FIXED:SH51239690123 + registrar1 + 2015-07-28T08:41:31Z + 2015-07-28T08:41:31Z + 2016-07-28T08:41:31Z + + 1f00f9c3dd3137349c89cb6122fd2087 + + + + + ccReg-6513443999 + + + +``` + +REQUEST: + +```xml + + + + + + domain55.ee + + 2fooBAR + + + + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain55.ee + EIS-67 + + FIXED:REGISTRANT0861566953 + FIXED:SH41938455124 + FIXED:SH51239690123 + + + ns1.domain55.ee + 192.168.1.1 + 1080:0:0:0:8:800:200C:417A + + + ns2.domain55.ee 192.168.1.1 1080:0:0:0:8:800:200C:417A @@ -11891,16 +12271,16 @@ RESPONSE: registrar1 - 2015-07-20T12:21:46Z - 2015-07-20T12:21:46Z - 2016-07-20T12:21:46Z + 2015-07-28T08:41:31Z + 2015-07-28T08:41:31Z + 2016-07-28T08:41:31Z - 87c62b989527eca8eefee7826767d526 + 1f00f9c3dd3137349c89cb6122fd2087 - ccReg-3580690965 + ccReg-4393101167 @@ -11939,7 +12319,7 @@ RESPONSE: - ccReg-1301920390 + ccReg-7830292127 @@ -11955,7 +12335,7 @@ REQUEST: - domain55.ee + domain56.ee 2fooBAR @@ -11976,37 +12356,37 @@ RESPONSE: - domain55.ee - EIS-67 + domain56.ee + EIS-68 - FIXED:REGISTRANT6281282953 - FIXED:SH61146403124 - FIXED:SH05028645123 + FIXED:REGISTRANT8926104554 + FIXED:SH54896149126 + FIXED:SH80337499125 - ns.klockodouglas165.ee + ns.conroy168.ee 192.168.1.1 - ns.hoeger166.ee + ns.bahringer169.ee 192.168.1.1 - ns.millerkassulke167.ee + ns.kochhyatt170.ee 192.168.1.1 registrar1 - 2015-07-20T12:21:47Z - 2015-07-20T12:21:47Z - 2016-07-20T12:21:47Z + 2015-07-28T08:41:33Z + 2015-07-28T08:41:33Z + 2016-07-28T08:41:33Z - e89d931b05e7e3248ecbd872341f14dc + da322dc86ce37e526f9c2dedc0f5c9f4 - ccReg-6276745674 + ccReg-0824891046 @@ -12054,7 +12434,7 @@ RESPONSE: ABC-12345 - ccReg-2432219885 + ccReg-7661910824 @@ -12068,7 +12448,7 @@ REQUEST: - domain56.ee + domain57.ee 2fooBAR @@ -12088,7 +12468,7 @@ RESPONSE: Authorization error - ccReg-9065841205 + ccReg-8708797571 @@ -12134,7 +12514,7 @@ RESPONSE: ABC-12345 - ccReg-5259254646 + ccReg-2730417805 @@ -12182,7 +12562,7 @@ RESPONSE: ABC-12345 - ccReg-7973413482 + ccReg-0152975550 @@ -12196,7 +12576,7 @@ REQUEST: - domain57.ee + domain58.ee @@ -12214,34 +12594,34 @@ RESPONSE: - domain57.ee - EIS-69 + domain58.ee + EIS-70 - FIXED:REGISTRANT4020838555 - FIXED:SH24162244128 - FIXED:SH02787398127 + FIXED:REGISTRANT2923781556 + FIXED:SH74442662130 + FIXED:SH98223564129 - ns.mcdermott171.ee + ns.wizastanton174.ee 192.168.1.1 - ns.swaniawski172.ee + ns.hermann175.ee 192.168.1.1 - ns.hegmann173.ee + ns.mrazhintz176.ee 192.168.1.1 registrar1 - 2015-07-20T12:21:48Z - 2015-07-20T12:21:48Z - 2016-07-20T12:21:48Z + 2015-07-28T08:41:33Z + 2015-07-28T08:41:33Z + 2016-07-28T08:41:33Z - ccReg-1470647082 + ccReg-5496759020 @@ -12287,7 +12667,7 @@ RESPONSE: ABC-12345 - ccReg-3611707532 + ccReg-5839948259 @@ -12335,7 +12715,7 @@ RESPONSE: ABC-12345 - ccReg-5006604468 + ccReg-9962481595 @@ -12349,9 +12729,9 @@ REQUEST: - domain58.ee + domain59.ee - 6247f0cbf6ef99c7803d68f9604ef0b0 + d1a0c13cf710ce60125dda34bc047357 @@ -12370,37 +12750,37 @@ RESPONSE: - domain58.ee - EIS-70 + domain59.ee + EIS-71 - FIXED:REGISTRANT4781706556 - FIXED:SH25367569130 - FIXED:SH37119437129 + FIXED:REGISTRANT9338146457 + FIXED:SH08033657132 + FIXED:SH95760244131 - ns.koelpinmills174.ee + ns.hansen177.ee 192.168.1.1 - ns.marks175.ee + ns.bechtelar178.ee 192.168.1.1 - ns.kubwitting176.ee + ns.ryan179.ee 192.168.1.1 registrar1 - 2015-07-20T12:21:48Z - 2015-07-20T12:21:48Z - 2016-07-20T12:21:48Z + 2015-07-28T08:41:34Z + 2015-07-28T08:41:34Z + 2016-07-28T08:41:34Z - 6247f0cbf6ef99c7803d68f9604ef0b0 + d1a0c13cf710ce60125dda34bc047357 - ccReg-7100649597 + ccReg-5565279418 @@ -12446,7 +12826,7 @@ RESPONSE: ABC-12345 - ccReg-0704412947 + ccReg-1086178421 @@ -12456,46 +12836,6 @@ RESPONSE: REQUEST: -```xml - - - - - - domain59.ee - - - - - dGVzdCBmYWlsCg== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully; action pending - - - ABC-12345 - ccReg-4832480822 - - - -``` - -### EPP Domain with valid domain does not delete domain with specific status - -REQUEST: - ```xml @@ -12521,18 +12861,18 @@ RESPONSE: - - Domain status prohibits operation + + Command completed successfully; action pending ABC-12345 - ccReg-6927257206 + ccReg-6748161709 ``` -### EPP Domain with valid domain does not delete domain with pending delete +### EPP Domain with valid domain does not delete domain with specific status REQUEST: @@ -12557,6 +12897,46 @@ REQUEST: RESPONSE: +```xml + + + + + Domain status prohibits operation + + + ABC-12345 + ccReg-3721491187 + + + +``` + +### EPP Domain with valid domain does not delete domain with pending delete + +REQUEST: + +```xml + + + + + + domain62.ee + + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + ```xml @@ -12566,7 +12946,7 @@ RESPONSE: ABC-12345 - ccReg-7990485739 + ccReg-8985283918 @@ -12601,7 +12981,7 @@ RESPONSE: ABC-12345 - ccReg-0019926200 + ccReg-6341995809 @@ -12643,7 +13023,7 @@ RESPONSE: ABC-12345 - ccReg-4831555868 + ccReg-5323793544 @@ -12657,7 +13037,7 @@ REQUEST: - domain62.ee + domain63.ee ABC-12345 @@ -12677,14 +13057,14 @@ RESPONSE: - domain62.ee + domain63.ee in use ABC-12345 - ccReg-1342461345 + ccReg-9376664446 @@ -12734,7 +13114,7 @@ RESPONSE: ABC-12345 - ccReg-7798136960 + ccReg-8665354623 @@ -12781,7 +13161,7 @@ RESPONSE: ABC-12345 - ccReg-7326641121 + ccReg-0776655399 @@ -12829,7 +13209,7 @@ RESPONSE: ABC-12345 - ccReg-4487243988 + ccReg-6119482698 @@ -12844,7 +13224,7 @@ REQUEST: - domain63.ee + domain64.ee 256 3 @@ -12852,13 +13232,13 @@ REQUEST: cmlraXN0aGViZXN0 - b077de0c7ce21d4d5ea2c1e3f6472259 + 5a561b9d331c998c4f0383c7c67837be P1M13D - 1437394914 + 1438072899 ``` @@ -12872,12 +13252,12 @@ RESPONSE: Unimplemented object service - domain63.ee + domain64.ee - 1437394914 - ccReg-0158557268 + 1438072899 + ccReg-0546548236 @@ -12892,20 +13272,20 @@ REQUEST: - domain63.ee + domain64.ee 3 8 cmlraXN0aGViZXN0 - b077de0c7ce21d4d5ea2c1e3f6472259 + 5a561b9d331c998c4f0383c7c67837be Invalid Expiry - 1437394915 + 1438072900 ``` @@ -12926,8 +13306,8 @@ RESPONSE: - 1437394915 - ccReg-7506053865 + 1438072900 + ccReg-6339589638 @@ -12942,7 +13322,7 @@ REQUEST: - domain63.ee + domain64.ee 256 3 @@ -12950,13 +13330,13 @@ REQUEST: cmlraXN0aGViZXN0 - b077de0c7ce21d4d5ea2c1e3f6472259 + 5a561b9d331c998c4f0383c7c67837be Invalid Expiry - 1437394916 + 1438072901 ``` @@ -12974,8 +13354,8 @@ RESPONSE: - 1437394916 - ccReg-6186370335 + 1438072901 + ccReg-5588050715 @@ -12990,7 +13370,7 @@ REQUEST: - domain63.ee + domain64.ee 256 3 @@ -12998,13 +13378,13 @@ REQUEST: cmlraXN0aGViZXN0 - b077de0c7ce21d4d5ea2c1e3f6472259 + 5a561b9d331c998c4f0383c7c67837be Invalid Absolute - 1437394917 + 1438072902 ``` @@ -13022,8 +13402,8 @@ RESPONSE: - 1437394917 - ccReg-7506426099 + 1438072902 + ccReg-3072813596 @@ -13038,7 +13418,7 @@ REQUEST: - domain63.ee + domain64.ee 256 3 @@ -13046,7 +13426,7 @@ REQUEST: cmlraXN0aGViZXN0 - b077de0c7ce21d4d5ea2c1e3f6472259 + 5a561b9d331c998c4f0383c7c67837be P1D @@ -13055,7 +13435,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1437394918 + 1438072903 ``` @@ -13069,12 +13449,12 @@ RESPONSE: Unimplemented object service - domain63.ee + domain64.ee - 1437394918 - ccReg-9663347445 + 1438072903 + ccReg-8005218060 @@ -13089,7 +13469,7 @@ REQUEST: - domain63.ee + domain64.ee 256 3 @@ -13097,7 +13477,7 @@ REQUEST: cmlraXN0aGViZXN0 - b077de0c7ce21d4d5ea2c1e3f6472259 + 5a561b9d331c998c4f0383c7c67837be P1D @@ -13106,7 +13486,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1437394919 + 1438072904 ``` @@ -13121,8 +13501,8 @@ RESPONSE: Attribute is invalid: type - 1437394919 - ccReg-9389252278 + 1438072904 + ccReg-7669723424 @@ -13168,7 +13548,7 @@ RESPONSE: ABC-12345 - ccReg-7621736554 + ccReg-7183215230 @@ -13183,7 +13563,7 @@ REQUEST: - 1437394921 + 1438072906 ``` @@ -13198,8 +13578,8 @@ RESPONSE: Command completed successfully; no messages - 1437394921 - ccReg-3217706142 + 1438072906 + ccReg-0904688053 @@ -13247,7 +13627,7 @@ RESPONSE: ABC-12345 - ccReg-4682258427 + ccReg-9330176861 @@ -13260,7 +13640,7 @@ REQUEST: - 1437394921 + 1438072906 ``` @@ -13275,8 +13655,8 @@ RESPONSE: Command completed successfully; no messages - 1437394921 - ccReg-3374319928 + 1438072906 + ccReg-9666096812 @@ -13322,7 +13702,7 @@ RESPONSE: ABC-12345 - ccReg-5625822303 + ccReg-2827332510 @@ -13335,7 +13715,7 @@ REQUEST: - 1437394921 + 1438072906 ``` @@ -13350,12 +13730,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-20T12:22:01Z + 2015-07-28T08:41:46Z Balance low. - 1437394921 - ccReg-9128319649 + 1438072906 + ccReg-8105139529 @@ -13401,7 +13781,7 @@ RESPONSE: ABC-12345 - ccReg-0065623857 + ccReg-4202898264 @@ -13414,7 +13794,7 @@ REQUEST: - 1437394921 + 1438072906 ``` @@ -13432,8 +13812,8 @@ RESPONSE: - 1437394921 - ccReg-3167220528 + 1438072906 + ccReg-6713795149 @@ -13479,7 +13859,7 @@ RESPONSE: ABC-12345 - ccReg-4376189947 + ccReg-8383726441 @@ -13492,7 +13872,7 @@ REQUEST: - 1437394921 + 1438072906 ``` @@ -13508,8 +13888,8 @@ RESPONSE: - 1437394921 - ccReg-8178583447 + 1438072906 + ccReg-9660232901 @@ -13522,7 +13902,7 @@ REQUEST: - 1437394921 + 1438072906 ``` @@ -13540,8 +13920,8 @@ RESPONSE: - 1437394921 - ccReg-3357677572 + 1438072906 + ccReg-8436895537 @@ -13556,7 +13936,7 @@ REQUEST: - 1437394923 + 1438072909 ``` @@ -13567,12 +13947,15 @@ RESPONSE: - - Parameter value range error: op + + Element '{urn:ietf:params:xml:ns:epp-1.0}poll', attribute 'op': [facet 'enumeration'] The value 'bla' is not an element of the set {'ack', 'req'}. + + + Element '{urn:ietf:params:xml:ns:epp-1.0}poll', attribute 'op': 'bla' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:epp-1.0}pollOpType'. - 1437394923 - ccReg-9173157016 + 1438072909 + ccReg-0720048091 @@ -13587,7 +13970,7 @@ REQUEST: - 1437394924 + 1438072910 ``` @@ -13602,12 +13985,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-20T12:22:04Z + 2015-07-28T08:41:50Z Smth else. - 1437394924 - ccReg-5958950001 + 1438072910 + ccReg-4999056673 @@ -13620,7 +14003,7 @@ REQUEST: - 1437394925 + 1438072910 ``` @@ -13636,8 +14019,8 @@ RESPONSE: - 1437394925 - ccReg-5283049409 + 1438072910 + ccReg-2484759210 @@ -13650,7 +14033,7 @@ REQUEST: - 1437394925 + 1438072910 ``` @@ -13665,12 +14048,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-20T12:22:04Z + 2015-07-28T08:41:50Z Something. - 1437394925 - ccReg-0653965093 + 1438072910 + ccReg-8852256138 @@ -13683,7 +14066,7 @@ REQUEST: - 1437394925 + 1438072910 ``` @@ -13699,8 +14082,8 @@ RESPONSE: - 1437394925 - ccReg-5975626851 + 1438072910 + ccReg-4857662573 @@ -13713,7 +14096,7 @@ REQUEST: - 1437394925 + 1438072910 ``` @@ -13728,12 +14111,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-20T12:22:04Z + 2015-07-28T08:41:50Z Balance low. - 1437394925 - ccReg-7080395365 + 1438072910 + ccReg-7845130069 @@ -13746,7 +14129,7 @@ REQUEST: - 1437394925 + 1438072910 ``` @@ -13762,8 +14145,8 @@ RESPONSE: - 1437394925 - ccReg-0487240311 + 1438072910 + ccReg-5213820888 @@ -13776,7 +14159,7 @@ REQUEST: - 1437394925 + 1438072910 ``` @@ -13791,8 +14174,8 @@ RESPONSE: Command completed successfully; no messages - 1437394925 - ccReg-2728391744 + 1438072910 + ccReg-5526530522 @@ -13807,7 +14190,7 @@ RESPONSE: EPP server (EIS) - 2015-07-20T12:22:05Z + 2015-07-28T08:41:50Z 1.0 en @@ -13883,7 +14266,7 @@ RESPONSE: ABC-12345 - ccReg-6356137272 + ccReg-3357021379 @@ -13931,7 +14314,7 @@ RESPONSE: ABC-12345 - ccReg-4823490197 + ccReg-7648731033 @@ -13966,7 +14349,7 @@ RESPONSE: ABC-12345 - ccReg-2897934955 + ccReg-9110727237 @@ -14012,7 +14395,7 @@ RESPONSE: Authentication error; server closing connection (API user not found) - ccReg-8596651543 + ccReg-3560736149 @@ -14060,7 +14443,7 @@ RESPONSE: ABC-12345 - ccReg-2882658867 + ccReg-9604669451 @@ -14108,7 +14491,7 @@ RESPONSE: ABC-12345 - ccReg-4279783750 + ccReg-2841249388 @@ -14156,7 +14539,7 @@ RESPONSE: ABC-12345 - ccReg-7491166215 + ccReg-7967943283 @@ -14202,7 +14585,7 @@ RESPONSE: ABC-12345 - ccReg-2938349089 + ccReg-8815596190 @@ -14250,7 +14633,7 @@ RESPONSE: ABC-12345 - ccReg-5870608814 + ccReg-3572848696 @@ -14279,7 +14662,7 @@ RESPONSE: ABC-12345 - ccReg-2182587183 + ccReg-9539000551 @@ -14328,7 +14711,7 @@ RESPONSE: ABC-12345 - ccReg-7741248933 + ccReg-6256430973 @@ -14372,12 +14755,15 @@ RESPONSE: - - Password is missing [password] + + Element '{urn:ietf:params:xml:ns:epp-1.0}newPW': [facet 'minLength'] The value has a length of '0'; this underruns the allowed minimum length of '6'. + + + Element '{urn:ietf:params:xml:ns:epp-1.0}newPW': '' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:epp-1.0}pwType'. ABC-12345 - ccReg-8509961811 + ccReg-6382004519 From 1a10b1400bdc17131dfc31bb78f3b31fb8303097 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 11:56:56 +0300 Subject: [PATCH 37/94] Skip time on invoice pdf #2775 --- app/views/registrar/invoices/pdf.haml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/registrar/invoices/pdf.haml b/app/views/registrar/invoices/pdf.haml index f4644d80e..5888f2bc2 100644 --- a/app/views/registrar/invoices/pdf.haml +++ b/app/views/registrar/invoices/pdf.haml @@ -149,21 +149,21 @@ %hr %dl.dl-horizontal %dt= t(:issue_date) - %dd= l(@invoice.created_at) + %dd= l(@invoice.created_at, format: :date_long) - if @invoice.cancelled? %dt= t(:cancel_date) - %dd= l(@invoice.cancelled_at) + %dd= l(@invoice.cancelled_at, format: :date_long) %dt= t(:due_date) - if @invoice.cancelled? %dd= t(:cancelled) - else - %dd= l(@invoice.due_date) + %dd= l(@invoice.due_date, format: :date_long) %dt= t(:receipt_date) - if @invoice.binded? - %dd= l(@invoice.receipt_date) + %dd= l(@invoice.receipt_date, format: :date_long) - elsif @invoice.cancelled? %dd= t(:cancelled) - else From 0ea07de2d1cb11636828feb97abb70caa8d911fc Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 13:08:02 +0300 Subject: [PATCH 38/94] Fix valid_to #2741 --- app/models/pricelist.rb | 2 +- app/views/admin/pricelists/edit.haml | 8 ++++++++ app/views/admin/pricelists/index.haml | 2 +- config/locales/en.yml | 2 ++ spec/models/pricelist_spec.rb | 11 +++++++++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/models/pricelist.rb b/app/models/pricelist.rb index bb37ad0e1..1287be9d1 100644 --- a/app/models/pricelist.rb +++ b/app/models/pricelist.rb @@ -1,7 +1,7 @@ class Pricelist < ActiveRecord::Base include Versions # version/pricelist_version.rb - scope :valid, -> { where("valid_from <= ? AND valid_to >= ? OR valid_to IS NULL", Time.zone.now, Time.zone.now) } + scope :valid, -> { where("valid_from <= ? AND valid_to >= ? OR valid_to IS NULL", Time.zone.now.end_of_day, Time.zone.now.beginning_of_day) } monetize :price_cents diff --git a/app/views/admin/pricelists/edit.haml b/app/views/admin/pricelists/edit.haml index 329f7979b..4330b6240 100644 --- a/app/views/admin/pricelists/edit.haml +++ b/app/views/admin/pricelists/edit.haml @@ -2,5 +2,13 @@ .col-sm-6 %h2.text-center-xs= "#{t(:edit)}: #{@pricelist.name}" +- if @pricelist.persisted? && @pricelist.errors.none? + %hr + - active_pricelist = Pricelist.pricelist_for(@pricelist.category, @pricelist.operation_category, @pricelist.duration) + - if active_pricelist + = t('active_price_for_this_operation_is', price: "#{active_pricelist.price.amount.to_s} #{active_pricelist.price_currency}") + - else + = t('active_price_missing_for_this_operation') + %hr = render 'form' diff --git a/app/views/admin/pricelists/index.haml b/app/views/admin/pricelists/index.haml index 15a6b9c6b..6cf83f6b8 100644 --- a/app/views/admin/pricelists/index.haml +++ b/app/views/admin/pricelists/index.haml @@ -26,7 +26,7 @@ = sort_link(@q, 'valid_to', t(:valid_to)) %th{class: 'col-xs-2'} = t(:action) - + %tbody - @pricelists.each do |pricelist| %tr diff --git a/config/locales/en.yml b/config/locales/en.yml index c4b70c2e9..636b942e2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -877,3 +877,5 @@ en: api_user_not_found: 'API user not found' domain_already_belongs_to_the_querying_registrar: 'Domain already belongs to the querying registrar' notes: Notes + active_price_for_this_operation_is: 'Active price for this operation is %{price}' + active_price_missing_for_this_operation: 'Active price missing for this operation!' diff --git a/spec/models/pricelist_spec.rb b/spec/models/pricelist_spec.rb index f2c155846..4b680312a 100644 --- a/spec/models/pricelist_spec.rb +++ b/spec/models/pricelist_spec.rb @@ -160,6 +160,17 @@ describe Pricelist do Pricelist.pricelist_for('ee', 'create', '1year').price.amount.should == 1.10 + Fabricate.create(:pricelist, { + category: 'ee', + operation_category: 'create', + duration: '1year', + price: 2.10, + valid_from: Time.zone.now.to_date, + valid_to: Time.zone.now.to_date + }) + + Pricelist.pricelist_for('ee', 'create', '1year').price.amount.should == 2.10 + Fabricate.create(:pricelist, { category: 'ee', operation_category: 'create', From a70273a3b95f1797089e1ea4863083bc3523ca83 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 14:06:50 +0300 Subject: [PATCH 39/94] Change blocked domain error message #2564 --- app/models/epp/domain.rb | 5 ++++- app/validators/domain_name_validator.rb | 2 +- config/locales/en.yml | 2 +- spec/epp/domain_spec.rb | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index c36912d6b..cd2a6bf82 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -28,7 +28,7 @@ class Epp::Domain < Domain after_destroy :unlink_contacts def unlink_contacts - contacts.each do |c| + contacts.each do |c| c.domains_present = false c.save(validate: false) end @@ -104,6 +104,9 @@ class Epp::Domain < Domain [:base, :key_data_not_allowed], [:period, :not_a_number], [:period, :not_an_integer] + ], + '2308' => [ + [:base, :domain_name_blocked, { value: { obj: 'name', val: name_dirty } }] ] } end diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 79fec0291..471565c30 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -3,7 +3,7 @@ class DomainNameValidator < ActiveModel::EachValidator if !self.class.validate_format(value) record.errors[attribute] << (options[:message] || record.errors.generate_message(attribute, :invalid)) elsif !self.class.validate_blocked(value) - record.errors.add(attribute, (options[:message] || record.errors.generate_message(attribute, :blocked))) + record.errors.add(:base, :domain_name_blocked) end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 636b942e2..2051e1e82 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -65,10 +65,10 @@ en: key_data_not_allowed: 'keyData object is not allowed' required_parameter_missing_reserved: 'Required parameter missing; reserved>pw element required for reserved domains' invalid_auth_information_reserved: 'Invalid authorization information; invalid reserved>pw value' + domain_name_blocked: 'Data management policy violation: Domain name is blocked [name]' name_dirty: invalid: 'Domain name is invalid' reserved: 'Domain name is reserved' - blocked: 'Domain name is blocked' taken: 'Domain name already exists' puny_label: too_long: 'Domain name is too long (maximum is 63 characters)' diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 0f5e4aff4..b0c7535fc 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -272,8 +272,8 @@ describe 'EPP Domain', epp: true do xml = domain_create_xml(name: { value: 'ftp.ee' }) response = epp_plain_request(xml) - response[:msg].should == 'Domain name is blocked [name_dirty]' - response[:result_code].should == '2302' + response[:msg].should == 'Data management policy violation: Domain name is blocked [name]' + response[:result_code].should == '2308' response[:results][0][:value].should == 'ftp.ee' response[:clTRID].should == 'ABC-12345' end From d4712e7f9ee3fb223f205fe59d73ab33c0dc0918 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 14:11:12 +0300 Subject: [PATCH 40/94] Fix rubocop #2741 --- app/models/pricelist.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/models/pricelist.rb b/app/models/pricelist.rb index 1287be9d1..cc7b898ea 100644 --- a/app/models/pricelist.rb +++ b/app/models/pricelist.rb @@ -1,7 +1,12 @@ class Pricelist < ActiveRecord::Base include Versions # version/pricelist_version.rb - scope :valid, -> { where("valid_from <= ? AND valid_to >= ? OR valid_to IS NULL", Time.zone.now.end_of_day, Time.zone.now.beginning_of_day) } + scope :valid, lambda { + where( + "valid_from <= ? AND valid_to >= ? OR valid_to IS NULL", + Time.zone.now.end_of_day, Time.zone.now.beginning_of_day + ) + } monetize :price_cents From c439cf4ae063a48ccc481e343030409b864e13d2 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 14:23:34 +0300 Subject: [PATCH 41/94] Update transfer xml example, allow cancel attribute in transfer #2809 --- app/controllers/epp/domains_controller.rb | 2 +- .../registrar/xml_consoles/epp_requests/domain/transfer.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index b2a20e2a2..5d942882b 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -211,7 +211,7 @@ class Epp::DomainsController < EppController requires 'name' @prefix = nil - requires_attribute 'transfer', 'op', values: %(approve, query, reject, request) + requires_attribute 'transfer', 'op', values: %(approve, query, reject, request, cancel) end def find_domain diff --git a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml index 55792a42c..e1bb7d1ee 100644 --- a/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml +++ b/app/views/registrar/xml_consoles/epp_requests/domain/transfer.xml @@ -1,7 +1,7 @@ - + example.ee From 0c4e152abdf6b0a67111c77e750f430cdda5559a Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 14:41:39 +0300 Subject: [PATCH 42/94] Fix test #2564 --- spec/features/admin/blocked_domain_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/blocked_domain_spec.rb b/spec/features/admin/blocked_domain_spec.rb index 3c12a298c..5f2535484 100644 --- a/spec/features/admin/blocked_domain_spec.rb +++ b/spec/features/admin/blocked_domain_spec.rb @@ -25,6 +25,6 @@ feature 'BlockedDomain', type: :feature do page.should have_content('cache.ee') d.valid? - d.errors.full_messages.should match_array(["Domain name Domain name is blocked"]) + d.errors.full_messages.should match_array(["Data management policy violation: Domain name is blocked [name]"]) end end From 0a0543c71513295d565a35b1f737fddbb208a799 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 28 Jul 2015 17:56:01 +0300 Subject: [PATCH 43/94] Switch user in registrar #2754 --- app/controllers/registrar/sessions_controller.rb | 6 ++++++ app/views/layouts/registrar/application.haml | 9 ++++++++- config/locales/en.yml | 2 +- config/routes.rb | 1 + spec/features/registrar/domain_spec.rb | 16 ++++++++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/controllers/registrar/sessions_controller.rb b/app/controllers/registrar/sessions_controller.rb index 940e5f415..6875d9291 100644 --- a/app/controllers/registrar/sessions_controller.rb +++ b/app/controllers/registrar/sessions_controller.rb @@ -64,6 +64,12 @@ class Registrar::SessionsController < Devise::SessionsController # rubocop:enable Metrics/MethodLength # rubocop:enable Metrics/AbcSize + def switch_user + @api_user = ApiUser.find(params[:id]) + sign_in @api_user if @api_user.identity_code == current_user.identity_code + redirect_to :back + end + def id @user = ApiUser.find_by_idc_data(request.env['SSL_CLIENT_S_DN']) diff --git a/app/views/layouts/registrar/application.haml b/app/views/layouts/registrar/application.haml index 8b92a5b6d..d6c8cf30c 100644 --- a/app/views/layouts/registrar/application.haml +++ b/app/views/layouts/registrar/application.haml @@ -49,8 +49,15 @@ %li{class: active_class}= link_to t(:xml_console), registrar_xml_console_path %ul.nav.navbar-nav.navbar-right + %li.dropdown + %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} + = "#{current_user} (#{current_user.roles.first}) - #{current_user.registrar}" + %span.caret + %ul.dropdown-menu{role: "menu"} + - ApiUser.where(identity_code: current_user.identity_code).includes(:registrar).each do |x| + %li= link_to "#{x} (#{x.roles.first}) - #{x.registrar}", "/registrar/switch_user/#{x.id}" - if user_signed_in? - %li= link_to t(:log_out, user: current_user), '/registrar/logout' + %li= link_to t(:log_out_), '/registrar/logout' .container = render 'shared/flash' diff --git a/config/locales/en.yml b/config/locales/en.yml index 2051e1e82..fc124e6a4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -555,7 +555,6 @@ en: username: 'Username' password: 'Password' log_in: 'Log in' - log_out: 'Log out (%{user})' domains: 'Domains' register: 'Register' check: 'Check' @@ -879,3 +878,4 @@ en: notes: Notes active_price_for_this_operation_is: 'Active price for this operation is %{price}' active_price_missing_for_this_operation: 'Active price missing for this operation!' + log_out_: 'Log out' diff --git a/config/routes.rb b/config/routes.rb index 925947ea9..c1b7ad237 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -41,6 +41,7 @@ Rails.application.routes.draw do post 'sessions' => 'sessions#create' post 'id' => 'sessions#id' post 'mid' => 'sessions#mid' + get 'switch_user/:id' => 'sessions#switch_user' get 'logout' => '/devise/sessions#destroy' end diff --git a/spec/features/registrar/domain_spec.rb b/spec/features/registrar/domain_spec.rb index c72f50b84..057a23849 100644 --- a/spec/features/registrar/domain_spec.rb +++ b/spec/features/registrar/domain_spec.rb @@ -39,5 +39,21 @@ feature 'Domains', type: :feature do visit '/registrar/domains/new' current_path.should == '/registrar/domains/new' end + + it 'should switch user' do + d1 = Fabricate(:domain, registrar: @user.registrar) + user2 = Fabricate(:api_user, identity_code: @user.identity_code) + d2 = Fabricate(:domain, registrar: user2.registrar) + + visit '/registrar/domains' + + page.should have_text(d1.name) + page.should_not have_text(d2.name) + + click_link "#{user2} (#{user2.roles.first}) - #{user2.registrar}" + + page.should_not have_text(d1.name) + page.should have_text(d2.name) + end end end From 1c7febf47ad5b344d8c67b28bd1ca2d37d461c5a Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 19:58:16 +0300 Subject: [PATCH 44/94] Email block list logging and fix --- app/mailers/application_mailer.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index 40266edb4..e89954b24 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -8,8 +8,8 @@ class ApplicationMailer < ActionMailer::Base emails = [emails] unless emails.is_a?(Array) emails = emails.flatten emails.each do |email| - next unless TEST_EMAILS.include?(email) - logger.warn "EMAIL SENDING WAS BLOCKED BY WHITELIST: #{email}" + next if TEST_EMAILS.include?(email) + logger.info "EMAIL SENDING WAS BLOCKED BY WHITELIST: #{email}" return true end false @@ -18,7 +18,7 @@ class ApplicationMailer < ActionMailer::Base # turn on delivery on specific (epp) request only, thus rake tasks does not deliver anything def delivery_off?(model) return false if model.deliver_emails == true - logger.warn "EMAIL SENDING WAS NOT ACTIVATED " \ + logger.info "EMAIL SENDING WAS NOT ACTIVATED " \ "BY MODEL OBJECT: id ##{model.try(:id)} deliver_emails returned false" true end From e876bf59a576f438068b2375fb858fc08066096f Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 20:28:26 +0300 Subject: [PATCH 45/94] Refactor emails #2786 --- app/mailers/contact_mailer.rb | 42 +++++++++++++---------------- app/models/contact.rb | 9 ++++++- config/initializers/settings.rb | 4 +++ spec/mailers/contact_mailer_spec.rb | 11 +++----- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/app/mailers/contact_mailer.rb b/app/mailers/contact_mailer.rb index 859f73088..0fda0fde0 100644 --- a/app/mailers/contact_mailer.rb +++ b/app/mailers/contact_mailer.rb @@ -1,33 +1,27 @@ class ContactMailer < ApplicationMailer # rubocop:disable Metrics/MethodLength - def email_updated(contact) + def email_updated(email, contact) return if delivery_off?(contact) @contact = contact - emails = [] - emails << [@contact.email, @contact.email_was] if @contact.registrant_domains.present? - emails << @contact.domains.map(&:registrant_email) if @contact.domains.present? - emails = emails.uniq - return if whitelist_blocked?(emails) - emails.each do |email| - begin - mail(to: email, subject: "#{I18n.t(:contact_email_update_subject)} [#{@contact.code}]") - rescue EOFError, - IOError, - TimeoutError, - Errno::ECONNRESET, - Errno::ECONNABORTED, - Errno::EPIPE, - Errno::ETIMEDOUT, - Net::SMTPAuthenticationError, - Net::SMTPServerBusy, - Net::SMTPFatalError, - Net::SMTPSyntaxError, - Net::SMTPUnknownError, - OpenSSL::SSL::SSLError => e - logger.warn "EMAIL SENDING FAILED: #{email}: #{e}" - end + return if whitelist_blocked?(email) + begin + mail(to: email, subject: "#{I18n.t(:contact_email_update_subject)} [#{@contact.code}]") + rescue EOFError, + IOError, + TimeoutError, + Errno::ECONNRESET, + Errno::ECONNABORTED, + Errno::EPIPE, + Errno::ETIMEDOUT, + Net::SMTPAuthenticationError, + Net::SMTPServerBusy, + Net::SMTPFatalError, + Net::SMTPSyntaxError, + Net::SMTPUnknownError, + OpenSSL::SSL::SSLError => e + logger.info "EMAIL SENDING FAILED: #{email}: #{e}" end end # rubocop:enable Metrics/MethodLength diff --git a/app/models/contact.rb b/app/models/contact.rb index 2ffba7a4f..51a9e5d6c 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -42,7 +42,14 @@ class Contact < ActiveRecord::Base before_update :manage_emails def manage_emails return nil unless email_changed? - ContactMailer.email_updated(self).deliver_now + return nil unless deliver_emails == true + emails = [] + emails << [email, email_was] + emails << domains.map(&:registrant_email) if domains.present? + emails = emails.flatten.uniq + emails.each do |e| + ContactMailer.email_updated(e, contact).deliver_now + end end before_save :manage_statuses diff --git a/config/initializers/settings.rb b/config/initializers/settings.rb index f121e3816..5dd1507c4 100644 --- a/config/initializers/settings.rb +++ b/config/initializers/settings.rb @@ -13,4 +13,8 @@ TEST_EMAILS = %w( info@gitlab.eu test@example.com test@example.org + old@example.org + new@example.org + old@example.com + new@example.com ) diff --git a/spec/mailers/contact_mailer_spec.rb b/spec/mailers/contact_mailer_spec.rb index fe4ccc84c..ce4adabef 100644 --- a/spec/mailers/contact_mailer_spec.rb +++ b/spec/mailers/contact_mailer_spec.rb @@ -4,8 +4,7 @@ describe ContactMailer do describe 'email changed notification when delivery turned off' do before :all do @contact = Fabricate(:contact, email: 'test@example.ee') - @contact.email = 'test@example.com' # new email - @mail = ContactMailer.email_updated(@contact) + @mail = ContactMailer.email_updated('test@example.com', @contact) end it 'should not render email subject' do @@ -31,8 +30,7 @@ describe ContactMailer do @contact = @domain.registrant @contact.reload # until figured out why registrant_domains not loaded @contact.deliver_emails = true - @contact.email = 'test@example.org' # new email - @mail = ContactMailer.email_updated(@contact) + @mail = ContactMailer.email_updated('info@example.org', @contact) end it 'should render email subject' do @@ -43,9 +41,8 @@ describe ContactMailer do @mail.from.should == ["noreply@internet.ee"] end - it 'should have both old and new receiver email' do - @mail.to.size.should == 2 - @mail.to.include? "test@example.org" + it 'should send to info email' do + @mail.to.should == ['info@example.org'] end it 'should render body' do From 1c64188eae7cecd5861ec498acfaf440ba9ed116 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 20:31:22 +0300 Subject: [PATCH 46/94] Fix typo #2786 --- app/models/contact.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 51a9e5d6c..027eb31cd 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -48,7 +48,7 @@ class Contact < ActiveRecord::Base emails << domains.map(&:registrant_email) if domains.present? emails = emails.flatten.uniq emails.each do |e| - ContactMailer.email_updated(e, contact).deliver_now + ContactMailer.email_updated(e, self).deliver_now end end From 3d43c53c9d3dbd0a757e5527a6e326fbf4534a9f Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 20:37:20 +0300 Subject: [PATCH 47/94] Updated email content #2804 --- app/views/contact_mailer/email_updated.html.erb | 6 +++--- app/views/contact_mailer/email_updated.text.erb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/views/contact_mailer/email_updated.html.erb b/app/views/contact_mailer/email_updated.html.erb index e4785444b..552e97cdf 100644 --- a/app/views/contact_mailer/email_updated.html.erb +++ b/app/views/contact_mailer/email_updated.html.erb @@ -29,9 +29,9 @@ Eesti Interneti SA

Hi <%= @contact.name %>

-E-mail address of <% @contact.name %> has been changed
-previous address: <% @contact.email_was %>
-new address: <% @contact.email %> +E-mail address of <%= @contact.name %> has been changed
+previous address: <%= @contact.email_was %>
+new address: <%= @contact.email %>

E-mail addresses are used to send important information regarding your registered domains including applications for approval of registrant change and domain deletion. Please make sure that the update and contact information are correct. Incase of problems please turn to your registrar. Your registrar is <%= @contact.registrar.name %>

diff --git a/app/views/contact_mailer/email_updated.text.erb b/app/views/contact_mailer/email_updated.text.erb index 61d875351..ce43b5401 100644 --- a/app/views/contact_mailer/email_updated.text.erb +++ b/app/views/contact_mailer/email_updated.text.erb @@ -29,9 +29,9 @@ Eesti Interneti SA Hi <%= @contact.name %> -E-mail address of <% @contact.name %> has been changed -previous address: <% @contact.email_was %> -new address: <% @contact.email %> +E-mail address of <%= @contact.name %> has been changed +previous address: <%= @contact.email_was %> +new address: <%= @contact.email %> E-mail addresses are used to send important information regarding your registered domains including applications for approval of registrant change and domain deletion. Please make sure that the update and contact information are correct. Incase of problems please turn to your registrar. Your registrar is <%= @contact.registrar.name %> From f43c6bbf9859c3535fd9430d113e2d5d42fdb8d9 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 21:02:09 +0300 Subject: [PATCH 48/94] Added default sort #2741 --- app/controllers/admin/pricelists_controller.rb | 1 + app/views/admin/pricelists/index.haml | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb index 200d27e48..34dd1e783 100644 --- a/app/controllers/admin/pricelists_controller.rb +++ b/app/controllers/admin/pricelists_controller.rb @@ -4,6 +4,7 @@ class Admin::PricelistsController < AdminController def index @q = Pricelist.search(params[:q]) + @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from desc'] if @q.sorts.empty? @pricelists = @q.result.page(params[:page]) end diff --git a/app/views/admin/pricelists/index.haml b/app/views/admin/pricelists/index.haml index 6cf83f6b8..2f51a4329 100644 --- a/app/views/admin/pricelists/index.haml +++ b/app/views/admin/pricelists/index.haml @@ -14,10 +14,10 @@ %tr %th{class: 'col-xs-2'} = sort_link(@q, 'category', t(:category)) - %th{class: 'col-xs-2'} - = sort_link(@q, 'operation_category', t(:operation)) %th{class: 'col-xs-2'} = sort_link(@q, 'duration', t(:duration)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'operation_category', t(:operation)) %th{class: 'col-xs-2'} = sort_link(@q, 'price', t(:price)) %th{class: 'col-xs-2'} @@ -31,8 +31,8 @@ - @pricelists.each do |pricelist| %tr %td= pricelist.category - %td= pricelist.operation_category %td= pricelist.duration + %td= pricelist.operation_category %td= pricelist.price %td= l(pricelist.valid_from, format: :ydate) %td= l(pricelist.valid_to, format: :ydate) From eec118868d13cfa4f823a8fb57b134c62efed6ba Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 21:19:52 +0300 Subject: [PATCH 49/94] Updated default pricelist sort #2741 --- app/controllers/admin/pricelists_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb index 34dd1e783..0ddfff825 100644 --- a/app/controllers/admin/pricelists_controller.rb +++ b/app/controllers/admin/pricelists_controller.rb @@ -4,7 +4,7 @@ class Admin::PricelistsController < AdminController def index @q = Pricelist.search(params[:q]) - @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from desc'] if @q.sorts.empty? + @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from desc', 'valid_to desc'] if @q.sorts.empty? @pricelists = @q.result.page(params[:page]) end From 4935e5c1215a1bab168e2145e9c941443fa8fffb Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 21:29:39 +0300 Subject: [PATCH 50/94] Updated default pricelist sort #2741 --- app/controllers/admin/pricelists_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb index 0ddfff825..2e1c3fbc8 100644 --- a/app/controllers/admin/pricelists_controller.rb +++ b/app/controllers/admin/pricelists_controller.rb @@ -4,7 +4,7 @@ class Admin::PricelistsController < AdminController def index @q = Pricelist.search(params[:q]) - @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from desc', 'valid_to desc'] if @q.sorts.empty? + @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from asc', 'valid_to asc'] if @q.sorts.empty? @pricelists = @q.result.page(params[:page]) end From e7a492dde5786880cef01fdca274c2574cb03c3d Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 21:31:18 +0300 Subject: [PATCH 51/94] Updated default pricelist sort #2741 --- app/controllers/admin/pricelists_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb index 2e1c3fbc8..ccbe3166f 100644 --- a/app/controllers/admin/pricelists_controller.rb +++ b/app/controllers/admin/pricelists_controller.rb @@ -4,7 +4,7 @@ class Admin::PricelistsController < AdminController def index @q = Pricelist.search(params[:q]) - @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from asc', 'valid_to asc'] if @q.sorts.empty? + @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from desc', 'valid_to asc'] if @q.sorts.empty? @pricelists = @q.result.page(params[:page]) end From b82ae85be2abb9f0265e410346255a7e77f6e67d Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 21:47:57 +0300 Subject: [PATCH 52/94] rubocop update --- app/mailers/contact_mailer.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/mailers/contact_mailer.rb b/app/mailers/contact_mailer.rb index 0fda0fde0..42968fe5a 100644 --- a/app/mailers/contact_mailer.rb +++ b/app/mailers/contact_mailer.rb @@ -1,5 +1,4 @@ class ContactMailer < ApplicationMailer - # rubocop:disable Metrics/MethodLength def email_updated(email, contact) return if delivery_off?(contact) @@ -24,5 +23,4 @@ class ContactMailer < ApplicationMailer logger.info "EMAIL SENDING FAILED: #{email}: #{e}" end end - # rubocop:enable Metrics/MethodLength end From 030f7a18b74181e9f555df50e609d194a0f24d9f Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 21:53:06 +0300 Subject: [PATCH 53/94] More room for admin epp log output --- app/views/admin/epp_logs/show.haml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/admin/epp_logs/show.haml b/app/views/admin/epp_logs/show.haml index 0840360f7..583124af7 100644 --- a/app/views/admin/epp_logs/show.haml +++ b/app/views/admin/epp_logs/show.haml @@ -31,7 +31,7 @@ %dd= @epp_log.created_at .row - .col-md-6 + .col-md-12 .panel.panel-default .panel-heading %h3.panel-title= t(:request) @@ -43,7 +43,8 @@ = formatted_req - else = @epp_log.request - .col-md-6 +.row + .col-md-12 .panel.panel-default .panel-heading %h3.panel-title= t(:response) From 86e01597a8f21b8bc3c0b07c330f02c1c7d47379 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 27 Jul 2015 21:09:39 +0300 Subject: [PATCH 54/94] Updated cron log #2792 --- app/models/contact.rb | 16 +++++++++++++--- app/models/domain.rb | 34 ++++++++++++++++++++++------------ app/models/invoice.rb | 6 ++++++ config/schedule.rb | 7 ++++--- 4 files changed, 45 insertions(+), 18 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 027eb31cd..c69797403 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -166,9 +166,19 @@ class Contact < ActiveRecord::Base end def destroy_orphans - logger.info "#{Time.zone.now.utc} - Destroying orphaned contacts\n" - count = find_orphans.destroy_all.count - logger.info "#{Time.zone.now.utc} - Successfully destroyed #{count} orphaned contacts\n" + STDOUT << "#{Time.zone.now.utc} - Destroying orphaned contacts\n" unless Rails.env.test? + + orphans = find_orphans + + unless Rails.env.test? + orphans.each do |m| + STDOUT << "#{Time.zone.now.utc} Contact.destroy_orphans: ##{m.id}\n" + end + end + + count = orphans.destroy_all.count + + STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{count} orphaned contacts\n" unless Rails.env.test? end def privs diff --git a/app/models/domain.rb b/app/models/domain.rb index 89dffb5b9..b9eaff917 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -182,6 +182,8 @@ class Domain < ActiveRecord::Base ) end + # rubocop: disable Metrics/AbcSize + # rubocop: disable Metrics/CyclomaticComplexity def clean_expired_pendings STDOUT << "#{Time.zone.now.utc} - Clean expired domain pendings\n" unless Rails.env.test? @@ -197,18 +199,24 @@ class Domain < ActiveRecord::Base end count += 1 domain.clean_pendings! + STDOUT << "#{Time.zone.now.utc} Domain.clean_expired_pendings: ##{domain.id}\n" unless Rails.env.test? end STDOUT << "#{Time.zone.now.utc} - Successfully cancelled #{count} domain pendings\n" unless Rails.env.test? count end + # rubocop: enable Metrics/AbcSize + # rubocop: enable Metrics/CyclomaticComplexity + # rubocop: disable Metrics/LineLength def start_expire_period STDOUT << "#{Time.zone.now.utc} - Expiring domains\n" unless Rails.env.test? domains = Domain.where('valid_to <= ?', Time.zone.now) domains.each do |domain| next unless domain.expirable? - domain.set_expired! + domain.set_expired + STDOUT << "#{Time.zone.now.utc} Domain.start_expire_period: ##{domain.id} #{domain.changes}\n" unless Rails.env.test? + domain.save(validate: false) end STDOUT << "#{Time.zone.now.utc} - Successfully expired #{domains.count} domains\n" unless Rails.env.test? @@ -218,12 +226,11 @@ class Domain < ActiveRecord::Base STDOUT << "#{Time.zone.now.utc} - Setting server_hold to domains\n" unless Rails.env.test? d = Domain.where('outzone_at <= ?', Time.zone.now) - d.each do |x| - next unless x.server_holdable? - x.statuses << DomainStatus::SERVER_HOLD - # TODO: This should be managed by automatic_statuses - x.statuses.delete(DomainStatus::OK) - x.save + d.each do |domain| + next unless domain.server_holdable? + domain.statuses << DomainStatus::SERVER_HOLD + STDOUT << "#{Time.zone.now.utc} Domain.start_redemption_grace_period: ##{domain.id} #{domain.changes}\n" unless Rails.env.test? + domain.save end STDOUT << "#{Time.zone.now.utc} - Successfully set server_hold to #{d.count} domains\n" unless Rails.env.test? @@ -233,11 +240,11 @@ class Domain < ActiveRecord::Base STDOUT << "#{Time.zone.now.utc} - Setting delete_candidate to domains\n" unless Rails.env.test? d = Domain.where('delete_at <= ?', Time.zone.now) - d.each do |x| - x.statuses << DomainStatus::DELETE_CANDIDATE if x.delete_candidateable? - # TODO: This should be managed by automatic_statuses - x.statuses.delete(DomainStatus::OK) - x.save + d.each do |domain| + next unless domain.delete_candidateable? + domain.statuses << DomainStatus::DELETE_CANDIDATE + STDOUT << "#{Time.zone.now.utc} Domain.start_delete_period: ##{domain.id} #{domain.changes}\n" unless Rails.env.test? + domain.save end return if Rails.env.test? @@ -251,17 +258,20 @@ class Domain < ActiveRecord::Base c = 0 Domain.where("statuses @> '{deleteCandidate}'::varchar[]").each do |x| x.destroy + STDOUT << "#{Time.zone.now.utc} Domain.destroy_delete_candidates: by deleteCandidate ##{x.id}\n" unless Rails.env.test? c += 1 end Domain.where('force_delete_at <= ?', Time.zone.now).each do |x| x.destroy + STDOUT << "#{Time.zone.now.utc} Domain.destroy_delete_candidates: by force delete time ##{x.id}\n" unless Rails.env.test? c += 1 end STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{c} domains\n" unless Rails.env.test? end # rubocop:enable Rails/FindEach + # rubocop: enable Metrics/LineLength end def name=(value) diff --git a/app/models/invoice.rb b/app/models/invoice.rb index f55851849..3232b34b9 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -45,6 +45,12 @@ class Invoice < ActiveRecord::Base 'due_date < ? AND cancelled_at IS NULL', cr_at ) + unless Rails.env.test? + invoices.each do |m| + STDOUT << "#{Time.zone.now.utc} Invoice.cancel_overdue_invoices: ##{m.id}\n" + end + end + count = invoices.update_all(cancelled_at: Time.zone.now) STDOUT << "#{Time.zone.now.utc} - Successfully cancelled #{count} overdue invoices\n" unless Rails.env.test? diff --git a/config/schedule.rb b/config/schedule.rb index c418de420..265306904 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -24,9 +24,10 @@ every :day, at: '12:10am' do runner 'Invoice.cancel_overdue_invoices' end -every :day, at: '12:15am' do - runner 'Domain.expire_domains' -end +# TODO +# every :day, at: '12:15am' do + # runner 'Domain.expire_domains' +# end every :day, at: '12:20am' do runner 'Domain.clean_expired_pendings' From 682d2918ce059a7f6327373627cbee128be0dbe3 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 27 Jul 2015 22:55:47 +0300 Subject: [PATCH 55/94] Log invalid cert message #2808 --- app/models/depp/user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/depp/user.rb b/app/models/depp/user.rb index 4efbd42d9..d510edecd 100644 --- a/app/models/depp/user.rb +++ b/app/models/depp/user.rb @@ -90,7 +90,8 @@ module Depp server.close_connection - rescue OpenSSL::SSL::SSLError + rescue OpenSSL::SSL::SSLError => e + Rails.logger.error "INVALID CERT: #{e}" errors.add(:base, :invalid_cert) end end From 7f44227370c1b5dcfb403d1c96011d27c75cb78e Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 27 Jul 2015 23:00:01 +0300 Subject: [PATCH 56/94] Api log contains only username + refactor #2793 --- app/controllers/application_controller.rb | 19 ++++--------------- app/controllers/epp_controller.rb | 6 ++++-- app/models/concerns/versions.rb | 20 ++++++++++---------- spec/epp/contact_spec.rb | 2 +- spec/epp/domain_spec.rb | 4 ++-- spec/epp/poll_spec.rb | 2 +- spec/epp/session_spec.rb | 6 +++--- spec/models/domain_spec.rb | 16 ++++++++-------- 8 files changed, 33 insertions(+), 42 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 5aa6c40f1..87099d6fa 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -56,15 +56,7 @@ class ApplicationController < ActionController::Base end def user_for_paper_trail - if defined?(current_user) && current_user.present? - # Most of the time it's not loaded in correct time because PaperTrail before filter kicks in - # before current_user is defined. PaperTrail is triggered also at current_user - api_user_log_str(current_user) - elsif current_user.present? - "#{current_user.id}-#{current_user.username}" - else - 'public' - end + user_log_str(current_user) end def depp_current_user @@ -74,11 +66,8 @@ class ApplicationController < ActionController::Base ) end - def api_user_log_str(user) - if user.present? - "#{user.id}-api-#{user.username}" - else - 'api-public' - end + def user_log_str(user) + return 'public' if user.nil? + "#{user.id}-#{user.class}: #{user.username}" end end diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index f5133a74c..a61b155a1 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -120,7 +120,7 @@ class EppController < ApplicationController @current_user ||= ApiUser.find_by_id(epp_session[:api_user_id]) # by default PaperTrail uses before filter and at that # time current_user is not yet present - ::PaperTrail.whodunnit = api_user_log_str(@current_user) + ::PaperTrail.whodunnit = user_log_str(@current_user) ::PaperSession.session = epp_session.session_id if epp_session.session_id.present? @current_user end @@ -350,6 +350,7 @@ class EppController < ApplicationController # rubocop: enable Style/PredicateName # rubocop: disable Metrics/CyclomaticComplexity + # rubocop: disable Metrics/PerceivedComplexity def write_to_epp_log # return nil if EPP_LOG_ENABLED request_command = params[:command] || params[:action] # error receives :command, other methods receive :action @@ -366,12 +367,13 @@ class EppController < ApplicationController request_successful: epp_errors.empty?, request_object: params[:epp_object_type], response: @response, - api_user_name: api_user_log_str(@api_user || current_user), + api_user_name: @api_user.try(:username) || current_user.try(:username) || 'api-public', api_user_registrar: @api_user.try(:registrar).try(:to_s) || current_user.try(:registrar).try(:to_s), ip: request.ip }) end # rubocop: enable Metrics/CyclomaticComplexity + # rubocop: enable Metrics/PerceivedComplexity def iptables_counter_update return if ENV['iptables_counter_enabled'].blank? && ENV['iptables_counter_enabled'] != 'true' diff --git a/app/models/concerns/versions.rb b/app/models/concerns/versions.rb index eff834218..2cbdca838 100644 --- a/app/models/concerns/versions.rb +++ b/app/models/concerns/versions.rb @@ -20,17 +20,15 @@ module Versions true end - # needs refactoring - # TODO: optimization work - # belongs_to :api_creator, class_name: 'ApiUser', foreign_key: :creator_str - # belongs_to :creator, class_name: 'User', foreign_key: :creator_str def creator return nil if creator_str.blank? - if creator_str =~ /^\d-api-/ - creator = ApiUser.find_by(id: creator_str) - else + if creator_str =~ /^\d+-AdminUser:/ creator = AdminUser.find_by(id: creator_str) + elsif creator_str =~ /^\d+-ApiUser:/ + creator = ApiUser.find_by(id: creator_str) + elsif creator_str =~ /^\d+-api-/ # depricated + creator = ApiUser.find_by(id: creator_str) end creator.present? ? creator : creator_str @@ -39,10 +37,12 @@ module Versions def updator return nil if updator_str.blank? - if updator_str =~ /^\d-api-/ - updator = ApiUser.find_by(id: updator_str) - else + if updator_str =~ /^\d+-AdminUser:/ updator = AdminUser.find_by(id: updator_str) + elsif updator_str =~ /^\d+-ApiUser:/ + updator = ApiUser.find_by(id: updator_str) + elsif updator_str =~ /^\d+-api-/ # depricated + updator = ApiUser.find_by(id: updator_str) end updator.present? ? updator : updator_str diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index dcd5e79db..b7b6bc976 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -85,7 +85,7 @@ describe 'EPP Contact', epp: true do log.request_command.should == 'create' log.request_object.should == 'contact' log.request_successful.should == true - log.api_user_name.should == '1-api-registrar1' + log.api_user_name.should == 'registrar1' log.api_user_registrar.should == 'registrar1' end diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index b0c7535fc..d89c846b0 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -67,7 +67,7 @@ describe 'EPP Domain', epp: true do log.request_command.should == 'create' log.request_object.should == 'domain' log.request_successful.should == false - log.api_user_name.should == '1-api-registrar1' + log.api_user_name.should == 'registrar1' log.api_user_registrar.should == 'registrar1' log.request.should_not be_blank log.response.should_not be_blank @@ -1061,7 +1061,7 @@ describe 'EPP Domain', epp: true do log.request_command.should == 'transfer' log.request_object.should == 'domain' log.request_successful.should == true - log.api_user_name.should == '2-api-registrar2' + log.api_user_name.should == 'registrar2' log.api_user_registrar.should == 'registrar2' log.request.should_not be_blank log.response.should_not be_blank diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index 99e91103c..53f82221a 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -32,7 +32,7 @@ describe 'EPP Poll', epp: true do log.request_command.should == 'poll' log.request_object.should == 'poll' log.request_successful.should == true - log.api_user_name.should == '1-api-registrar1' + log.api_user_name.should == 'registrar1' log.api_user_registrar.should == @registrar1.name log.request.should_not be_blank log.response.should_not be_blank diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 56910c1a3..d36e8f694 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -47,7 +47,7 @@ describe 'EPP Session', epp: true do log = ApiLog::EppLog.last log.request_command.should == 'login' log.request_successful.should == false - log.api_user_name.should == '2-api-inactive-user' + log.api_user_name.should == 'inactive-user' end it 'prohibits further actions unless logged in' do @@ -88,7 +88,7 @@ describe 'EPP Session', epp: true do log = ApiLog::EppLog.last log.request_command.should == 'login' log.request_successful.should == true - log.api_user_name.should == '1-api-gitlab' + log.api_user_name.should == 'gitlab' end it 'does not log in twice' do @@ -104,7 +104,7 @@ describe 'EPP Session', epp: true do log = ApiLog::EppLog.last log.request_command.should == 'login' log.request_successful.should == false - log.api_user_name.should == '1-api-gitlab' + log.api_user_name.should == 'gitlab' end it 'logs out epp user' do diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 4546ef580..dcb344c93 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -387,10 +387,10 @@ describe Domain do @api_user = Fabricate(:api_user) @user.id.should == 1 @api_user.id.should == 2 - ::PaperTrail.whodunnit = '2-api-testuser' + ::PaperTrail.whodunnit = '2-ApiUser: testuser' @domain = Fabricate(:domain) - @domain.creator_str.should == '2-api-testuser' + @domain.creator_str.should == '2-ApiUser: testuser' @domain.creator.should == @api_user @domain.creator.should_not == @user @@ -399,14 +399,14 @@ describe Domain do it 'should return api_creator when created by api user' do with_versioning do - @user = Fabricate(:admin_user) - @api_user = Fabricate(:api_user) - @user.id.should == 3 - @api_user.id.should == 4 - ::PaperTrail.whodunnit = '3-testuser' + @user = Fabricate(:admin_user, id: 1000) + @api_user = Fabricate(:api_user, id: 2000) + @user.id.should == 1000 + @api_user.id.should == 2000 + ::PaperTrail.whodunnit = '1000-AdminUser: testuser' @domain = Fabricate(:domain) - @domain.creator_str.should == '3-testuser' + @domain.creator_str.should == '1000-AdminUser: testuser' @domain.creator.should == @user @domain.creator.should_not == @api_user From 4178b7d97d1a3f2c822d2a673e453124cc167097 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 10:33:13 +0300 Subject: [PATCH 57/94] Restore eis custom files #2793 --- .../initializers/eis_custom_active_model.rb | 18 +++++++++++++ .../initializers/eis_custom_active_record.rb | 7 +++++ config/initializers/eis_custom_flash.rb | 27 +++++++++++++++++++ config/initializers/eis_custom_rack.rb | 14 ++++++++++ 4 files changed, 66 insertions(+) create mode 100644 config/initializers/eis_custom_active_model.rb create mode 100644 config/initializers/eis_custom_active_record.rb create mode 100644 config/initializers/eis_custom_flash.rb create mode 100644 config/initializers/eis_custom_rack.rb diff --git a/config/initializers/eis_custom_active_model.rb b/config/initializers/eis_custom_active_model.rb new file mode 100644 index 000000000..f41a42325 --- /dev/null +++ b/config/initializers/eis_custom_active_model.rb @@ -0,0 +1,18 @@ +# Log all active model user errors +module ActiveModel + class Errors + def add(attribute, message = :invalid, options = {}) + message = normalize_message(attribute, message, options) + if exception = options[:strict] + exception = ActiveModel::StrictValidationFailed if exception == true + raise exception, full_message(attribute, message) + end + + # CUSTOM logging + Rails.logger.info "USER MSG: ACTIVEMODEL: #{@base.try(:class)} [#{attribute}] #{message}" if message.present? + # END of CUSTOM logging + + self[attribute] << message + end + end +end diff --git a/config/initializers/eis_custom_active_record.rb b/config/initializers/eis_custom_active_record.rb new file mode 100644 index 000000000..546f5a4ae --- /dev/null +++ b/config/initializers/eis_custom_active_record.rb @@ -0,0 +1,7 @@ +# Log all user issues raised by active record +class ActiveRecord::Base + after_validation do |m| + Rails.logger.info "USER MSG: ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? + true + end +end diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb new file mode 100644 index 000000000..ed5832e85 --- /dev/null +++ b/config/initializers/eis_custom_flash.rb @@ -0,0 +1,27 @@ +# Log all flash messages +module ActionDispatch + class Flash + def call(env) + @app.call(env) + ensure + session = Request::Session.find(env) || {} + flash_hash = env[KEY] + + if flash_hash && (flash_hash.present? || session.key?('flash')) + session["flash"] = flash_hash.to_session_value + + # EIS custom logging + Rails.logger.info "USER MSG: FLASH: #{session['flash']['flashes'].inspect}" if session['flash'] + # END OF EIS custom logging + + env[KEY] = flash_hash.dup + end + + if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?) + session.key?('flash') && session['flash'].nil? + session.delete('flash') + end + end + end +end + diff --git a/config/initializers/eis_custom_rack.rb b/config/initializers/eis_custom_rack.rb new file mode 100644 index 000000000..52dbd8244 --- /dev/null +++ b/config/initializers/eis_custom_rack.rb @@ -0,0 +1,14 @@ +# EIS custom rack hack in order to enable test external interfaces EPP/REPP inside webserver network +# rubocop:disable Metrics/LineLength +module Rack + class Request + def trusted_proxy?(ip) + if ENV['eis_trusted_proxies'] + ENV['eis_trusted_proxies'].split(',').map(&:strip).include?(ip) + else + ip =~ /\A127\.0\.0\.1\Z|\A(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|\A::1\Z|\Afd[0-9a-f]{2}:.+|\Alocalhost\Z|\Aunix\Z|\Aunix:/i + end + end + end +end +# rubocop:enable Metrics/LineLength From 7fd6f6a55d5a76910f59f9e1429ecccdb008f893 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 11:47:48 +0300 Subject: [PATCH 58/94] Added domain pending update new registrant notification #2804 --- app/mailers/domain_mailer.rb | 23 +++++++++ ...pdate_new_registrant_notification.html.erb | 49 +++++++++++++++++++ ...pdate_new_registrant_notification.text.erb | 49 +++++++++++++++++++ config/locales/en.yml | 1 + spec/mailers/domain_mailer_spec.rb | 31 +++++++++++- 5 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 app/views/domain_mailer/pending_update_new_registrant_notification.html.erb create mode 100644 app/views/domain_mailer/pending_update_new_registrant_notification.text.erb diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index 936a4559c..f7de5171a 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -23,6 +23,29 @@ class DomainMailer < ApplicationMailer subject: "#{I18n.t(:domain_registrant_pending_updated_subject, name: @domain.name)} [#{@domain.name}]") end + def pending_update_new_registrant_notification(domain) + @domain = domain + return if delivery_off?(@domain) + + if @domain.registrant_verification_token.blank? + logger.warn "EMAIL NOT DELIVERED: registrant_verification_token is missing for #{@domain.name}" + return + end + + if @domain.registrant_verification_asked_at.blank? + logger.warn "EMAIL NOT DELIVERED: registrant_verification_asked_at is missing for #{@domain.name}" + return + end + + @new_registrant = @domain.registrant # NB! new registrant at this point + @old_registrant = Registrant.find(@domain.registrant_id_was) + + return if whitelist_blocked?(@new_registrant.email) + mail(to: @new_registrant.email, + subject: "#{I18n.t(:domain_pending_update_new_registrant_notification_subject, + name: @domain.name)} [#{@domain.name}]") + end + def registrant_updated(domain) @domain = domain return if delivery_off?(@domain) diff --git a/app/views/domain_mailer/pending_update_new_registrant_notification.html.erb b/app/views/domain_mailer/pending_update_new_registrant_notification.html.erb new file mode 100644 index 000000000..27bec4401 --- /dev/null +++ b/app/views/domain_mailer/pending_update_new_registrant_notification.html.erb @@ -0,0 +1,49 @@ +Tere, +

+Registripidaja <%= @domain.registrar_name %> vahendusel on algatatud <%= @domain.name %> domeeni omanikuvahetuse protseduur. +

+Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduge oma registripidaja poole. Teie registripidaja on <%= @domain.registrar_name %> +

+Uued registreerija andmed:
+Nimi: <%= @domain.registrant_name %>
+<% if @domain.registrant.priv? %> + Isikukood: <%= @domain.registrant_ident %>
+<% else %> + Äriregistrikood: <%= @domain.registrant_ident %>
+<% end %> +Tänav: <%= @domain.registrant_street %>
+Linn: <%= @domain.registrant_city %>
+Riik: <%= @domain.registrant_country %> +

+Juhime Teie tähelepanu asjaolule, et omanikuvahetuse protseduur viiaks lõpule vaid juhul, kui domeeni hetkel kehtiv registreerija <%= @old_registrant.name %> omanikuvahetuse tähtaegselt kinnitab. +

+Juhul kui <%= @old_registrant.name %> lükkab omanikuvahtuse taotluse tagasi või ei anna kinnitust enne <%= Setting.expire_pending_confirmation %> tundi, omanikuvahetuse protseduur tühistatakse.
+

+Taotlus on aktiivne <%= Setting.expire_pending_confirmation %> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka. +

+Küsimuste korral palun võtke ühendust registripidajaga <%= @domain.registrar_name %>, kelle kontaktid leiate http://internet.ee/registripidajad/akrediteeritud-registripidajad +

+Lugupidamisega
+Eesti Interneti SA +

+
+

+Hi, +

+Registrant change process for the domain <%= @domain.name %> has been started. +

+New registrant:
+Name: <%= @domain.registrant_name %>
+<% if @domain.registrant.priv? %> +Personal code: <%= @domain.registrant_ident %>
+<% else %> +Business Registry code: <%= @domain.registrant_ident %>
+<% end %> +Street: <%= @domain.registrant_street %>
+City: <%= @domain.registrant_city %>
+Country: <%= @domain.registrant_country %>
+

+Please contact to your registrar <%= @domain.registrar_name %> if you have any questions. +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/domain_mailer/pending_update_new_registrant_notification.text.erb b/app/views/domain_mailer/pending_update_new_registrant_notification.text.erb new file mode 100644 index 000000000..e4a401977 --- /dev/null +++ b/app/views/domain_mailer/pending_update_new_registrant_notification.text.erb @@ -0,0 +1,49 @@ +Tere, + +Registripidaja <%= @domain.registrar_name %> vahendusel on algatatud <%= @domain.name %> domeeni omanikuvahetuse protseduur. + +Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduge oma registripidaja poole. Teie registripidaja on <%= @domain.registrar_name %> + +Uued registreerija andmed: +Nimi: <%= @domain.registrant_name %> +<% if @domain.registrant.priv? %> +Isikukood: <%= @domain.registrant_ident %> +<% else %> +Äriregistrikood: <%= @domain.registrant_ident %> +<% end %> +Tänav: <%= @domain.registrant_street %> +Linn: <%= @domain.registrant_city %> +Riik: <%= @domain.registrant_country %> + +Juhime Teie tähelepanu asjaolule, et omanikuvahetuse protseduur viiaks lõpule vaid juhul, kui domeeni hetkel kehtiv registreerija <%= @old_registrant.name %> omanikuvahetuse tähtaegselt kinnitab. + +Juhul kui <%= @old_registrant.name %> lükkab omanikuvahtuse taotluse tagasi või ei anna kinnitust enne <%= Setting.expire_pending_confirmation %> tundi, omanikuvahetuse protseduur tühistatakse. + +Taotlus on aktiivne <%= Setting.expire_pending_confirmation %> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka. + +Küsimuste korral palun võtke ühendust registripidajaga <%= @domain.registrar_name %>, kelle kontaktid leiate http://internet.ee/registripidajad/akrediteeritud-registripidajad + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Registrant change process for the domain <%= @domain.name %> has been started. + +New registrant: +Name: <%= @domain.registrant_name %> +<% if @domain.registrant.priv? %> +Personal code: <%= @domain.registrant_ident %> +<% else %> +Business Registry code: <%= @domain.registrant_ident %> +<% end %> +Street: <%= @domain.registrant_street %> +City: <%= @domain.registrant_city %> +Country: <%= @domain.registrant_country %> + +Please contact to your registrar <%= @domain.registrar_name %> if you have any questions. + +Best Regards, +Estonian Internet Foundation diff --git a/config/locales/en.yml b/config/locales/en.yml index fc124e6a4..a25260496 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -778,6 +778,7 @@ en: contact_email_update_subject: 'Teie domeenide kontakt epostiaadress on muutunud / Contact e-mail addresses of your domains have changed' object_status_prohibits_operation: 'Object status prohibits operation' domain_registrant_pending_updated_subject: "Kinnitustaotlus domeeni %{name} registreerija vahetuseks / Application for approval for registrant chache of %{name}" + domain_pending_update_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetus protseduur on algatatud / %{name} registrant change" domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index ada60a741..a0701c1bd 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -25,7 +25,7 @@ describe DomainMailer do end end - describe 'email changed notification' do + describe 'registrant change request for old registrant' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') @new_registrant = Fabricate(:registrant, email: 'test@example.org') @@ -58,6 +58,35 @@ describe DomainMailer do end end + describe 'registrant change notification for new registrant' do + before :all do + @registrant = Fabricate(:registrant, email: 'old@example.com') + @new_registrant = Fabricate(:registrant, email: 'new@example.org') + @domain = Fabricate(:domain, registrant: @registrant) + @domain.deliver_emails = true + @domain.registrant_verification_token = '123' + @domain.registrant_verification_asked_at = Time.zone.now + @domain.registrant = @new_registrant + @mail = DomainMailer.pending_update_new_registrant_notification(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /protseduur on algatatud/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send confirm email to new registrant email' do + @mail.to.should == ["new@example.org"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /vahendusel on algatatud/ + end + end + describe 'domain pending delete notification when delivery turned off' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') From 0b132d5c1a1f8035f4222ed08157c152ee9e175e Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 11:55:01 +0300 Subject: [PATCH 59/94] Move all mailers under subdir #2804 --- app/mailers/application_mailer.rb | 1 + app/views/{ => mailers}/contact_mailer/email_updated.html.erb | 0 app/views/{ => mailers}/contact_mailer/email_updated.text.erb | 0 app/views/{ => mailers}/domain_mailer/pending_deleted.html.erb | 0 app/views/{ => mailers}/domain_mailer/pending_deleted.text.erb | 0 .../pending_update_new_registrant_notification.html.erb | 0 .../pending_update_new_registrant_notification.text.erb | 0 .../domain_mailer/registrant_pending_updated.html.erb | 0 .../domain_mailer/registrant_pending_updated.text.erb | 0 .../{ => mailers}/domain_mailer/registrant_updated.html.erb | 0 .../{ => mailers}/domain_mailer/registrant_updated.text.erb | 0 app/views/{ => mailers}/invoice_mailer/invoice_email.html.erb | 0 app/views/{ => mailers}/invoice_mailer/invoice_email.text.erb | 0 13 files changed, 1 insertion(+) rename app/views/{ => mailers}/contact_mailer/email_updated.html.erb (100%) rename app/views/{ => mailers}/contact_mailer/email_updated.text.erb (100%) rename app/views/{ => mailers}/domain_mailer/pending_deleted.html.erb (100%) rename app/views/{ => mailers}/domain_mailer/pending_deleted.text.erb (100%) rename app/views/{ => mailers}/domain_mailer/pending_update_new_registrant_notification.html.erb (100%) rename app/views/{ => mailers}/domain_mailer/pending_update_new_registrant_notification.text.erb (100%) rename app/views/{ => mailers}/domain_mailer/registrant_pending_updated.html.erb (100%) rename app/views/{ => mailers}/domain_mailer/registrant_pending_updated.text.erb (100%) rename app/views/{ => mailers}/domain_mailer/registrant_updated.html.erb (100%) rename app/views/{ => mailers}/domain_mailer/registrant_updated.text.erb (100%) rename app/views/{ => mailers}/invoice_mailer/invoice_email.html.erb (100%) rename app/views/{ => mailers}/invoice_mailer/invoice_email.text.erb (100%) diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index e89954b24..1ed7e0ce7 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -1,4 +1,5 @@ class ApplicationMailer < ActionMailer::Base + append_view_path Rails.root.join('app', 'views', 'mailers') default from: 'noreply@internet.ee' layout 'mailer' diff --git a/app/views/contact_mailer/email_updated.html.erb b/app/views/mailers/contact_mailer/email_updated.html.erb similarity index 100% rename from app/views/contact_mailer/email_updated.html.erb rename to app/views/mailers/contact_mailer/email_updated.html.erb diff --git a/app/views/contact_mailer/email_updated.text.erb b/app/views/mailers/contact_mailer/email_updated.text.erb similarity index 100% rename from app/views/contact_mailer/email_updated.text.erb rename to app/views/mailers/contact_mailer/email_updated.text.erb diff --git a/app/views/domain_mailer/pending_deleted.html.erb b/app/views/mailers/domain_mailer/pending_deleted.html.erb similarity index 100% rename from app/views/domain_mailer/pending_deleted.html.erb rename to app/views/mailers/domain_mailer/pending_deleted.html.erb diff --git a/app/views/domain_mailer/pending_deleted.text.erb b/app/views/mailers/domain_mailer/pending_deleted.text.erb similarity index 100% rename from app/views/domain_mailer/pending_deleted.text.erb rename to app/views/mailers/domain_mailer/pending_deleted.text.erb diff --git a/app/views/domain_mailer/pending_update_new_registrant_notification.html.erb b/app/views/mailers/domain_mailer/pending_update_new_registrant_notification.html.erb similarity index 100% rename from app/views/domain_mailer/pending_update_new_registrant_notification.html.erb rename to app/views/mailers/domain_mailer/pending_update_new_registrant_notification.html.erb diff --git a/app/views/domain_mailer/pending_update_new_registrant_notification.text.erb b/app/views/mailers/domain_mailer/pending_update_new_registrant_notification.text.erb similarity index 100% rename from app/views/domain_mailer/pending_update_new_registrant_notification.text.erb rename to app/views/mailers/domain_mailer/pending_update_new_registrant_notification.text.erb diff --git a/app/views/domain_mailer/registrant_pending_updated.html.erb b/app/views/mailers/domain_mailer/registrant_pending_updated.html.erb similarity index 100% rename from app/views/domain_mailer/registrant_pending_updated.html.erb rename to app/views/mailers/domain_mailer/registrant_pending_updated.html.erb diff --git a/app/views/domain_mailer/registrant_pending_updated.text.erb b/app/views/mailers/domain_mailer/registrant_pending_updated.text.erb similarity index 100% rename from app/views/domain_mailer/registrant_pending_updated.text.erb rename to app/views/mailers/domain_mailer/registrant_pending_updated.text.erb diff --git a/app/views/domain_mailer/registrant_updated.html.erb b/app/views/mailers/domain_mailer/registrant_updated.html.erb similarity index 100% rename from app/views/domain_mailer/registrant_updated.html.erb rename to app/views/mailers/domain_mailer/registrant_updated.html.erb diff --git a/app/views/domain_mailer/registrant_updated.text.erb b/app/views/mailers/domain_mailer/registrant_updated.text.erb similarity index 100% rename from app/views/domain_mailer/registrant_updated.text.erb rename to app/views/mailers/domain_mailer/registrant_updated.text.erb diff --git a/app/views/invoice_mailer/invoice_email.html.erb b/app/views/mailers/invoice_mailer/invoice_email.html.erb similarity index 100% rename from app/views/invoice_mailer/invoice_email.html.erb rename to app/views/mailers/invoice_mailer/invoice_email.html.erb diff --git a/app/views/invoice_mailer/invoice_email.text.erb b/app/views/mailers/invoice_mailer/invoice_email.text.erb similarity index 100% rename from app/views/invoice_mailer/invoice_email.text.erb rename to app/views/mailers/invoice_mailer/invoice_email.text.erb From 8536ac2d6fca25fcf41f0f90e7788c98c45b6db0 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 12:00:02 +0300 Subject: [PATCH 60/94] Activate pending update new registrant notification #2804 --- app/models/domain.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/domain.rb b/app/models/domain.rb index b9eaff917..cd9f61e89 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -361,6 +361,7 @@ class Domain < ActiveRecord::Base changes_cache = changes DomainMailer.registrant_pending_updated(self).deliver_now + DomainMailer.pending_update_new_registrant_notification(self).deliver_now reload # revert back to original From 726231c4e6c87a4f35aac13dc0efe13aa623effa Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 12:10:28 +0300 Subject: [PATCH 61/94] Refactor domain mailers pending updates #2804 --- app/mailers/domain_mailer.rb | 13 ++++++++----- app/models/domain.rb | 2 +- ... pending_update_old_registrant_request.html.erb} | 0 ... pending_update_old_registrant_request.text.erb} | 0 config/locales/en.yml | 4 ++-- spec/mailers/domain_mailer_spec.rb | 6 +++--- 6 files changed, 14 insertions(+), 11 deletions(-) rename app/views/mailers/domain_mailer/{registrant_pending_updated.html.erb => pending_update_old_registrant_request.html.erb} (100%) rename app/views/mailers/domain_mailer/{registrant_pending_updated.text.erb => pending_update_old_registrant_request.text.erb} (100%) diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index f7de5171a..822d4a22f 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -1,5 +1,5 @@ class DomainMailer < ApplicationMailer - def registrant_pending_updated(domain) + def pending_update_old_registrant_request(domain) @domain = domain return if delivery_off?(@domain) @@ -20,7 +20,8 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@old_registrant.email) mail(to: @old_registrant.email, - subject: "#{I18n.t(:domain_registrant_pending_updated_subject, name: @domain.name)} [#{@domain.name}]") + subject: "#{I18n.t(:pending_update_old_registrant_request_subject, + name: @domain.name)} [#{@domain.name}]") end def pending_update_new_registrant_notification(domain) @@ -42,7 +43,7 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@new_registrant.email) mail(to: @new_registrant.email, - subject: "#{I18n.t(:domain_pending_update_new_registrant_notification_subject, + subject: "#{I18n.t(:pending_update_new_registrant_notification_subject, name: @domain.name)} [#{@domain.name}]") end @@ -52,7 +53,8 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@domain.registrant_email) mail(to: @domain.registrant_email, - subject: "#{I18n.t(:domain_registrant_updated, name: @domain.name)} [#{@domain.name}]") + subject: "#{I18n.t(:domain_registrant_updated, + name: @domain.name)} [#{@domain.name}]") end def pending_deleted(domain) @@ -76,6 +78,7 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@old_registrant.email) mail(to: @old_registrant.email, - subject: "#{I18n.t(:domain_pending_deleted_subject, name: @domain.name)} [#{@domain.name}]") + subject: "#{I18n.t(:domain_pending_deleted_subject, + name: @domain.name)} [#{@domain.name}]") end end diff --git a/app/models/domain.rb b/app/models/domain.rb index cd9f61e89..d77587d40 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -360,7 +360,7 @@ class Domain < ActiveRecord::Base asked_at = registrant_verification_asked_at changes_cache = changes - DomainMailer.registrant_pending_updated(self).deliver_now + DomainMailer.pending_update_old_registrant_request(self).deliver_now DomainMailer.pending_update_new_registrant_notification(self).deliver_now reload # revert back to original diff --git a/app/views/mailers/domain_mailer/registrant_pending_updated.html.erb b/app/views/mailers/domain_mailer/pending_update_old_registrant_request.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant_pending_updated.html.erb rename to app/views/mailers/domain_mailer/pending_update_old_registrant_request.html.erb diff --git a/app/views/mailers/domain_mailer/registrant_pending_updated.text.erb b/app/views/mailers/domain_mailer/pending_update_old_registrant_request.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant_pending_updated.text.erb rename to app/views/mailers/domain_mailer/pending_update_old_registrant_request.text.erb diff --git a/config/locales/en.yml b/config/locales/en.yml index a25260496..f083a40e3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -777,8 +777,8 @@ en: unimplemented_object_service: 'Unimplemented object service' contact_email_update_subject: 'Teie domeenide kontakt epostiaadress on muutunud / Contact e-mail addresses of your domains have changed' object_status_prohibits_operation: 'Object status prohibits operation' - domain_registrant_pending_updated_subject: "Kinnitustaotlus domeeni %{name} registreerija vahetuseks / Application for approval for registrant chache of %{name}" - domain_pending_update_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetus protseduur on algatatud / %{name} registrant change" + pending_update_old_registrant_request_subject: "Kinnitustaotlus domeeni %{name} registreerija vahetuseks / Application for approval for registrant chache of %{name}" + pending_update_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetus protseduur on algatatud / %{name} registrant change" domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index a0701c1bd..a78e4d030 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -1,11 +1,11 @@ require 'rails_helper' describe DomainMailer do - describe 'registrant changed notification when delivery turned off' do + describe 'registrant change request for old registrant when delivery turned off' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') @domain = Fabricate(:domain, registrant: @registrant) - @mail = DomainMailer.registrant_pending_updated(@domain) + @mail = DomainMailer.pending_update_old_registrant_request(@domain) end it 'should not render email subject' do @@ -34,7 +34,7 @@ describe DomainMailer do @domain.registrant_verification_token = '123' @domain.registrant_verification_asked_at = Time.zone.now @domain.registrant = @new_registrant - @mail = DomainMailer.registrant_pending_updated(@domain) + @mail = DomainMailer.pending_update_old_registrant_request(@domain) end it 'should render email subject' do From 00d42ef3c4c98422fb0418ab729a287178da9434 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 15:59:14 +0300 Subject: [PATCH 62/94] Email notification when pending update rejected #2786 --- app/jobs/domain_update_confirm_job.rb | 1 + app/mailers/domain_mailer.rb | 13 +++++++++++++ app/models/domain.rb | 6 ++++++ ...ected_new_registrant_notification.html.erb | 19 +++++++++++++++++++ ...ected_new_registrant_notification.text.erb | 19 +++++++++++++++++++ config/locales/en.yml | 1 + 6 files changed, 59 insertions(+) create mode 100644 app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.html.erb create mode 100644 app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.text.erb diff --git a/app/jobs/domain_update_confirm_job.rb b/app/jobs/domain_update_confirm_job.rb index 2310eaad4..9fd21f22e 100644 --- a/app/jobs/domain_update_confirm_job.rb +++ b/app/jobs/domain_update_confirm_job.rb @@ -8,6 +8,7 @@ class DomainUpdateConfirmJob < Que::Job domain.apply_pending_update! domain.clean_pendings! when RegistrantVerification::REJECTED + DomainMailer.pending_update_rejected_new_registrant_notification(domain).deliver_now domain.clean_pendings! end destroy # it's best to destroy the job in the same transaction diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index 822d4a22f..00b5cfb8d 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -57,6 +57,19 @@ class DomainMailer < ApplicationMailer name: @domain.name)} [#{@domain.name}]") end + def pending_update_rejected_new_registrant_notification(domain) + @domain = domain + # no delivery off control, driggered by que, no epp request + + @new_registrant_email = @domain.pending_json[:new_registrant_email] + @new_registrant_name = @domain.pending_json[:new_registrant_name] + + return if whitelist_blocked?(@new_registrant_email) + mail(to: @new_registrant_email, + subject: "#{I18n.t(:pending_update_rejected_new_registrant_notification_subject, + name: @domain.name)} [#{@domain.name}]") + end + def pending_deleted(domain) @domain = domain return if delivery_off?(@domain) diff --git a/app/models/domain.rb b/app/models/domain.rb index d77587d40..98d1e5697 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -359,6 +359,9 @@ class Domain < ActiveRecord::Base token = registrant_verification_token asked_at = registrant_verification_asked_at changes_cache = changes + new_registrant_id = registrant.id + new_registrant_email = registrant.email + new_registrant_name = registrant.name DomainMailer.pending_update_old_registrant_request(self).deliver_now DomainMailer.pending_update_new_registrant_notification(self).deliver_now @@ -370,6 +373,9 @@ class Domain < ActiveRecord::Base self.registrant_verification_asked_at = asked_at self.statuses = [DomainStatus::PENDING_UPDATE] pending_json[:domain] = changes_cache + pending_json[:new_registrant_id] = new_registrant_id + pending_json[:new_registrant_email] = new_registrant_email + pending_json[:new_registrant_name] = new_registrant_name end # rubocop: disable Metrics/CyclomaticComplexity diff --git a/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.html.erb b/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.html.erb new file mode 100644 index 000000000..94672f176 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.html.erb @@ -0,0 +1,19 @@ +Tere, +

+Domeeni <%= @domain.name %> registreerija <%= @new_registrant_name %> on domeeni registreerija vahetamise taotluse tagasi lükanud. +

+Küsimuste korral palun võtke ühendust registripidajaga <%= @domain.registrar_name %>, kelle kontaktid leiate http://internet.ee/registripidajad/akrediteeritud-registripidajad +

+Lugupidamisega,
+Eesti Interneti SA +

+
+

+Hi, +

+Registrant change was declined for the domain <%= @domain.name %>. +

+Please contact to your registrar <%= @domain.registrar_name %> if you have any questions. +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.text.erb b/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.text.erb new file mode 100644 index 000000000..afdf06325 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.text.erb @@ -0,0 +1,19 @@ +Tere, + +Domeeni <%= @domain.name %> registreerija <%= @new_registrant_name %> on domeeni registreerija vahetamise taotluse tagasi lükanud. + +Küsimuste korral palun võtke ühendust registripidajaga <%= @domain.registrar_name %>, kelle kontaktid leiate http://internet.ee/registripidajad/akrediteeritud-registripidajad + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Registrant change was declined for the domain <%= @domain.name %>. + +Please contact to your registrar <%= @domain.registrar_name %> if you have any questions. + +Best Regards, +Estonian Internet Foundation diff --git a/config/locales/en.yml b/config/locales/en.yml index f083a40e3..837ee6b35 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -779,6 +779,7 @@ en: object_status_prohibits_operation: 'Object status prohibits operation' pending_update_old_registrant_request_subject: "Kinnitustaotlus domeeni %{name} registreerija vahetuseks / Application for approval for registrant chache of %{name}" pending_update_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetus protseduur on algatatud / %{name} registrant change" + pending_update_rejected_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetuse taotlus tagasi lükatud / %{name} registrant change declined" domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' From 8a92591df714ea9513e1963eb56d6555d5a5a353 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 17:32:14 +0300 Subject: [PATCH 63/94] Added multiple domain emails #2786 --- app/jobs/domain_update_confirm_job.rb | 2 +- app/mailers/domain_mailer.rb | 45 +++++- app/models/domain.rb | 5 +- app/models/epp/domain.rb | 4 +- ...d_notification_for_new_registrant.html.erb | 19 +++ ...d_notification_for_new_registrant.text.erb | 19 +++ ..._notification_for_new_registrant.html.erb} | 0 ..._notification_for_new_registrant.text.erb} | 0 ..._notification_for_new_registrant.html.erb} | 0 ..._notification_for_new_registrant.text.erb} | 0 ...pdate_request_for_old_registrant.html.erb} | 0 ...pdate_request_for_old_registrant.text.erb} | 0 ..._notification_for_new_registrant.html.erb} | 0 ..._notification_for_new_registrant.text.erb} | 0 ...d_notification_for_old_registrant.html.erb | 21 +++ ...d_notification_for_old_registrant.text.erb | 21 +++ config/locales/en.yml | 10 +- spec/mailers/domain_mailer_spec.rb | 144 ++++++++++++++---- 18 files changed, 243 insertions(+), 47 deletions(-) create mode 100644 app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb create mode 100644 app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.text.erb rename app/views/mailers/domain_mailer/{pending_update_new_registrant_notification.html.erb => pending_update_notification_for_new_registrant.html.erb} (100%) rename app/views/mailers/domain_mailer/{pending_update_new_registrant_notification.text.erb => pending_update_notification_for_new_registrant.text.erb} (100%) rename app/views/mailers/domain_mailer/{pending_update_rejected_new_registrant_notification.html.erb => pending_update_rejected_notification_for_new_registrant.html.erb} (100%) rename app/views/mailers/domain_mailer/{pending_update_rejected_new_registrant_notification.text.erb => pending_update_rejected_notification_for_new_registrant.text.erb} (100%) rename app/views/mailers/domain_mailer/{pending_update_old_registrant_request.html.erb => pending_update_request_for_old_registrant.html.erb} (100%) rename app/views/mailers/domain_mailer/{pending_update_old_registrant_request.text.erb => pending_update_request_for_old_registrant.text.erb} (100%) rename app/views/mailers/domain_mailer/{registrant_updated.html.erb => registrant_updated_notification_for_new_registrant.html.erb} (100%) rename app/views/mailers/domain_mailer/{registrant_updated.text.erb => registrant_updated_notification_for_new_registrant.text.erb} (100%) create mode 100644 app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.html.erb create mode 100644 app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.text.erb diff --git a/app/jobs/domain_update_confirm_job.rb b/app/jobs/domain_update_confirm_job.rb index 9fd21f22e..ab57e0a45 100644 --- a/app/jobs/domain_update_confirm_job.rb +++ b/app/jobs/domain_update_confirm_job.rb @@ -8,7 +8,7 @@ class DomainUpdateConfirmJob < Que::Job domain.apply_pending_update! domain.clean_pendings! when RegistrantVerification::REJECTED - DomainMailer.pending_update_rejected_new_registrant_notification(domain).deliver_now + DomainMailer.pending_update_rejected_notification_for_new_registrant(domain).deliver_now domain.clean_pendings! end destroy # it's best to destroy the job in the same transaction diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index 00b5cfb8d..eb724a222 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -1,5 +1,5 @@ class DomainMailer < ApplicationMailer - def pending_update_old_registrant_request(domain) + def pending_update_request_for_old_registrant(domain) @domain = domain return if delivery_off?(@domain) @@ -20,11 +20,11 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@old_registrant.email) mail(to: @old_registrant.email, - subject: "#{I18n.t(:pending_update_old_registrant_request_subject, + subject: "#{I18n.t(:pending_update_request_for_old_registrant_subject, name: @domain.name)} [#{@domain.name}]") end - def pending_update_new_registrant_notification(domain) + def pending_update_notification_for_new_registrant(domain) @domain = domain return if delivery_off?(@domain) @@ -43,21 +43,33 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@new_registrant.email) mail(to: @new_registrant.email, - subject: "#{I18n.t(:pending_update_new_registrant_notification_subject, + subject: "#{I18n.t(:pending_update_notification_for_new_registrant_subject, name: @domain.name)} [#{@domain.name}]") end - def registrant_updated(domain) + def registrant_updated_notification_for_new_registrant(domain) @domain = domain return if delivery_off?(@domain) return if whitelist_blocked?(@domain.registrant_email) mail(to: @domain.registrant_email, - subject: "#{I18n.t(:domain_registrant_updated, + subject: "#{I18n.t(:registrant_updated_notification_for_new_registrant_subject, name: @domain.name)} [#{@domain.name}]") end - def pending_update_rejected_new_registrant_notification(domain) + def registrant_updated_notification_for_old_registrant(domain) + @domain = domain + return if delivery_off?(@domain) + + @old_registrant_email = domain.registrant_email # Nb! before applying pending updates + + return if whitelist_blocked?(@old_registrant_email) + mail(to: @old_registrant_email, + subject: "#{I18n.t(:registrant_updated_notification_for_old_registrant_subject, + name: @domain.name)} [#{@domain.name}]") + end + + def pending_update_rejected_notification_for_new_registrant(domain) @domain = domain # no delivery off control, driggered by que, no epp request @@ -66,7 +78,24 @@ class DomainMailer < ApplicationMailer return if whitelist_blocked?(@new_registrant_email) mail(to: @new_registrant_email, - subject: "#{I18n.t(:pending_update_rejected_new_registrant_notification_subject, + subject: "#{I18n.t(:pending_update_rejected_notification_for_new_registrant_subject, + name: @domain.name)} [#{@domain.name}]") + end + + def pending_update_expired_notification_for_new_registrant(domain) + @domain = domain + # no delivery off control, driggered by cron, no epp request + + @new_registrant_email = @domain.pending_json[:new_registrant_email] + @new_registrant_name = @domain.pending_json[:new_registrant_name] + + return if whitelist_blocked?(@new_registrant_email) + if @new_registrant_email.blank? + logger.info "EMAIL NOT DELIVERED: no registrant email [pending_update_expired_notification_for_new_registrant]" + return + end + mail(to: @new_registrant_email, + subject: "#{I18n.t(:pending_update_expired_notification_for_new_registrant_subject, name: @domain.name)} [#{@domain.name}]") end diff --git a/app/models/domain.rb b/app/models/domain.rb index 98d1e5697..014faf0c5 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -198,6 +198,7 @@ class Domain < ActiveRecord::Base next end count += 1 + DomainMailer.pending_update_expired_notification_for_new_registrant(domain).deliver_now domain.clean_pendings! STDOUT << "#{Time.zone.now.utc} Domain.clean_expired_pendings: ##{domain.id}\n" unless Rails.env.test? end @@ -363,8 +364,8 @@ class Domain < ActiveRecord::Base new_registrant_email = registrant.email new_registrant_name = registrant.name - DomainMailer.pending_update_old_registrant_request(self).deliver_now - DomainMailer.pending_update_new_registrant_notification(self).deliver_now + DomainMailer.pending_update_request_for_old_registrant(self).deliver_now + DomainMailer.pending_update_notification_for_new_registrant(self).deliver_now reload # revert back to original diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index cd2a6bf82..cc5dba270 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -420,6 +420,7 @@ class Epp::Domain < Domain # rubocop: enable Metrics/AbcSize def apply_pending_update! + old_registrant_email = DomainMailer.registrant_updated_notification_for_old_registrant(self) preclean_pendings user = ApiUser.find(pending_json['current_user_id']) frame = Nokogiri::XML(pending_json['frame']) @@ -428,7 +429,8 @@ class Epp::Domain < Domain return unless update(frame, user, false) clean_pendings! self.deliver_emails = true # turn on email delivery for epp - DomainMailer.registrant_updated(self).deliver_now + DomainMailer.registrant_updated_notification_for_new_registrant(self).deliver_now + old_registrant_email.deliver_now end def apply_pending_delete! diff --git a/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb b/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb new file mode 100644 index 000000000..a8bf8723d --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.html.erb @@ -0,0 +1,19 @@ +Tere, +

+Domeeni <%= @domain.name %> registreerija <%= @domain.registrant_name %> ei kinnitanud tähtaegselt registreerija vahetuse taotlust. Domeeni <%= @domain.name %> registreerija vahetus on sellest tulenevalt tühistatud. +

+Küsimuste korral palun võtke ühendust registripidajaga <%= @domain.registrar_name %>, kelle kontaktid leiate http://internet.ee/registripidajad/akrediteeritud-registripidajad +

+Lugupidamisega
+Eesti Interneti SA +

+
+

+Hi, +

+Domain registrant change has been expired for the domain <%= @domain.name %>. +

+Please contact to your registrar <%= @domain.registrar_name %> if you have any questions. +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.text.erb b/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.text.erb new file mode 100644 index 000000000..020a9da65 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_update_expired_notification_for_new_registrant.text.erb @@ -0,0 +1,19 @@ +Tere, + +Domeeni <%= @domain.name %> registreerija <%= @domain.registrant_name %> ei kinnitanud tähtaegselt registreerija vahetuse taotlust. Domeeni <%= @domain.name %> registreerija vahetus on sellest tulenevalt tühistatud. + +Küsimuste korral palun võtke ühendust registripidajaga <%= @domain.registrar_name %>, kelle kontaktid leiate http://internet.ee/registripidajad/akrediteeritud-registripidajad + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Domain registrant change has been expired for the domain <%= @domain.name %>. + +Please contact to your registrar <%= @domain.registrar_name %> if you have any questions. + +Best Regards, +Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/pending_update_new_registrant_notification.html.erb b/app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_new_registrant_notification.html.erb rename to app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/pending_update_new_registrant_notification.text.erb b/app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_new_registrant_notification.text.erb rename to app/views/mailers/domain_mailer/pending_update_notification_for_new_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.html.erb b/app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.html.erb rename to app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.text.erb b/app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_rejected_new_registrant_notification.text.erb rename to app/views/mailers/domain_mailer/pending_update_rejected_notification_for_new_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/pending_update_old_registrant_request.html.erb b/app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_old_registrant_request.html.erb rename to app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/pending_update_old_registrant_request.text.erb b/app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/pending_update_old_registrant_request.text.erb rename to app/views/mailers/domain_mailer/pending_update_request_for_old_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/registrant_updated.html.erb b/app/views/mailers/domain_mailer/registrant_updated_notification_for_new_registrant.html.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant_updated.html.erb rename to app/views/mailers/domain_mailer/registrant_updated_notification_for_new_registrant.html.erb diff --git a/app/views/mailers/domain_mailer/registrant_updated.text.erb b/app/views/mailers/domain_mailer/registrant_updated_notification_for_new_registrant.text.erb similarity index 100% rename from app/views/mailers/domain_mailer/registrant_updated.text.erb rename to app/views/mailers/domain_mailer/registrant_updated_notification_for_new_registrant.text.erb diff --git a/app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.html.erb b/app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.html.erb new file mode 100644 index 000000000..bdfda76dc --- /dev/null +++ b/app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.html.erb @@ -0,0 +1,21 @@ +Tere, +

+Domeeni <%= @domain.name %> registreerija vahetuse taotlus on kinnitatud ning andmed registris uuendatud. +

+Uued registreerija:
+Nimi: <%= @domain.registrant_name %> +

+Lugupidamisega
+Eesti Interneti SA +

+
+

+Hi, +

+Process for changing registrant of the domain <%= @domain.name %> has been approved and the data in the registry is updated. +

+New registrant:
+Name: <%= @domain.registrant_name %> +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.text.erb b/app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.text.erb new file mode 100644 index 000000000..08fb37fe0 --- /dev/null +++ b/app/views/mailers/domain_mailer/registrant_updated_notification_for_old_registrant.text.erb @@ -0,0 +1,21 @@ +Tere, + +Domeeni <%= @domain.name %> registreerija vahetuse taotlus on kinnitatud ning andmed registris uuendatud. + +Uued registreerija: +Nimi: <%= @domain.registrant_name %> + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Process for changing registrant of the domain <%= @domain.name %> has been approved and the data in the registry is updated. + +New registrant: +Name: <%= @domain.registrant_name %> + +Best Regards, +Estonian Internet Foundation diff --git a/config/locales/en.yml b/config/locales/en.yml index 837ee6b35..98f759105 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -777,9 +777,12 @@ en: unimplemented_object_service: 'Unimplemented object service' contact_email_update_subject: 'Teie domeenide kontakt epostiaadress on muutunud / Contact e-mail addresses of your domains have changed' object_status_prohibits_operation: 'Object status prohibits operation' - pending_update_old_registrant_request_subject: "Kinnitustaotlus domeeni %{name} registreerija vahetuseks / Application for approval for registrant chache of %{name}" - pending_update_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetus protseduur on algatatud / %{name} registrant change" - pending_update_rejected_new_registrant_notification_subject: "Domeeni %{name} registreerija vahetuse taotlus tagasi lükatud / %{name} registrant change declined" + pending_update_request_for_old_registrant_subject: "Kinnitustaotlus domeeni %{name} registreerija vahetuseks / Application for approval for registrant chache of %{name}" + pending_update_notification_for_new_registrant_subject: "Domeeni %{name} registreerija vahetus protseduur on algatatud / %{name} registrant change" + pending_update_rejected_notification_for_new_registrant_subject: "Domeeni %{name} registreerija vahetuse taotlus tagasi lükatud / %{name} registrant change declined" + pending_update_expired_notification_for_new_registrant_subject: "Domeeni %{name} registreerija vahetuse taotlus on tühistatud / %{name} registrant change cancelled" + registrant_updated_notification_for_new_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.' + registrant_updated_notification_for_old_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.' domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' @@ -874,7 +877,6 @@ en: no_transfers_found: 'No transfers found' parameter_value_range_error: 'Parameter value range error: %{key}' payment_received: 'Payment received' - domain_registrant_updated: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.' api_user_not_found: 'API user not found' domain_already_belongs_to_the_querying_registrar: 'Domain already belongs to the querying registrar' notes: Notes diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index a78e4d030..f1765d308 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -1,11 +1,11 @@ require 'rails_helper' describe DomainMailer do - describe 'registrant change request for old registrant when delivery turned off' do + describe 'pending update request for an old registrant when delivery turned off' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') @domain = Fabricate(:domain, registrant: @registrant) - @mail = DomainMailer.pending_update_old_registrant_request(@domain) + @mail = DomainMailer.pending_update_request_for_old_registrant(@domain) end it 'should not render email subject' do @@ -25,7 +25,7 @@ describe DomainMailer do end end - describe 'registrant change request for old registrant' do + describe 'pending update request for an old registrant' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') @new_registrant = Fabricate(:registrant, email: 'test@example.org') @@ -34,7 +34,7 @@ describe DomainMailer do @domain.registrant_verification_token = '123' @domain.registrant_verification_asked_at = Time.zone.now @domain.registrant = @new_registrant - @mail = DomainMailer.pending_update_old_registrant_request(@domain) + @mail = DomainMailer.pending_update_request_for_old_registrant(@domain) end it 'should render email subject' do @@ -58,7 +58,7 @@ describe DomainMailer do end end - describe 'registrant change notification for new registrant' do + describe 'pending upadte notification for a new registrant' do before :all do @registrant = Fabricate(:registrant, email: 'old@example.com') @new_registrant = Fabricate(:registrant, email: 'new@example.org') @@ -67,7 +67,7 @@ describe DomainMailer do @domain.registrant_verification_token = '123' @domain.registrant_verification_asked_at = Time.zone.now @domain.registrant = @new_registrant - @mail = DomainMailer.pending_update_new_registrant_notification(@domain) + @mail = DomainMailer.pending_update_notification_for_new_registrant(@domain) end it 'should render email subject' do @@ -87,6 +87,113 @@ describe DomainMailer do end end + describe 'pending update notification for a new registrant' do + before :all do + @registrant = Fabricate(:registrant, email: 'old@example.com') + @new_registrant = Fabricate(:registrant, email: 'new@example.org') + @domain = Fabricate(:domain, registrant: @registrant) + @domain.deliver_emails = true + @domain.registrant_verification_token = '123' + @domain.registrant_verification_asked_at = Time.zone.now + @domain.registrant = @new_registrant + @mail = DomainMailer.pending_update_notification_for_new_registrant(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /protseduur on algatatud/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send confirm email to new registrant email' do + @mail.to.should == ["new@example.org"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /vahendusel on algatatud/ + end + end + + describe 'pending update rejected notification for a new registrant' do + before :all do + @registrant = Fabricate(:registrant, email: 'old@example.com') + @new_registrant = Fabricate(:registrant, email: 'new@example.org') + @domain = Fabricate(:domain, registrant: @registrant) + @domain.deliver_emails = true + @domain.pending_json[:new_registrant_email] = 'new@example.org' + @domain.pending_json[:new_registrant_name] = 'test name' + @mail = DomainMailer.pending_update_rejected_notification_for_new_registrant(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /vahetuse taotlus tagasi lükatud/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send confirm email to new registrant email' do + @mail.to.should == ["new@example.org"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /Registrant change was declined/ + end + end + + describe 'registrant updated notification for a new registrant' do + before :all do + @registrant = Fabricate(:registrant, email: 'test@example.com') + @domain = Fabricate(:domain, registrant: @registrant) + @domain.deliver_emails = true + @mail = DomainMailer.registrant_updated_notification_for_new_registrant(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /registreerija vahetus teostatud/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send to registrant email' do + @mail.to.should == ["test@example.com"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /registreerija vahetuse taotlus on kinnitatud/ + end + end + + describe 'registrant updated notification for a old registrant' do + before :all do + @registrant = Fabricate(:registrant, email: 'test@example.com') + @domain = Fabricate(:domain, registrant: @registrant) + @domain.deliver_emails = true + @mail = DomainMailer.registrant_updated_notification_for_old_registrant(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /registreerija vahetus teostatud/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send to registrant email' do + @mail.to.should == ["test@example.com"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /registreerija vahetuse taotlus on kinnitatud/ + end + end + describe 'domain pending delete notification when delivery turned off' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') @@ -141,29 +248,4 @@ describe DomainMailer do @mail.body.encoded.should =~ %r{registrant\/domain_delete_con} # somehowe delete_confirms not matching end end - - describe 'registrant successfully changed confirmation' do - before :all do - @registrant = Fabricate(:registrant, email: 'test@example.com') - @domain = Fabricate(:domain, registrant: @registrant) - @domain.deliver_emails = true - @mail = DomainMailer.registrant_updated(@domain) - end - - it 'should render email subject' do - @mail.subject.should =~ /registreerija vahetus teostatud/ - end - - it 'should have sender email' do - @mail.from.should == ["noreply@internet.ee"] - end - - it 'should send to registrant email' do - @mail.to.should == ["test@example.com"] - end - - it 'should render body' do - @mail.body.encoded.should =~ /registreerija vahetuse taotlus on kinnitatud/ - end - end end From acb9f2ee087cf4d31891fdb00a1602ee5bc62498 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 17:49:35 +0300 Subject: [PATCH 64/94] Added domain delete rejection notification #2786 --- app/jobs/domain_delete_confirm_job.rb | 1 + app/mailers/domain_mailer.rb | 20 ++++++++++++++ ...ding_delete_rejected_notification.html.erb | 15 +++++++++++ ...ding_delete_rejected_notification.text.erb | 15 +++++++++++ config/locales/en.yml | 1 + spec/mailers/domain_mailer_spec.rb | 27 +++++++++++++++++++ 6 files changed, 79 insertions(+) create mode 100644 app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb create mode 100644 app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb diff --git a/app/jobs/domain_delete_confirm_job.rb b/app/jobs/domain_delete_confirm_job.rb index 90a76e47b..153ef7012 100644 --- a/app/jobs/domain_delete_confirm_job.rb +++ b/app/jobs/domain_delete_confirm_job.rb @@ -8,6 +8,7 @@ class DomainDeleteConfirmJob < Que::Job domain.apply_pending_delete! domain.clean_pendings! when RegistrantVerification::REJECTED + DomainMailer.pending_delete_rejected_notification(domain).deliver_now domain.clean_pendings! end destroy # it's best to destroy the job in the same transaction diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index eb724a222..0e7614199 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -123,4 +123,24 @@ class DomainMailer < ApplicationMailer subject: "#{I18n.t(:domain_pending_deleted_subject, name: @domain.name)} [#{@domain.name}]") end + + def pending_delete_rejected_notification(domain) + @domain = domain + # no delivery off control, driggered by que, no epp request + + if @domain.registrant_verification_token.blank? + logger.warn "EMAIL NOT DELIVERED: registrant_verification_token is missing for #{@domain.name}" + return + end + + if @domain.registrant_verification_asked_at.blank? + logger.warn "EMAIL NOT DELIVERED: registrant_verification_asked_at is missing for #{@domain.name}" + return + end + + return if whitelist_blocked?(@domain.registrant.email) + mail(to: @domain.registrant.email, + subject: "#{I18n.t(:pending_delete_rejected_notification_subject, + name: @domain.name)} [#{@domain.name}]") + end end diff --git a/app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb b/app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb new file mode 100644 index 000000000..e89a02327 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb @@ -0,0 +1,15 @@ +Tere, +

+Domeeni <%= @domain.name %> kustutamise taotlus on registreerija <%= @domain.registrar_name %> poolt tagasi lükatud. +

+Lugupidamisega
+Eesti Interneti SA +

+
+

+Hi, +

+Domain <%= @domain.name %> deletion rejected. +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb b/app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb new file mode 100644 index 000000000..d3600a3c7 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb @@ -0,0 +1,15 @@ +Tere, + +Domeeni <%= @domain.name %> kustutamise taotlus on registreerija <%= @domain.registrar_name %> poolt tagasi lükatud. + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Domain <%= @domain.name %> deletion rejected. + +Best Regards, +Estonian Internet Foundation diff --git a/config/locales/en.yml b/config/locales/en.yml index 98f759105..9defb35db 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -784,6 +784,7 @@ en: registrant_updated_notification_for_new_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.' registrant_updated_notification_for_old_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.' domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" + pending_delete_rejected_notification_subject: "Domeeni %{name} kustutamise taotlus tagasi lükatud / %{name) deletion declined" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' not_valid_domain_verification_title: Domain verification not available diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index f1765d308..44e6d0e42 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -248,4 +248,31 @@ describe DomainMailer do @mail.body.encoded.should =~ %r{registrant\/domain_delete_con} # somehowe delete_confirms not matching end end + + describe 'email pending delete notification' do + before :all do + @registrant = Fabricate(:registrant, email: 'test@example.com') + @domain = Fabricate(:domain, name: 'delete-pending-rejected.ee', registrant: @registrant) + @domain.deliver_emails = true + @domain.registrant_verification_token = '123' + @domain.registrant_verification_asked_at = Time.zone.now + @mail = DomainMailer.pending_delete_rejected_notification(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /kustutamise taotlus tagasi lükatud/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send confirm email to old registrant email' do + @mail.to.should == ["test@example.com"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /deletion rejected/ + end + end end From 5883452fa291b40b88fbafb230dbf8a9f8bcc695 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 18:07:47 +0300 Subject: [PATCH 65/94] Added pending delete expired email #2786 --- app/mailers/domain_mailer.rb | 10 +++++++ app/models/domain.rb | 9 +++++- ...nding_delete_expired_notification.html.erb | 15 ++++++++++ ...nding_delete_expired_notification.text.erb | 15 ++++++++++ config/locales/en.yml | 1 + spec/mailers/domain_mailer_spec.rb | 29 ++++++++++++++++++- 6 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb create mode 100644 app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index 0e7614199..9b942504b 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -143,4 +143,14 @@ class DomainMailer < ApplicationMailer subject: "#{I18n.t(:pending_delete_rejected_notification_subject, name: @domain.name)} [#{@domain.name}]") end + + def pending_delete_expired_notification(domain) + @domain = domain + # no delivery off control, driggered by cron, no epp request + + return if whitelist_blocked?(@domain.registrant.email) + mail(to: @domain.registrant.email, + subject: "#{I18n.t(:pending_delete_expired_notification_subject, + name: @domain.name)} [#{@domain.name}]") + end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 014faf0c5..b951e7f8e 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -184,6 +184,7 @@ class Domain < ActiveRecord::Base # rubocop: disable Metrics/AbcSize # rubocop: disable Metrics/CyclomaticComplexity + # rubocop: disable Metrics/PerceivedComplexity def clean_expired_pendings STDOUT << "#{Time.zone.now.utc} - Clean expired domain pendings\n" unless Rails.env.test? @@ -198,13 +199,19 @@ class Domain < ActiveRecord::Base next end count += 1 - DomainMailer.pending_update_expired_notification_for_new_registrant(domain).deliver_now + if domain.pending_update? + DomainMailer.pending_update_expired_notification_for_new_registrant(domain).deliver_now + end + if domain.pending_delete? + DomainMailer.pending_delete_expired_notification(domain).deliver_now + end domain.clean_pendings! STDOUT << "#{Time.zone.now.utc} Domain.clean_expired_pendings: ##{domain.id}\n" unless Rails.env.test? end STDOUT << "#{Time.zone.now.utc} - Successfully cancelled #{count} domain pendings\n" unless Rails.env.test? count end + # rubocop: enable Metrics/PerceivedComplexity # rubocop: enable Metrics/AbcSize # rubocop: enable Metrics/CyclomaticComplexity diff --git a/app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb b/app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb new file mode 100644 index 000000000..c5ed71c39 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb @@ -0,0 +1,15 @@ +Tere, +

+Domeeni <%= @domain.name %> kustutamise taotlust ei kinnitatud tähtaegselt registreerija <%= @domain.registrant_name %> poolt. Domeeni <%= @domain.name %> kustutamine on sellest tulenevalt tühistatud. +

+Lugupidamisega
+Eesti Interneti SA +

+
+

+Hi, +

+Domain <%= @domain.name %> deletion cancelled. +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb b/app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb new file mode 100644 index 000000000..5ff510820 --- /dev/null +++ b/app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb @@ -0,0 +1,15 @@ +Tere, + +Domeeni <%= @domain.name %> kustutamise taotlust ei kinnitatud tähtaegselt registreerija <%= @domain.registrant_name %> poolt. Domeeni <%= @domain.name %> kustutamine on sellest tulenevalt tühistatud. + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Domain <%= @domain.name %> deletion cancelled. + +Best Regards, +Estonian Internet Foundation diff --git a/config/locales/en.yml b/config/locales/en.yml index 9defb35db..bebe2bef0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -785,6 +785,7 @@ en: registrant_updated_notification_for_old_registrant_subject: 'Domeeni %{name} registreerija vahetus teostatud / Registrant change of %{name} has been finished.' domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" pending_delete_rejected_notification_subject: "Domeeni %{name} kustutamise taotlus tagasi lükatud / %{name) deletion declined" + pending_delete_expired_notification_subject: "Domeeni %{name} kustutamise taotlus on tühistatud / %{name} deletion cancelled" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' not_valid_domain_verification_title: Domain verification not available diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index 44e6d0e42..9d5172352 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -249,7 +249,7 @@ describe DomainMailer do end end - describe 'email pending delete notification' do + describe 'pending delete rejected notification' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') @domain = Fabricate(:domain, name: 'delete-pending-rejected.ee', registrant: @registrant) @@ -275,4 +275,31 @@ describe DomainMailer do @mail.body.encoded.should =~ /deletion rejected/ end end + + describe 'pending delete rejected notification' do + before :all do + @registrant = Fabricate(:registrant, email: 'test@example.com') + @domain = Fabricate(:domain, name: 'delete-pending-expired.ee', registrant: @registrant) + @domain.deliver_emails = true + @domain.registrant_verification_token = '123' + @domain.registrant_verification_asked_at = Time.zone.now + @mail = DomainMailer.pending_delete_expired_notification(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /deletion cancelled/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send confirm email to old registrant email' do + @mail.to.should == ["test@example.com"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /deletion cancelled/ + end + end end From f89992d1203fe0aa667c7d071d319c7af1887365 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 19:02:08 +0300 Subject: [PATCH 66/94] Added delete confirm email #2786 --- app/mailers/domain_mailer.rb | 9 ++++++ app/models/epp/domain.rb | 1 + .../delete_confirmation.html.erb | 15 +++++++++ .../delete_confirmation.text.erb | 15 +++++++++ config/locales/en.yml | 1 + spec/mailers/domain_mailer_spec.rb | 31 +++++++++++++++++-- 6 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 app/views/mailers/domain_mailer/delete_confirmation.html.erb create mode 100644 app/views/mailers/domain_mailer/delete_confirmation.text.erb diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb index 9b942504b..1eb4341c9 100644 --- a/app/mailers/domain_mailer.rb +++ b/app/mailers/domain_mailer.rb @@ -153,4 +153,13 @@ class DomainMailer < ApplicationMailer subject: "#{I18n.t(:pending_delete_expired_notification_subject, name: @domain.name)} [#{@domain.name}]") end + + def delete_confirmation(domain) + @domain = domain + + return if whitelist_blocked?(@domain.registrant.email) + mail(to: @domain.registrant.email, + subject: "#{I18n.t(:delete_confirmation_subject, + name: @domain.name)} [#{@domain.name}]") + end end diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index cc5dba270..2cd3458a4 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -438,6 +438,7 @@ class Epp::Domain < Domain user = ApiUser.find(pending_json['current_user_id']) frame = Nokogiri::XML(pending_json['frame']) statuses.delete(DomainStatus::PENDING_DELETE) + DomainMailer.delete_confirmation(self).deliver_now clean_pendings! if epp_destroy(frame, user, false) end diff --git a/app/views/mailers/domain_mailer/delete_confirmation.html.erb b/app/views/mailers/domain_mailer/delete_confirmation.html.erb new file mode 100644 index 000000000..acc915787 --- /dev/null +++ b/app/views/mailers/domain_mailer/delete_confirmation.html.erb @@ -0,0 +1,15 @@ +Tere, +

+Domeeni <%= @domain.name %> kustutamise taotlus on registreerija poolt kinnitatud. Domeen <%= @domain.name %> on peatatud ja kustub registrist. +

+Lugupidamisega
+Eesti Interneti SA +

+
+

+Hi, +

+Domain <%= @domain.name %> deletion confirmed and will be deleted. +

+Best Regards,
+Estonian Internet Foundation diff --git a/app/views/mailers/domain_mailer/delete_confirmation.text.erb b/app/views/mailers/domain_mailer/delete_confirmation.text.erb new file mode 100644 index 000000000..a587b7f78 --- /dev/null +++ b/app/views/mailers/domain_mailer/delete_confirmation.text.erb @@ -0,0 +1,15 @@ +Tere, + +Domeeni <%= @domain.name %> kustutamise taotlus on registreerija poolt kinnitatud. Domeen <%= @domain.name %> on peatatud ja kustub registrist. + +Lugupidamisega +Eesti Interneti SA + +-------------------------------------- + +Hi, + +Domain <%= @domain.name %> deletion confirmed and will be deleted. + +Best Regards, +Estonian Internet Foundation diff --git a/config/locales/en.yml b/config/locales/en.yml index bebe2bef0..97a17e3da 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -786,6 +786,7 @@ en: domain_pending_deleted_subject: "Kinnitustaotlus domeeni %{name} kustutamiseks .ee registrist / Application for approval for deletion of %{name}" pending_delete_rejected_notification_subject: "Domeeni %{name} kustutamise taotlus tagasi lükatud / %{name) deletion declined" pending_delete_expired_notification_subject: "Domeeni %{name} kustutamise taotlus on tühistatud / %{name} deletion cancelled" + delete_confirmation_subject: "Domeeni %{name} kustutatud / %{name} deleted" whois: WHOIS login_failed_check_id_card: 'Log in failed, check ID card' not_valid_domain_verification_title: Domain verification not available diff --git a/spec/mailers/domain_mailer_spec.rb b/spec/mailers/domain_mailer_spec.rb index 9d5172352..bf06d4677 100644 --- a/spec/mailers/domain_mailer_spec.rb +++ b/spec/mailers/domain_mailer_spec.rb @@ -276,10 +276,10 @@ describe DomainMailer do end end - describe 'pending delete rejected notification' do + describe 'pending delete expired notification' do before :all do @registrant = Fabricate(:registrant, email: 'test@example.com') - @domain = Fabricate(:domain, name: 'delete-pending-expired.ee', registrant: @registrant) + @domain = Fabricate(:domain, name: 'pending-delete-expired.ee', registrant: @registrant) @domain.deliver_emails = true @domain.registrant_verification_token = '123' @domain.registrant_verification_asked_at = Time.zone.now @@ -302,4 +302,31 @@ describe DomainMailer do @mail.body.encoded.should =~ /deletion cancelled/ end end + + describe 'pending delete rejected notification' do + before :all do + @registrant = Fabricate(:registrant, email: 'test@example.com') + @domain = Fabricate(:domain, name: 'delete-confirmed.ee', registrant: @registrant) + @domain.deliver_emails = true + @domain.registrant_verification_token = '123' + @domain.registrant_verification_asked_at = Time.zone.now + @mail = DomainMailer.delete_confirmation(@domain) + end + + it 'should render email subject' do + @mail.subject.should =~ /deleted/ + end + + it 'should have sender email' do + @mail.from.should == ["noreply@internet.ee"] + end + + it 'should send confirm email to old registrant email' do + @mail.to.should == ["test@example.com"] + end + + it 'should render body' do + @mail.body.encoded.should =~ /confirmed and will be deleted/ + end + end end From 736848d70cb3f3116842404b9f94a198123d852b Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 19:16:04 +0300 Subject: [PATCH 67/94] rubocop updates --- config/initializers/eis_custom_active_model.rb | 2 ++ config/initializers/eis_custom_active_record.rb | 1 + config/initializers/eis_custom_flash.rb | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/config/initializers/eis_custom_active_model.rb b/config/initializers/eis_custom_active_model.rb index f41a42325..ba5f29b06 100644 --- a/config/initializers/eis_custom_active_model.rb +++ b/config/initializers/eis_custom_active_model.rb @@ -1,4 +1,6 @@ # Log all active model user errors +# rubocop: disable Lint/AssignmentInCondition +# rubocop: disable Style/SignalException module ActiveModel class Errors def add(attribute, message = :invalid, options = {}) diff --git a/config/initializers/eis_custom_active_record.rb b/config/initializers/eis_custom_active_record.rb index 546f5a4ae..60dcebeb9 100644 --- a/config/initializers/eis_custom_active_record.rb +++ b/config/initializers/eis_custom_active_record.rb @@ -1,4 +1,5 @@ # Log all user issues raised by active record +# rubocop: disable Metrics/LineLength class ActiveRecord::Base after_validation do |m| Rails.logger.info "USER MSG: ACTIVERECORD: #{m.class} ##{m.id} #{m.errors.full_messages} #{m.errors['epp_errors']}" if m.errors.present? diff --git a/config/initializers/eis_custom_flash.rb b/config/initializers/eis_custom_flash.rb index ed5832e85..4e4d359b5 100644 --- a/config/initializers/eis_custom_flash.rb +++ b/config/initializers/eis_custom_flash.rb @@ -1,6 +1,10 @@ # Log all flash messages +# rubocop: disable Metrics/CyclomaticComplexity +# rubocop: disable Metrics/LineLength module ActionDispatch class Flash + # rubocop: disable Metrics/PerceivedComplexity + # rubocop: disable Style/MultilineOperationIndentation def call(env) @app.call(env) ensure From f2b1705a1e97556fcb7f679eae6e5aefb8ac3661 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Tue, 28 Jul 2015 22:09:46 +0300 Subject: [PATCH 68/94] Rubocop update --- app/controllers/admin/pricelists_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb index ccbe3166f..8037f57f6 100644 --- a/app/controllers/admin/pricelists_controller.rb +++ b/app/controllers/admin/pricelists_controller.rb @@ -4,7 +4,8 @@ class Admin::PricelistsController < AdminController def index @q = Pricelist.search(params[:q]) - @q.sorts = ['category asc', 'duration asc', 'operation_category asc', 'valid_from desc', 'valid_to asc'] if @q.sorts.empty? + @q.sorts = ['category asc', 'duration asc', 'operation_category asc', + 'valid_from desc', 'valid_to asc'] if @q.sorts.empty? @pricelists = @q.result.page(params[:page]) end From df8127cddb18691898e06156d0be0ce905d928c8 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 29 Jul 2015 11:20:00 +0300 Subject: [PATCH 69/94] Fix domain edit in registrar #2752 --- app/models/depp/domain.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/depp/domain.rb b/app/models/depp/domain.rb index 7b366875a..47a219c39 100644 --- a/app/models/depp/domain.rb +++ b/app/models/depp/domain.rb @@ -221,6 +221,9 @@ module Depp chg = [{ registrant: { value: domain_params[:registrant] } }] end + add_arr = nil if add_arr.none? + rem_arr = nil if rem_arr.none? + { name: { value: domain_params[:name] }, chg: chg, From 812daff1e5f24695257e40a0ff55827fabed08bf Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 29 Jul 2015 11:59:35 +0300 Subject: [PATCH 70/94] Make date until inclusive in invoice search, registrar #2666 --- app/assets/javascripts/shared/general.coffee | 3 +- .../registrar/invoices_controller.rb | 31 ++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/shared/general.coffee b/app/assets/javascripts/shared/general.coffee index db6e371c3..17b4f5725 100644 --- a/app/assets/javascripts/shared/general.coffee +++ b/app/assets/javascripts/shared/general.coffee @@ -22,8 +22,7 @@ $(document).on 'page:change', -> tomorrow.setDate(today.getDate() + 1) $('.datepicker').datepicker( - dateFormat: "yy-mm-dd", - maxDate: tomorrow + dateFormat: "yy-mm-dd" ) if $('.js-combobox').length diff --git a/app/controllers/registrar/invoices_controller.rb b/app/controllers/registrar/invoices_controller.rb index 23af8ab77..543c4623d 100644 --- a/app/controllers/registrar/invoices_controller.rb +++ b/app/controllers/registrar/invoices_controller.rb @@ -6,15 +6,15 @@ class Registrar::InvoicesController < RegistrarController def index params[:q] ||= {} invoices = current_user.registrar.invoices.includes(:invoice_items, :account_activity) - params[:q][:sum_cache_gteq].gsub!(',', '.') if params[:q][:sum_cache_gteq] - params[:q][:sum_cache_lteq].gsub!(',', '.') if params[:q][:sum_cache_lteq] - @q = invoices.search(params[:q]) - @q.sorts = 'id desc' if @q.sorts.empty? - @invoices = @q.result.page(params[:page]) + + normalize_search_parameters do + @q = invoices.search(params[:q]) + @q.sorts = 'id desc' if @q.sorts.empty? + @invoices = @q.result.page(params[:page]) + end end - def show - end + def show; end def forward @invoice.billing_email = @invoice.buyer.billing_email @@ -51,4 +51,21 @@ class Registrar::InvoicesController < RegistrarController def set_invoice @invoice = Invoice.find(params[:id]) end + + def normalize_search_parameters + params[:q][:sum_cache_gteq].gsub!(',', '.') if params[:q][:sum_cache_gteq] + params[:q][:sum_cache_lteq].gsub!(',', '.') if params[:q][:sum_cache_lteq] + + ca_cache = params[:q][:due_date_lteq] + begin + end_time = params[:q][:due_date_lteq].try(:to_date) + params[:q][:due_date_lteq] = end_time.try(:end_of_day) + rescue + logger.warn('Invalid date') + end + + yield + + params[:q][:due_date_lteq] = ca_cache + end end From 430f92b3c98196ecca2e08a5a6e4790afb2eea57 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 29 Jul 2015 12:06:34 +0300 Subject: [PATCH 71/94] Update assets #2666 --- ...fest-48c2dd3ff16b86b70040480e74a50543.json | 2 +- ...25d918c48c4edb92c4e793c76bcbc85f1d11b2d.js | 201 ++++++++++++++++++ public/assets/admin-manifest.js | 2 +- ...148311e44df8160a0a4b5b587a6e6a446eddd45.js | 170 +++++++++++++++ public/assets/registrant-manifest.js | 18 +- ...9ddaba3153692cd4ed34f7c10617e7cb8079c7f.js | 170 +++++++++++++++ public/assets/registrar-manifest.js | 2 +- 7 files changed, 553 insertions(+), 12 deletions(-) create mode 100644 public/assets/admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js create mode 100644 public/assets/registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js create mode 100644 public/assets/registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js diff --git a/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json b/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json index 4e8ca8054..b69e6e848 100644 --- a/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json +++ b/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json @@ -1 +1 @@ -{"files":{"admin-manifest-58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":435358,"digest":"58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0","integrity":"sha256-WGYIGbtV2V7j8MgUlyKg4upQejpF8k0iomENBgvcjcA="},"admin-manifest-025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":712602,"digest":"025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467","integrity":"sha256-AlgBIWo7FTYxI5IFs3PF5KxC1VzJpTlg08SFte7Z1Gc="},"registrar-manifest-70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":475725,"digest":"70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b","integrity":"sha256-cN0XcwH+8Um3JnBZF+l0kZEbSnTBdgoiPq76rzkYo4s="},"registrar-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"registrant-manifest-6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":476257,"digest":"6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0","integrity":"sha256-a/zu0v1SMw8wO4kPqdIpsezQl/2ht98ttBgpuMJdQMA="},"registrant-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"shared/pdf-2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":353119,"digest":"2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b","integrity":"sha256-L5Kb+SryziYkmxsCu5mMY89J2grk41Jvhp/M0K9lrDs="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2015-05-12T11:05:57+03:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-12T11:05:57+03:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2015-05-12T11:05:57+03:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"alpha.png","mtime":"2015-07-13T18:30:38+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg":{"logical_path":"bg.jpg","mtime":"2015-07-13T18:30:38+03:00","size":69058,"digest":"b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05","integrity":"sha256-uANqvS8PNuOrVNXVslsPusEdY+xhBtlZ3z+hgLN53gU="},"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png":{"logical_path":"danske.png","mtime":"2015-07-13T18:30:38+03:00","size":1130,"digest":"07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96","integrity":"sha256-B6Q5XMQGeF2hKUFOFYcv4dak9vbaAGbaZwG1bNty6pY="},"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"development.png","mtime":"2015-07-13T18:30:38+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png":{"logical_path":"eis-logo-et.png","mtime":"2015-07-13T18:30:38+03:00","size":1440,"digest":"86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307","integrity":"sha256-hqVJ0mbNpz4yJcXuuhRTLFnUmOH9mA7BKf3taNqLswc="},"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico":{"logical_path":"favicon.ico","mtime":"2015-07-13T18:30:38+03:00","size":1150,"digest":"309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49","integrity":"sha256-MJ4A4vePmisEKrwoBqik7Zz2u10/AMzAmFsTCL/YbEk="},"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif":{"logical_path":"id_card.gif","mtime":"2015-07-13T18:30:38+03:00","size":564,"digest":"ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e","integrity":"sha256-6lBqSbJcjeTmjnhtkPXsXe+2yOiVuQ8vEpgV9eVQ/o4="},"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png":{"logical_path":"lhv.png","mtime":"2015-07-13T18:30:38+03:00","size":3417,"digest":"4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030","integrity":"sha256-TQnTEmoF3zkrc8VPqbHrYFeYwum9Nhz0RQD3MDiDIDA="},"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif":{"logical_path":"mid.gif","mtime":"2015-07-13T18:30:38+03:00","size":1566,"digest":"275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239","integrity":"sha256-J1VD7Oo3fevhrIkkcPOupPfn8PkIn8D76k3kEHQuUjk="},"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png":{"logical_path":"nordea.png","mtime":"2015-07-13T18:30:38+03:00","size":1181,"digest":"75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b","integrity":"sha256-dck4x0NuDIMW8Fa+jfis0Oixbgl5Dnj3jaltn4Yz7zs="},"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-07-13T18:30:38+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-07-13T18:30:38+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-07-13T18:30:38+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-07-13T18:30:38+03:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png":{"logical_path":"seb.png","mtime":"2015-07-13T18:30:38+03:00","size":2439,"digest":"9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e","integrity":"sha256-nJ2UMBTMTucGJEiTzYosSop8yXv73vambiLHLzPV8l4="},"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"staging.png","mtime":"2015-07-13T18:30:38+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png":{"logical_path":"swed.png","mtime":"2015-07-13T18:30:38+03:00","size":1521,"digest":"2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb","integrity":"sha256-LPRXKQYs9fpjQke6NyxXnJfzguXMQ/oREhkHfnRz/bs="},"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"test.png","mtime":"2015-07-13T18:30:38+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"admin/application-b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":396,"digest":"b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f","integrity":"sha256-sURPUIMgnoPTSgh9H/eKkbij60h4FaGYfLxaEgv05I8="},"registrar/application-8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":1107,"digest":"8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85","integrity":"sha256-itPXy0C+FLXH3XY0DbNhjAzWUWRKoeKb/1nMMuRU6oU="},"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-07-13T18:30:38+03:00","size":23109,"digest":"baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0","integrity":"sha256-uvfjWrL2S/HG+kR205NMdCIGKZVzj9nlcVsC9VAC18A="},"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-07-13T18:30:38+03:00","size":64768,"digest":"2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24","integrity":"sha256-K1dfbkaW10lXryenx7t5drfKMdDr6Owlu0w0lNXRbiQ="},"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-07-13T18:30:38+03:00","size":49748,"digest":"f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1","integrity":"sha256-9oottjRthk+Cw7PnJe5gsCF+keRuxH+WcQ9w+Za2GvE="},"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-07-13T18:30:38+03:00","size":26204,"digest":"1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043","integrity":"sha256-HtONusa4F790vUapjWEAWqJhXbesdD5ANzZNECEIQEM="},"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-07-13T18:30:38+03:00","size":23707,"digest":"1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39","integrity":"sha256-HZTKvm+1WwX3Rv4KpRp6UDaD16/baDYO0mv6wD4bPDk="},"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-07-13T18:30:38+03:00","size":62829,"digest":"bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555","integrity":"sha256-uwyOF7mbEPIRvjUxpR1q1IpcbkZwyPthYKMp+kdYxVU="},"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-07-13T18:30:38+03:00","size":51172,"digest":"0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429","integrity":"sha256-DwbR5/CZV44cwOmxh1rKKnEowMoNZA/VBOl7rgsChCk="},"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-07-13T18:30:38+03:00","size":26956,"digest":"d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805","integrity":"sha256-1gjANrPj8EyoehxJT42eliCnKbJ2C16x3O5SxLyOiAU="},"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-07-13T18:30:38+03:00","size":26426,"digest":"ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654","integrity":"sha256-zlzf/mxYmm3GvSxILHGEhv9ftBarAXQHUNsyUXnlhlQ="},"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-07-13T18:30:38+03:00","size":69857,"digest":"dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517","integrity":"sha256-3VNTwq9Opj4dDpnsXx+FFizuDE3Qo4QCYKJgbu/D5Rc="},"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-07-13T18:30:38+03:00","size":57040,"digest":"54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a","integrity":"sha256-VOuRrQ4LY59QvgK3wlg2yZrZiRhfXSokDWDqFKG3OEo="},"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-07-13T18:30:38+03:00","size":29884,"digest":"d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3","integrity":"sha256-0fuWIdQO9FEEB4pKW5jOTLoAhyz4rFbimc8Tl8FGysM="},"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-07-13T18:30:38+03:00","size":23124,"digest":"1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001","integrity":"sha256-GVHkPh2auZsNSZirukqrNPPmizN76QgA21F+So0n0AE="},"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-07-13T18:30:38+03:00","size":90188,"digest":"0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf","integrity":"sha256-Ddpy400NDO12k7Ve0IrMYPsakDav13NuQyrD8i8ub98="},"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-07-13T18:30:38+03:00","size":47396,"digest":"c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd","integrity":"sha256-wHN9Hi7f9QZF4gG/mfaPIxNQLuK96y5WQ17iRyG69c0="},"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-07-13T18:30:38+03:00","size":26228,"digest":"8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc","integrity":"sha256-jaMubbI8OTkMVd1eqJSXFHV/3bpRbF22XnKGdQRJP7w="},"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-07-13T18:30:38+03:00","size":23273,"digest":"74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26","integrity":"sha256-dN+Z+utm2LApZriIS4YK8Dw1ntQdNI3bgT28w8Rg6yY="},"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-07-13T18:30:38+03:00","size":90423,"digest":"0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557","integrity":"sha256-C1LvEGILjLconcgJqsZ4JtUDHmqwQBlP23Nl3IPpVVc="},"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-07-13T18:30:38+03:00","size":47484,"digest":"1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b","integrity":"sha256-HSRNJ6TsTBpfmMgpZvqibnhVxCkscwQpR3ADttq1wIs="},"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-07-13T18:30:38+03:00","size":26492,"digest":"872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0","integrity":"sha256-hytatOC33mZVpS8TejyZ8eeUH6kf8hpWVQ8gOYNO6dA="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-06-03T16:55:27+03:00","size":180,"digest":"9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab","integrity":"sha256-moSSpYC/hdPpiuiGH71FVn5aH4Pur8+VdNoDmdX2Aqs="},"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-06-03T16:55:27+03:00","size":178,"digest":"39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5","integrity":"sha256-Oat8zZ9Ogledp4qSQSZd8ojY62XbvXz0iu0tASmIffU="},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":120,"digest":"691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c","integrity":"sha256-aRWX6KQKiR6pTTWJl27Pwz5hRcSUIkQ7AKwrWgAilkw="},"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":105,"digest":"f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2","integrity":"sha256-8ObNkbg31cVkTQJuX/7M2QeVMxfNXA9omQFzOv2iYLI="},"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":111,"digest":"c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4","integrity":"sha256-wQj1y/LdnsB6JlMGld3ZXhZkWXzmwFauRMFizC4ozsQ="},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":110,"digest":"ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550","integrity":"sha256-3fXdTg7ysYXouwr3tukOvnSoQ4TLRwBljnbnVMi/5VA="},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-06-03T16:55:27+03:00","size":119,"digest":"f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c","integrity":"sha256-9vHBvt8aDzfP74HRL18BKGnR7nyYR3WlaYJ6F4TTT1w="},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-06-03T16:55:27+03:00","size":101,"digest":"54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a","integrity":"sha256-VCcGVt8HnE2lGCYpoID8YztvhLh5hesBbSWlYOLDjUo="},"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc","integrity":"sha256-V62w1l9OkdrP7pddlXRCK+50hsihgtYBM3KMZy8s27w="},"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9","integrity":"sha256-IPjGZnr8SKpDPunrbYoFhL29a0pKkJH/Hms62zHmO9k="},"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f","integrity":"sha256-B0YOhDw+WaqtuzQjHmmehWopgHU8eke2ZEfaXZ+T+38="},"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b","integrity":"sha256-6i4pYl3jRjRl6TsAKwZfWDPgW5f3oFKxwUHnVNYuGos="},"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-06-03T16:55:27+03:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="},"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-06-26T14:45:36+03:00","size":20127,"digest":"13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407","integrity":"sha256-E2NNqH2eI/jD7ZEIzhck0YOjmtBy5z4bPYy/ZG0tBAc="},"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-06-26T14:45:36+03:00","size":108738,"digest":"42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5","integrity":"sha256-QvYGWdJlwaPDD5+kKry7Vr1KU69Ng9MW1t16NpA8Q+U="},"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-06-26T14:45:36+03:00","size":45404,"digest":"e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456","integrity":"sha256-45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY="},"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-06-26T14:45:36+03:00","size":23424,"digest":"a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742","integrity":"sha256-omOU9+3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I="},"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-06-26T14:45:36+03:00","size":18028,"digest":"fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c","integrity":"sha256-/hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw="},"admin-manifest-1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":163910,"digest":"1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d","integrity":"sha256-G3qa3zjeMpmvL5ewwDe/AcIbcFaRDl7kFQepGrZ1vU0="},"admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":323893,"digest":"5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3","integrity":"sha256-X2EvWcnv/MoL5TlsTwBlTeI20rsbFrvfkptH5lBDgfM="},"registrar-manifest-b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187703,"digest":"b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a","integrity":"sha256-tGlHSIRt56fxJGPEUk9xATZFtY/HcBiEMt/Fxak97To="},"registrar-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"registrant-manifest-ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187888,"digest":"ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226","integrity":"sha256-/7JQLd0Xa/a/ZEJKvfUJ8cL6RIg80Vn/xuC/W7qBoiY="},"registrant-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"shared/pdf-8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":119782,"digest":"8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590","integrity":"sha256-jYv0IHxk1d4a2KaD7TwNl9voWnNkTpRAs6fB1jjJNZA="},"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js":{"logical_path":"admin/application.js","mtime":"2015-07-13T18:30:38+03:00","size":287,"digest":"2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542","integrity":"sha256-LkqvyU286NQ9e6xOtVIaFKcuO77s47Q2NJTXD80nRUI="},"registrar/application-f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":826,"digest":"f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9","integrity":"sha256-+W/y8/TSMm22J8kZEHTlwQrTZ56sjrLSLjqfrvOeBqk="},"registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3","integrity":"sha256-QT/aBXgysl3unUX18HsprDafyF9R7NnnvCze+lKXtPM="},"registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48","integrity":"sha256-+enXld5PfavjhzZf0ynByyTakjvTV5iMEgzFcQIwzEg="},"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js":{"logical_path":"registrar/application.js","mtime":"2015-07-13T18:30:38+03:00","size":804,"digest":"978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9","integrity":"sha256-l4shqZrjyqu4qeMB3MqguT+GzHialZUVjJjuUTk7jLk="},"admin-manifest-6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":169226,"digest":"6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760","integrity":"sha256-bl5UrZsfSOtDcr9NP/0YVNhZ3F4qtJd9v1nEq/7r12A="},"admin-manifest-b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":325028,"digest":"b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709","integrity":"sha256-uQTVZ52e01fCQSuNkFTF1gtshSThHk/4DS5FWAEI5wk="},"registrar-manifest-d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193019,"digest":"d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1","integrity":"sha256-2eGj+zeHPkTDE0huoq1/8XkenOTW1E6VpgLYfUgPJ+E="},"registrar-manifest-0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39","integrity":"sha256-ApfKopORSPkoS3VOegzCoIJyuP8xlNl74MlYWEmMvjk="},"registrant-manifest-651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193204,"digest":"651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66","integrity":"sha256-ZR4wlUeCy5seWCq+sYxHQCyVHj/UqnExE2OgWIafTWY="},"registrant-manifest-a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca","integrity":"sha256-qUzE1puvwEjxywj//RxzP8NxV+Zg5IlwBSB88D8dmMo="},"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css":{"logical_path":"shared/pdf.css","mtime":"2015-07-13T18:30:38+03:00","size":125098,"digest":"3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc","integrity":"sha256-P2hYz7XuxgEALFpBiyh8zd3zi7lTER/9/xMh07H7vdw="},"admin-manifest-7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-21T18:38:58+03:00","size":169258,"digest":"7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b","integrity":"sha256-cFi3Bok690c3dZRvphcePD19gfX+MjxAKsyLIH6sTxs="},"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-21T18:38:58+03:00","size":193051,"digest":"12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb","integrity":"sha256-Et3z0nrrgu0im4p+xrUP36M8EVMmu1QNPGTWMBIjgrs="},"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-21T18:38:58+03:00","size":193236,"digest":"9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324","integrity":"sha256-lxHM7JFALUNd37Cw+/cIof/vZ4aKhsOAFPl1GD1h4yQ="}},"assets":{"admin-manifest.css":"admin-manifest-7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b.css","admin-manifest.js":"admin-manifest-b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709.js","registrar-manifest.css":"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css","registrar-manifest.js":"registrar-manifest-0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39.js","registrant-manifest.css":"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css","registrant-manifest.js":"registrant-manifest-a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca.js","shared/pdf.css":"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","alpha.png":"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","bg.jpg":"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg","danske.png":"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png","development.png":"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","eis-logo-et.png":"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png","favicon.ico":"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico","id_card.gif":"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif","lhv.png":"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png","mid.gif":"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif","nordea.png":"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png","registrar/bg-alpha.png":"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","registrar/bg-development.png":"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","registrar/bg-staging.png":"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","registrar/favicon.ico":"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico","seb.png":"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png","staging.png":"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","swed.png":"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png","test.png":"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","admin/application.js":"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js","registrar/application.js":"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js","etelkalight-webfont.eot":"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot","etelkalight-webfont.svg":"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg","etelkalight-webfont.ttf":"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf","etelkalight-webfont.woff":"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff","etelkalightbold-webfont.eot":"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot","etelkalightbold-webfont.svg":"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg","etelkalightbold-webfont.ttf":"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf","etelkalightbold-webfont.woff":"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff","etelkalightitalic-webfont.eot":"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot","etelkalightitalic-webfont.svg":"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg","etelkalightitalic-webfont.ttf":"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf","etelkalightitalic-webfont.woff":"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff","infotexb-webfont.eot":"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot","infotexb-webfont.svg":"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg","infotexb-webfont.ttf":"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf","infotexb-webfont.woff":"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff","infotexm-webfont.eot":"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot","infotexm-webfont.svg":"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg","infotexm-webfont.ttf":"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf","infotexm-webfont.woff":"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png","bootstrap/glyphicons-halflings-regular.eot":"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot","bootstrap/glyphicons-halflings-regular.svg":"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg","bootstrap/glyphicons-halflings-regular.ttf":"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf","bootstrap/glyphicons-halflings-regular.woff":"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff","bootstrap/glyphicons-halflings-regular.woff2":"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2"}} \ No newline at end of file +{"files":{"admin-manifest-58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":435358,"digest":"58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0","integrity":"sha256-WGYIGbtV2V7j8MgUlyKg4upQejpF8k0iomENBgvcjcA="},"admin-manifest-025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":712602,"digest":"025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467","integrity":"sha256-AlgBIWo7FTYxI5IFs3PF5KxC1VzJpTlg08SFte7Z1Gc="},"registrar-manifest-70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":475725,"digest":"70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b","integrity":"sha256-cN0XcwH+8Um3JnBZF+l0kZEbSnTBdgoiPq76rzkYo4s="},"registrar-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"registrant-manifest-6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":476257,"digest":"6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0","integrity":"sha256-a/zu0v1SMw8wO4kPqdIpsezQl/2ht98ttBgpuMJdQMA="},"registrant-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"shared/pdf-2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":353119,"digest":"2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b","integrity":"sha256-L5Kb+SryziYkmxsCu5mMY89J2grk41Jvhp/M0K9lrDs="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2015-05-14T14:33:49+03:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-14T14:33:49+03:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2015-05-14T14:33:49+03:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"alpha.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg":{"logical_path":"bg.jpg","mtime":"2015-05-15T15:29:32+03:00","size":69058,"digest":"b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05","integrity":"sha256-uANqvS8PNuOrVNXVslsPusEdY+xhBtlZ3z+hgLN53gU="},"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png":{"logical_path":"danske.png","mtime":"2015-05-15T15:29:32+03:00","size":1130,"digest":"07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96","integrity":"sha256-B6Q5XMQGeF2hKUFOFYcv4dak9vbaAGbaZwG1bNty6pY="},"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"development.png","mtime":"2015-05-15T15:29:32+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png":{"logical_path":"eis-logo-et.png","mtime":"2015-05-15T15:29:32+03:00","size":1440,"digest":"86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307","integrity":"sha256-hqVJ0mbNpz4yJcXuuhRTLFnUmOH9mA7BKf3taNqLswc="},"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico":{"logical_path":"favicon.ico","mtime":"2015-05-15T15:29:32+03:00","size":1150,"digest":"309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49","integrity":"sha256-MJ4A4vePmisEKrwoBqik7Zz2u10/AMzAmFsTCL/YbEk="},"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif":{"logical_path":"id_card.gif","mtime":"2015-05-15T15:29:32+03:00","size":564,"digest":"ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e","integrity":"sha256-6lBqSbJcjeTmjnhtkPXsXe+2yOiVuQ8vEpgV9eVQ/o4="},"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png":{"logical_path":"lhv.png","mtime":"2015-05-15T15:29:32+03:00","size":3417,"digest":"4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030","integrity":"sha256-TQnTEmoF3zkrc8VPqbHrYFeYwum9Nhz0RQD3MDiDIDA="},"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif":{"logical_path":"mid.gif","mtime":"2015-05-15T15:29:32+03:00","size":1566,"digest":"275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239","integrity":"sha256-J1VD7Oo3fevhrIkkcPOupPfn8PkIn8D76k3kEHQuUjk="},"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png":{"logical_path":"nordea.png","mtime":"2015-05-15T15:29:32+03:00","size":1181,"digest":"75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b","integrity":"sha256-dck4x0NuDIMW8Fa+jfis0Oixbgl5Dnj3jaltn4Yz7zs="},"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-05-15T15:29:32+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-05-15T15:29:32+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-05-15T15:29:32+03:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png":{"logical_path":"seb.png","mtime":"2015-05-15T15:29:32+03:00","size":2439,"digest":"9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e","integrity":"sha256-nJ2UMBTMTucGJEiTzYosSop8yXv73vambiLHLzPV8l4="},"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"staging.png","mtime":"2015-05-15T15:29:32+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png":{"logical_path":"swed.png","mtime":"2015-05-15T15:29:32+03:00","size":1521,"digest":"2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb","integrity":"sha256-LPRXKQYs9fpjQke6NyxXnJfzguXMQ/oREhkHfnRz/bs="},"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"test.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"admin/application-b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":396,"digest":"b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f","integrity":"sha256-sURPUIMgnoPTSgh9H/eKkbij60h4FaGYfLxaEgv05I8="},"registrar/application-8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":1107,"digest":"8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85","integrity":"sha256-itPXy0C+FLXH3XY0DbNhjAzWUWRKoeKb/1nMMuRU6oU="},"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23109,"digest":"baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0","integrity":"sha256-uvfjWrL2S/HG+kR205NMdCIGKZVzj9nlcVsC9VAC18A="},"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":64768,"digest":"2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24","integrity":"sha256-K1dfbkaW10lXryenx7t5drfKMdDr6Owlu0w0lNXRbiQ="},"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":49748,"digest":"f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1","integrity":"sha256-9oottjRthk+Cw7PnJe5gsCF+keRuxH+WcQ9w+Za2GvE="},"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26204,"digest":"1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043","integrity":"sha256-HtONusa4F790vUapjWEAWqJhXbesdD5ANzZNECEIQEM="},"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23707,"digest":"1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39","integrity":"sha256-HZTKvm+1WwX3Rv4KpRp6UDaD16/baDYO0mv6wD4bPDk="},"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":62829,"digest":"bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555","integrity":"sha256-uwyOF7mbEPIRvjUxpR1q1IpcbkZwyPthYKMp+kdYxVU="},"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":51172,"digest":"0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429","integrity":"sha256-DwbR5/CZV44cwOmxh1rKKnEowMoNZA/VBOl7rgsChCk="},"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26956,"digest":"d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805","integrity":"sha256-1gjANrPj8EyoehxJT42eliCnKbJ2C16x3O5SxLyOiAU="},"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":26426,"digest":"ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654","integrity":"sha256-zlzf/mxYmm3GvSxILHGEhv9ftBarAXQHUNsyUXnlhlQ="},"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":69857,"digest":"dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517","integrity":"sha256-3VNTwq9Opj4dDpnsXx+FFizuDE3Qo4QCYKJgbu/D5Rc="},"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":57040,"digest":"54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a","integrity":"sha256-VOuRrQ4LY59QvgK3wlg2yZrZiRhfXSokDWDqFKG3OEo="},"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":29884,"digest":"d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3","integrity":"sha256-0fuWIdQO9FEEB4pKW5jOTLoAhyz4rFbimc8Tl8FGysM="},"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23124,"digest":"1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001","integrity":"sha256-GVHkPh2auZsNSZirukqrNPPmizN76QgA21F+So0n0AE="},"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":90188,"digest":"0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf","integrity":"sha256-Ddpy400NDO12k7Ve0IrMYPsakDav13NuQyrD8i8ub98="},"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":47396,"digest":"c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd","integrity":"sha256-wHN9Hi7f9QZF4gG/mfaPIxNQLuK96y5WQ17iRyG69c0="},"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26228,"digest":"8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc","integrity":"sha256-jaMubbI8OTkMVd1eqJSXFHV/3bpRbF22XnKGdQRJP7w="},"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23273,"digest":"74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26","integrity":"sha256-dN+Z+utm2LApZriIS4YK8Dw1ntQdNI3bgT28w8Rg6yY="},"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":90423,"digest":"0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557","integrity":"sha256-C1LvEGILjLconcgJqsZ4JtUDHmqwQBlP23Nl3IPpVVc="},"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":47484,"digest":"1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b","integrity":"sha256-HSRNJ6TsTBpfmMgpZvqibnhVxCkscwQpR3ADttq1wIs="},"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26492,"digest":"872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0","integrity":"sha256-hytatOC33mZVpS8TejyZ8eeUH6kf8hpWVQ8gOYNO6dA="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-06-08T14:38:06+03:00","size":180,"digest":"9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab","integrity":"sha256-moSSpYC/hdPpiuiGH71FVn5aH4Pur8+VdNoDmdX2Aqs="},"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-06-08T14:38:06+03:00","size":178,"digest":"39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5","integrity":"sha256-Oat8zZ9Ogledp4qSQSZd8ojY62XbvXz0iu0tASmIffU="},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":120,"digest":"691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c","integrity":"sha256-aRWX6KQKiR6pTTWJl27Pwz5hRcSUIkQ7AKwrWgAilkw="},"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":105,"digest":"f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2","integrity":"sha256-8ObNkbg31cVkTQJuX/7M2QeVMxfNXA9omQFzOv2iYLI="},"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":111,"digest":"c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4","integrity":"sha256-wQj1y/LdnsB6JlMGld3ZXhZkWXzmwFauRMFizC4ozsQ="},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":110,"digest":"ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550","integrity":"sha256-3fXdTg7ysYXouwr3tukOvnSoQ4TLRwBljnbnVMi/5VA="},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":119,"digest":"f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c","integrity":"sha256-9vHBvt8aDzfP74HRL18BKGnR7nyYR3WlaYJ6F4TTT1w="},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-06-08T14:38:06+03:00","size":101,"digest":"54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a","integrity":"sha256-VCcGVt8HnE2lGCYpoID8YztvhLh5hesBbSWlYOLDjUo="},"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc","integrity":"sha256-V62w1l9OkdrP7pddlXRCK+50hsihgtYBM3KMZy8s27w="},"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9","integrity":"sha256-IPjGZnr8SKpDPunrbYoFhL29a0pKkJH/Hms62zHmO9k="},"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f","integrity":"sha256-B0YOhDw+WaqtuzQjHmmehWopgHU8eke2ZEfaXZ+T+38="},"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b","integrity":"sha256-6i4pYl3jRjRl6TsAKwZfWDPgW5f3oFKxwUHnVNYuGos="},"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="},"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-06-29T12:04:56+03:00","size":20127,"digest":"13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407","integrity":"sha256-E2NNqH2eI/jD7ZEIzhck0YOjmtBy5z4bPYy/ZG0tBAc="},"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-06-29T12:04:56+03:00","size":108738,"digest":"42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5","integrity":"sha256-QvYGWdJlwaPDD5+kKry7Vr1KU69Ng9MW1t16NpA8Q+U="},"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-06-29T12:04:56+03:00","size":45404,"digest":"e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456","integrity":"sha256-45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY="},"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-06-29T12:04:56+03:00","size":23424,"digest":"a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742","integrity":"sha256-omOU9+3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I="},"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-06-29T12:04:56+03:00","size":18028,"digest":"fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c","integrity":"sha256-/hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw="},"admin-manifest-1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":163910,"digest":"1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d","integrity":"sha256-G3qa3zjeMpmvL5ewwDe/AcIbcFaRDl7kFQepGrZ1vU0="},"admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":323893,"digest":"5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3","integrity":"sha256-X2EvWcnv/MoL5TlsTwBlTeI20rsbFrvfkptH5lBDgfM="},"registrar-manifest-b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187703,"digest":"b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a","integrity":"sha256-tGlHSIRt56fxJGPEUk9xATZFtY/HcBiEMt/Fxak97To="},"registrar-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"registrant-manifest-ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187888,"digest":"ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226","integrity":"sha256-/7JQLd0Xa/a/ZEJKvfUJ8cL6RIg80Vn/xuC/W7qBoiY="},"registrant-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"shared/pdf-8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":119782,"digest":"8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590","integrity":"sha256-jYv0IHxk1d4a2KaD7TwNl9voWnNkTpRAs6fB1jjJNZA="},"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":287,"digest":"2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542","integrity":"sha256-LkqvyU286NQ9e6xOtVIaFKcuO77s47Q2NJTXD80nRUI="},"registrar/application-f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":826,"digest":"f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9","integrity":"sha256-+W/y8/TSMm22J8kZEHTlwQrTZ56sjrLSLjqfrvOeBqk="},"registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3","integrity":"sha256-QT/aBXgysl3unUX18HsprDafyF9R7NnnvCze+lKXtPM="},"registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48","integrity":"sha256-+enXld5PfavjhzZf0ynByyTakjvTV5iMEgzFcQIwzEg="},"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T16:03:53+03:00","size":804,"digest":"978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9","integrity":"sha256-l4shqZrjyqu4qeMB3MqguT+GzHialZUVjJjuUTk7jLk="},"admin-manifest-6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":169226,"digest":"6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760","integrity":"sha256-bl5UrZsfSOtDcr9NP/0YVNhZ3F4qtJd9v1nEq/7r12A="},"admin-manifest-b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":325028,"digest":"b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709","integrity":"sha256-uQTVZ52e01fCQSuNkFTF1gtshSThHk/4DS5FWAEI5wk="},"registrar-manifest-d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193019,"digest":"d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1","integrity":"sha256-2eGj+zeHPkTDE0huoq1/8XkenOTW1E6VpgLYfUgPJ+E="},"registrar-manifest-0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39","integrity":"sha256-ApfKopORSPkoS3VOegzCoIJyuP8xlNl74MlYWEmMvjk="},"registrant-manifest-651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193204,"digest":"651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66","integrity":"sha256-ZR4wlUeCy5seWCq+sYxHQCyVHj/UqnExE2OgWIafTWY="},"registrant-manifest-a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca","integrity":"sha256-qUzE1puvwEjxywj//RxzP8NxV+Zg5IlwBSB88D8dmMo="},"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css":{"logical_path":"shared/pdf.css","mtime":"2015-06-29T12:04:56+03:00","size":125098,"digest":"3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc","integrity":"sha256-P2hYz7XuxgEALFpBiyh8zd3zi7lTER/9/xMh07H7vdw="},"admin-manifest-7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":169258,"digest":"7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b","integrity":"sha256-cFi3Bok690c3dZRvphcePD19gfX+MjxAKsyLIH6sTxs="},"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":193051,"digest":"12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb","integrity":"sha256-Et3z0nrrgu0im4p+xrUP36M8EVMmu1QNPGTWMBIjgrs="},"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":193236,"digest":"9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324","integrity":"sha256-lxHM7JFALUNd37Cw+/cIof/vZ4aKhsOAFPl1GD1h4yQ="},"admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":325018,"digest":"8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d","integrity":"sha256-jn7ooS7LohNxsioPIl2RjEjE7bksTnk8dry8hfHRGy0="},"registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":316031,"digest":"ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f","integrity":"sha256-zP7Gc0iLvxcJslf5Wd2roxU2ks1O0098EGF+fLgHnH8="},"registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":316031,"digest":"029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45","integrity":"sha256-Aps1E/UxR4mEg4ayQUgxHkTfgWCgpLW1h6bmpEbt3UU="}},"assets":{"admin-manifest.css":"admin-manifest-7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b.css","admin-manifest.js":"admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js","registrar-manifest.css":"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css","registrar-manifest.js":"registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js","registrant-manifest.css":"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css","registrant-manifest.js":"registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js","shared/pdf.css":"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","alpha.png":"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","bg.jpg":"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg","danske.png":"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png","development.png":"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","eis-logo-et.png":"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png","favicon.ico":"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico","id_card.gif":"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif","lhv.png":"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png","mid.gif":"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif","nordea.png":"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png","registrar/bg-alpha.png":"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","registrar/bg-development.png":"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","registrar/bg-staging.png":"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","registrar/favicon.ico":"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico","seb.png":"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png","staging.png":"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","swed.png":"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png","test.png":"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","admin/application.js":"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js","registrar/application.js":"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js","etelkalight-webfont.eot":"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot","etelkalight-webfont.svg":"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg","etelkalight-webfont.ttf":"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf","etelkalight-webfont.woff":"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff","etelkalightbold-webfont.eot":"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot","etelkalightbold-webfont.svg":"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg","etelkalightbold-webfont.ttf":"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf","etelkalightbold-webfont.woff":"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff","etelkalightitalic-webfont.eot":"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot","etelkalightitalic-webfont.svg":"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg","etelkalightitalic-webfont.ttf":"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf","etelkalightitalic-webfont.woff":"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff","infotexb-webfont.eot":"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot","infotexb-webfont.svg":"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg","infotexb-webfont.ttf":"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf","infotexb-webfont.woff":"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff","infotexm-webfont.eot":"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot","infotexm-webfont.svg":"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg","infotexm-webfont.ttf":"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf","infotexm-webfont.woff":"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png","bootstrap/glyphicons-halflings-regular.eot":"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot","bootstrap/glyphicons-halflings-regular.svg":"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg","bootstrap/glyphicons-halflings-regular.ttf":"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf","bootstrap/glyphicons-halflings-regular.woff":"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff","bootstrap/glyphicons-halflings-regular.woff2":"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2"}} \ No newline at end of file diff --git a/public/assets/admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js b/public/assets/admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js new file mode 100644 index 000000000..741e3ab91 --- /dev/null +++ b/public/assets/admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js @@ -0,0 +1,201 @@ +/*! + * jQuery JavaScript Library v1.11.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-17T15:27Z + */ +!function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function n(t){var e=t.length,n=re.type(t);return"function"===n||re.isWindow(t)?!1:1===t.nodeType&&e?!0:"array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t}function i(t,e,n){if(re.isFunction(e))return re.grep(t,function(t,i){return!!e.call(t,i,t)!==n});if(e.nodeType)return re.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(he.test(e))return re.filter(e,t,n);e=re.filter(e,t)}return re.grep(t,function(t){return re.inArray(t,e)>=0!==n})}function r(t,e){do t=t[e];while(t&&1!==t.nodeType);return t}function o(t){var e=we[t]={};return re.each(t.match(be)||[],function(t,n){e[n]=!0}),e}function a(){fe.addEventListener?(fe.removeEventListener("DOMContentLoaded",s,!1),t.removeEventListener("load",s,!1)):(fe.detachEvent("onreadystatechange",s),t.detachEvent("onload",s))}function s(){(fe.addEventListener||"load"===event.type||"complete"===fe.readyState)&&(a(),re.ready())}function l(t,e,n){if(void 0===n&&1===t.nodeType){var i="data-"+e.replace(De,"-$1").toLowerCase();if(n=t.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:_e.test(n)?re.parseJSON(n):n}catch(r){}re.data(t,e,n)}else n=void 0}return n}function u(t){var e;for(e in t)if(("data"!==e||!re.isEmptyObject(t[e]))&&"toJSON"!==e)return!1;return!0}function c(t,e,n,i){if(re.acceptData(t)){var r,o,a=re.expando,s=t.nodeType,l=s?re.cache:t,u=s?t[a]:t[a]&&a;if(u&&l[u]&&(i||l[u].data)||void 0!==n||"string"!=typeof e)return u||(u=s?t[a]=V.pop()||re.guid++:a),l[u]||(l[u]=s?{}:{toJSON:re.noop}),("object"==typeof e||"function"==typeof e)&&(i?l[u]=re.extend(l[u],e):l[u].data=re.extend(l[u].data,e)),o=l[u],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[re.camelCase(e)]=n),"string"==typeof e?(r=o[e],null==r&&(r=o[re.camelCase(e)])):r=o,r}}function d(t,e,n){if(re.acceptData(t)){var i,r,o=t.nodeType,a=o?re.cache:t,s=o?t[re.expando]:re.expando;if(a[s]){if(e&&(i=n?a[s]:a[s].data)){re.isArray(e)?e=e.concat(re.map(e,re.camelCase)):e in i?e=[e]:(e=re.camelCase(e),e=e in i?[e]:e.split(" ")),r=e.length;for(;r--;)delete i[e[r]];if(n?!u(i):!re.isEmptyObject(i))return}(n||(delete a[s].data,u(a[s])))&&(o?re.cleanData([t],!0):ne.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}function h(){return!0}function p(){return!1}function f(){try{return fe.activeElement}catch(t){}}function g(t){var e=Le.split("|"),n=t.createDocumentFragment();if(n.createElement)for(;e.length;)n.createElement(e.pop());return n}function m(t,e){var n,i,r=0,o=typeof t.getElementsByTagName!==Ce?t.getElementsByTagName(e||"*"):typeof t.querySelectorAll!==Ce?t.querySelectorAll(e||"*"):void 0;if(!o)for(o=[],n=t.childNodes||t;null!=(i=n[r]);r++)!e||re.nodeName(i,e)?o.push(i):re.merge(o,m(i,e));return void 0===e||e&&re.nodeName(t,e)?re.merge([t],o):o}function v(t){Ee.test(t.type)&&(t.defaultChecked=t.checked)}function y(t,e){return re.nodeName(t,"table")&&re.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function b(t){return t.type=(null!==re.find.attr(t,"type"))+"/"+t.type,t}function w(t){var e=Ye.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function x(t,e){for(var n,i=0;null!=(n=t[i]);i++)re._data(n,"globalEval",!e||re._data(e[i],"globalEval"))}function k(t,e){if(1===e.nodeType&&re.hasData(t)){var n,i,r,o=re._data(t),a=re._data(e,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)re.event.add(e,n,s[n][i])}a.data&&(a.data=re.extend({},a.data))}}function C(t,e){var n,i,r;if(1===e.nodeType){if(n=e.nodeName.toLowerCase(),!ne.noCloneEvent&&e[re.expando]){r=re._data(e);for(i in r.events)re.removeEvent(e,i,r.handle);e.removeAttribute(re.expando)}"script"===n&&e.text!==t.text?(b(e).text=t.text,w(e)):"object"===n?(e.parentNode&&(e.outerHTML=t.outerHTML),ne.html5Clone&&t.innerHTML&&!re.trim(e.innerHTML)&&(e.innerHTML=t.innerHTML)):"input"===n&&Ee.test(t.type)?(e.defaultChecked=e.checked=t.checked,e.value!==t.value&&(e.value=t.value)):"option"===n?e.defaultSelected=e.selected=t.defaultSelected:("input"===n||"textarea"===n)&&(e.defaultValue=t.defaultValue)}}function _(e,n){var i,r=re(n.createElement(e)).appendTo(n.body),o=t.getDefaultComputedStyle&&(i=t.getDefaultComputedStyle(r[0]))?i.display:re.css(r[0],"display");return r.detach(),o}function D(t){var e=fe,n=Je[t];return n||(n=_(t,e),"none"!==n&&n||(Ge=(Ge||re("