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