From ad23a7cbd29a752319b65dd1c09f11eacf775b0c Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Wed, 9 Jun 2021 10:51:00 +0300 Subject: [PATCH] updated respons for wrong path --- app/controllers/epp/base_controller.rb | 1 + .../registrar/xml_consoles_controller.rb | 24 +++++++++++++++++++ lib/xsd/schema.rb | 1 - 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/controllers/epp/base_controller.rb b/app/controllers/epp/base_controller.rb index 3230d3e70..4e9c7e9cf 100644 --- a/app/controllers/epp/base_controller.rb +++ b/app/controllers/epp/base_controller.rb @@ -127,6 +127,7 @@ module Epp # VALIDATION def validate_request validation_method = "validate_#{params[:action]}" + return unless respond_to?(validation_method, true) send(validation_method) diff --git a/app/controllers/registrar/xml_consoles_controller.rb b/app/controllers/registrar/xml_consoles_controller.rb index b07b9cbee..b55339d1e 100644 --- a/app/controllers/registrar/xml_consoles_controller.rb +++ b/app/controllers/registrar/xml_consoles_controller.rb @@ -8,6 +8,7 @@ class Registrar def create begin @result = depp_current_user.server.request(params[:payload]) + checking_schema_valid_path(params[:payload]) rescue @result = 'CONNECTION ERROR - Is the EPP server running?' end @@ -20,6 +21,29 @@ class Registrar xml = File.read("#{xml_dir_path}/#{params[:obj]}/#{params[:epp_action]}.xml") xml.gsub!('ABC-12345', "#{cl_trid}") render plain: xml + end + + private + + def checking_schema_valid_path(payload) + path = regex_to_find_domain_schema(payload) + + @result = template_wrong_path unless array_valid_paths.include? path + end + + def array_valid_paths + Xsd::Schema::PREFIXES.map{|prefix| Xsd::Schema.filename(for_prefix: prefix)} + end + + def template_wrong_path + 'Wrong schema path' + end + + def regex_to_find_domain_schema(payload) + domain_schema_tag = payload.scan(/xmlns:domain[\S]+/) + schema_path = domain_schema_tag.to_s.match(/https?:\/\/[\S]+/)[0] + path = schema_path.split('\\')[0] + path end end end diff --git a/lib/xsd/schema.rb b/lib/xsd/schema.rb index df82aa489..2ac57fb3a 100644 --- a/lib/xsd/schema.rb +++ b/lib/xsd/schema.rb @@ -8,7 +8,6 @@ module Xsd domain-eis all-ee changePoll - airport contact contact-ee contact-eis