-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2483 from internetee/add-xml-console-endpoints
Added xml epp console required endpoints and sample xml files
- Loading branch information
Showing
24 changed files
with
620 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
module EppRequestable | ||
extend ActiveSupport::Concern | ||
|
||
included do | ||
# before_action :validate_epp_user, only: :create | ||
end | ||
|
||
def create | ||
result = server.request(request_params[:payload]) | ||
render_success(data: { xml: result.force_encoding('UTF-8') }) | ||
rescue StandardError | ||
handle_non_epp_errors(nil, I18n.t('errors.messages.epp_conn_error')) | ||
end | ||
|
||
private | ||
|
||
# def validate_epp_user | ||
# return unless handle_hello_request | ||
|
||
# handle_login_request | ||
# server.close_connection | ||
# rescue OpenSSL::SSL::SSLError => e | ||
# Rails.logger.error "INVALID CERT: #{e}" | ||
# Rails.logger.error "INVALID CERT DEBUG INFO: epp_hostname: #{ENV['epp_hostname']}," \ | ||
# "port: #{ENV['epp_port']}, cert_path: #{ENV['cert_path']}, key_path: #{ENV['key_path']}" | ||
# handle_non_epp_errors(nil, I18n.t('errors.messages.invalid_cert')) | ||
# end | ||
|
||
# def handle_hello_request | ||
# res = server.open_connection | ||
# unless Nokogiri::XML(res).css('greeting') | ||
# server.close_connection # just in case | ||
# handle_non_epp_errors(nil, I18n.t('errors.messages.failed_epp_conn')) and return false | ||
# end | ||
# true | ||
# end | ||
|
||
# def handle_login_request | ||
# tag = current_user.username | ||
# ex = EppXml::Session.new(cl_trid_prefix: tag) | ||
# xml = ex.login(clID: { value: tag }, pw: { value: current_user.plain_text_password }) | ||
# res = server.send_request(xml) | ||
|
||
# return if Nokogiri::XML(res).css('result').first['code'] == '1000' | ||
|
||
# handle_non_epp_errors(nil, Nokogiri::XML(res).css('result').text) | ||
# end | ||
|
||
def server | ||
client_cert = File.read(ENV['cert_path']) | ||
client_key = File.read(ENV['key_path']) | ||
port = ENV['epp_port'] || 700 | ||
@server ||= Epp::Server.new({ server: ENV['epp_hostname'], tag: current_user.username, | ||
password: current_user.plain_text_password, | ||
port: port, | ||
cert: OpenSSL::X509::Certificate.new(client_cert), | ||
key: OpenSSL::PKey::RSA.new(client_key) }) | ||
end | ||
|
||
def request_params | ||
params.require(:xml_console).permit(:payload) | ||
end | ||
end |
55 changes: 55 additions & 0 deletions
55
app/controllers/repp/v1/registrar/xml_console_controller.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
module Repp | ||
module V1 | ||
module Registrar | ||
class XmlConsoleController < BaseController | ||
include EppRequestable | ||
|
||
THROTTLED_ACTIONS = %i[load_xml].freeze | ||
include Shunter::Integration::Throttle | ||
|
||
PREFS = %w[domain-ee contact-ee eis epp-ee].freeze | ||
|
||
SCHEMA_VERSIONS = { | ||
'epp-ee' => '1.0', | ||
'eis' => '1.0', | ||
'contact-ee' => '1.1', | ||
'default' => '1.2', | ||
}.freeze | ||
|
||
def load_xml | ||
cl_trid = "#{current_user.username}-#{Time.zone.now.to_i}" | ||
obj = ActionController::Base.helpers.sanitize(params[:obj]) | ||
epp_action = ActionController::Base.helpers.sanitize(params[:epp_action]) | ||
xml_dir_path = Rails.root.join('app/views/epp/sample_requests').to_s | ||
xml = File.read("#{xml_dir_path}/#{obj}/#{epp_action}.xml") | ||
xml = prepare_payload(xml, cl_trid) | ||
|
||
render_success(data: { xml: xml }) | ||
end | ||
|
||
private | ||
|
||
def prepare_payload(xml, cl_trid) | ||
PREFS.map do |pref| | ||
xml = load_schema_by_prefix(pref, xml) | ||
end | ||
|
||
xml.gsub!('<clTRID>ABC-12345</clTRID>', "<clTRID>#{cl_trid}</clTRID>") | ||
xml | ||
end | ||
|
||
def load_schema_by_prefix(pref, xml) | ||
version = version_by_prefix(pref) | ||
xml.gsub!("\"#{pref}\"", | ||
"\"#{Xsd::Schema.filename(for_prefix: pref.to_s, for_version: version)}\"") | ||
xml | ||
end | ||
|
||
def version_by_prefix(pref) | ||
key = SCHEMA_VERSIONS.key?(pref) ? pref : 'default' | ||
SCHEMA_VERSIONS[key] | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<epp xmlns="epp-ee"> | ||
<command> | ||
<check> | ||
<contact:check | ||
xmlns:contact="contact-ee"> | ||
<contact:id>sh8013</contact:id> | ||
</contact:check> | ||
</check> | ||
<clTRID>ABC-12345</clTRID> | ||
</command> | ||
</epp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<epp xmlns="epp-ee"> | ||
<command> | ||
<check> | ||
<contact:check | ||
xmlns:contact="contact-ee"> | ||
<contact:id>sh8013</contact:id> | ||
<contact:id>sh13</contact:id> | ||
<contact:id>vsdfvq</contact:id> | ||
</contact:check> | ||
</check> | ||
<clTRID>ABC-12345</clTRID> | ||
</command> | ||
</epp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<epp xmlns="epp-ee"> | ||
<command> | ||
<create> | ||
<contact:create xmlns:contact="contact-ee"> | ||
<contact:postalInfo> | ||
<contact:name>Sillius Soddus</contact:name> | ||
<contact:addr> | ||
<contact:street>123 Example Dr.</contact:street> | ||
<contact:street>Suite 100</contact:street> | ||
<contact:street/> | ||
<contact:city>Megaton</contact:city> | ||
<contact:sp>F3 </contact:sp> | ||
<contact:pc>201-33</contact:pc> | ||
<contact:cc>EE</contact:cc> | ||
</contact:addr> | ||
</contact:postalInfo> | ||
<contact:voice>+372.1234567</contact:voice> | ||
<contact:email>[email protected]</contact:email> | ||
</contact:create> | ||
</create> | ||
<extension> | ||
<eis:extdata xmlns:eis="eis"> | ||
<eis:ident type="org" cc="EE">123</eis:ident> | ||
<eis:legalDocument type="pdf"> | ||
dGVzdCBmYWlsCg== | ||
</eis:legalDocument> | ||
</eis:extdata> | ||
</extension> | ||
<clTRID>ABC-12345</clTRID> | ||
</command> | ||
</epp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<epp xmlns="epp-ee"> | ||
<command> | ||
<delete> | ||
<contact:delete | ||
xmlns:contact="contact-ee"> | ||
<contact:id>sh8013</contact:id> | ||
<contact:authInfo> | ||
<contact:pw>wrong-one</contact:pw> | ||
</contact:authInfo> | ||
</contact:delete> | ||
</delete> | ||
<extension> | ||
<eis:extdata xmlns:eis="eis"> | ||
<eis:legalDocument type="pdf"> | ||
dGVzdCBmYWlsCg== | ||
</eis:legalDocument> | ||
</eis:extdata> | ||
</extension> | ||
<clTRID>ABC-12345</clTRID> | ||
</command> | ||
</epp> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<epp xmlns="epp-ee"> | ||
<command> | ||
<info> | ||
<contact:info xmlns:contact="contact-ee"> | ||
<contact:id>sh8013</contact:id> | ||
<contact:authInfo> | ||
<contact:pw>Aas34fq</contact:pw> | ||
</contact:authInfo> | ||
</contact:info> | ||
</info> | ||
<clTRID>ABC-12345</clTRID> | ||
</command> | ||
</epp> |
Oops, something went wrong.