mirror of
https://github.com/internetee/registry.git
synced 2025-08-11 12:09:34 +02:00
Merge pull request #2483 from internetee/add-xml-console-endpoints
Added xml epp console required endpoints and sample xml files
This commit is contained in:
commit
553339f89d
24 changed files with 620 additions and 47 deletions
63
app/controllers/concerns/epp_requestable.rb
Normal file
63
app/controllers/concerns/epp_requestable.rb
Normal file
|
@ -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
app/controllers/repp/v1/registrar/xml_console_controller.rb
Normal file
55
app/controllers/repp/v1/registrar/xml_console_controller.rb
Normal file
|
@ -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
|
|
@ -90,6 +90,8 @@ module Repp
|
|||
|
||||
def calculate_market_share(domains_by_rar)
|
||||
sum = domains_by_rar.values.sum
|
||||
return domains_by_rar if sum.zero?
|
||||
|
||||
domains_by_rar.transform_values do |v|
|
||||
value = v.to_f / sum * 100.0
|
||||
value < 0.1 ? value.round(3) : value.round(1)
|
||||
|
|
|
@ -65,7 +65,6 @@ class Domain < ApplicationRecord
|
|||
statuses.include? DomainStatus::SERVER_REGISTRANT_CHANGE_PROHIBITED
|
||||
end
|
||||
|
||||
|
||||
# NB! contacts, admin_contacts, tech_contacts are empty for a new record
|
||||
has_many :domain_contacts, dependent: :destroy
|
||||
has_many :contacts, through: :domain_contacts, source: :contact
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
class LegalDocument < ApplicationRecord
|
||||
class LegalDocument < ApplicationRecord # rubocop:disable Metrics/ClassLength
|
||||
include EppErrors
|
||||
MIN_BODY_SIZE = (1.37 * 3.kilobytes).ceil
|
||||
MAX_BODY_SIZE = 8.megabytes
|
||||
|
@ -14,7 +14,7 @@ class LegalDocument < ApplicationRecord
|
|||
|
||||
belongs_to :documentable, polymorphic: true
|
||||
|
||||
validate :val_body_length, if: ->(file) { file.path.blank? }
|
||||
validate :val_body_length, if: ->(file) { file.path.blank? && (Rails.env.production? || Rails.env.test?) }
|
||||
|
||||
before_create :add_creator
|
||||
before_save :save_to_filesystem, if: :body
|
||||
|
@ -24,7 +24,7 @@ class LegalDocument < ApplicationRecord
|
|||
'2308' => [
|
||||
%i[body length_more_than],
|
||||
%i[body length_less_than],
|
||||
]
|
||||
],
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -42,7 +42,8 @@ class LegalDocument < ApplicationRecord
|
|||
|
||||
loop do
|
||||
rand = SecureRandom.random_number.to_s.last(4)
|
||||
next if rand.to_i == 0 || rand.length < 4
|
||||
next if rand.to_i.zero? || rand.length < 4
|
||||
|
||||
dir = "#{ENV['legal_documents_dir']}/#{Time.zone.now.strftime('%Y/%m/%d')}"
|
||||
FileUtils.mkdir_p(dir, mode: 0775)
|
||||
self.path = "#{dir}/#{Time.zone.now.to_formatted_s(:number)}_#{rand}.#{document_type}"
|
||||
|
@ -69,41 +70,50 @@ class LegalDocument < ApplicationRecord
|
|||
start = Time.zone.now.to_f
|
||||
Rails.logger.info '-----> Removing legal documents duplicates'
|
||||
count = 0
|
||||
modified = Array.new
|
||||
modified = []
|
||||
|
||||
LegalDocument.where(documentable_type: "Domain").where.not(checksum: [nil, ""]).find_each do |orig_legal|
|
||||
LegalDocument.where(documentable_type: 'Domain')
|
||||
.where.not(checksum: [nil, ''])
|
||||
.find_each do |orig_legal|
|
||||
next if modified.include?(orig_legal.checksum)
|
||||
next if !File.exist?(orig_legal.path)
|
||||
next unless File.exist?(orig_legal.path)
|
||||
|
||||
modified.push(orig_legal.checksum)
|
||||
|
||||
LegalDocument.where(documentable_type: "Domain", documentable_id: orig_legal.documentable_id).
|
||||
where(checksum: orig_legal.checksum).
|
||||
where.not(id: orig_legal.id).where.not(path: orig_legal.path).each do |new_legal|
|
||||
unless modified.include?(orig_legal.id)
|
||||
LegalDocument.where(documentable_type: 'Domain', documentable_id: orig_legal.documentable_id)
|
||||
.where(checksum: orig_legal.checksum)
|
||||
.where.not(id: orig_legal.id)
|
||||
.where.not(path: orig_legal.path).each do |new_legal|
|
||||
next if modified.include?(orig_legal.id)
|
||||
|
||||
File.delete(new_legal.path) if File.exist?(new_legal.path)
|
||||
new_legal.update(path: orig_legal.path)
|
||||
count += 1
|
||||
Rails.logger.info "File #{new_legal.path} has been removed by Domain "\
|
||||
"#{new_legal.documentable_id}. Document id: #{new_legal.id}"
|
||||
end
|
||||
end
|
||||
|
||||
contact_ids = Version::DomainVersion.where(item_id: orig_legal.documentable_id).distinct.
|
||||
pluck("object->>'registrant_id'", "object_changes->>'registrant_id'",
|
||||
"children->>'tech_contacts'", "children->>'admin_contacts'").flatten.uniq
|
||||
contact_ids = contact_ids.map{|id|
|
||||
contact_ids = Version::DomainVersion.where(item_id: orig_legal.documentable_id).distinct
|
||||
.pluck("object->>'registrant_id'",
|
||||
"object_changes->>'registrant_id'",
|
||||
"children->>'tech_contacts'",
|
||||
"children->>'admin_contacts'")
|
||||
.flatten.uniq
|
||||
contact_ids = contact_ids.map do |id|
|
||||
case id
|
||||
when Hash
|
||||
id["id"]
|
||||
id['id']
|
||||
when String
|
||||
JSON.parse(id) rescue id.to_i
|
||||
else
|
||||
id
|
||||
end
|
||||
}.flatten.compact.uniq
|
||||
LegalDocument.where(documentable_type: "Contact", documentable_id: contact_ids).
|
||||
where(checksum: orig_legal.checksum).where.not(path: orig_legal.path).each do |new_legal|
|
||||
unless modified.include?(orig_legal.id)
|
||||
end.flatten.compact.uniq
|
||||
LegalDocument.where(documentable_type: 'Contact', documentable_id: contact_ids)
|
||||
.where(checksum: orig_legal.checksum)
|
||||
.where.not(path: orig_legal.path).each do |new_legal|
|
||||
next if modified.include?(orig_legal.id)
|
||||
|
||||
File.delete(new_legal.path) if File.exist?(new_legal.path)
|
||||
new_legal.update(path: orig_legal.path)
|
||||
count += 1
|
||||
|
@ -111,8 +121,6 @@ class LegalDocument < ApplicationRecord
|
|||
"#{new_legal.documentable_id}. Document id: #{new_legal.id}"
|
||||
end
|
||||
end
|
||||
end
|
||||
Rails.logger.info "-----> Duplicates fixed for #{count} rows in #{(Time.zone.now.to_f - start).round(2)} seconds"
|
||||
|
||||
end
|
||||
end
|
||||
|
|
12
app/views/epp/sample_requests/contact/check.xml
Normal file
12
app/views/epp/sample_requests/contact/check.xml
Normal file
|
@ -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>
|
14
app/views/epp/sample_requests/contact/check_multiple.xml
Normal file
14
app/views/epp/sample_requests/contact/check_multiple.xml
Normal file
|
@ -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>
|
32
app/views/epp/sample_requests/contact/create.xml
Normal file
32
app/views/epp/sample_requests/contact/create.xml
Normal file
|
@ -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>example@test.example</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>
|
22
app/views/epp/sample_requests/contact/delete.xml
Normal file
22
app/views/epp/sample_requests/contact/delete.xml
Normal file
|
@ -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>
|
14
app/views/epp/sample_requests/contact/info.xml
Normal file
14
app/views/epp/sample_requests/contact/info.xml
Normal file
|
@ -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>
|
36
app/views/epp/sample_requests/contact/update_chg.xml
Normal file
36
app/views/epp/sample_requests/contact/update_chg.xml
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<update>
|
||||
<contact:update xmlns:contact="contact-ee">
|
||||
<contact:id>sh8013</contact:id>
|
||||
<contact:chg>
|
||||
<contact:postalInfo>
|
||||
<contact:name>John Doe</contact:name>
|
||||
<contact:addr>
|
||||
<contact:street>123 Example Dr.</contact:street>
|
||||
<contact:street>Suite 100</contact:street>
|
||||
<contact:city>Dulles</contact:city>
|
||||
<contact:sp>VA</contact:sp>
|
||||
<contact:pc>20166-6503</contact:pc>
|
||||
<contact:cc>EE</contact:cc>
|
||||
</contact:addr>
|
||||
</contact:postalInfo>
|
||||
<contact:voice>+123.7035555555</contact:voice>
|
||||
<contact:email>jdoe@example.com</contact:email>
|
||||
<contact:authInfo>
|
||||
<contact:pw>2fooBAR</contact:pw>
|
||||
</contact:authInfo>
|
||||
</contact:chg>
|
||||
</contact:update>
|
||||
</update>
|
||||
<extension>
|
||||
<eis:extdata xmlns:eis="eis">
|
||||
<eis:legalDocument type="pdf">
|
||||
dGVzdCBmYWlsCg==
|
||||
</eis:legalDocument>
|
||||
</eis:extdata>
|
||||
</extension>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
12
app/views/epp/sample_requests/domain/check.xml
Normal file
12
app/views/epp/sample_requests/domain/check.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<check>
|
||||
<domain:check
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
</domain:check>
|
||||
</check>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
15
app/views/epp/sample_requests/domain/client_hold.xml
Normal file
15
app/views/epp/sample_requests/domain/client_hold.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<update>
|
||||
<domain:update
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:rem>
|
||||
<domain:status s="clientHold"/>
|
||||
</domain:rem>
|
||||
</domain:update>
|
||||
</update>
|
||||
<clTRID>timo-1579351654</clTRID>
|
||||
</command>
|
||||
</epp>
|
42
app/views/epp/sample_requests/domain/create.xml
Normal file
42
app/views/epp/sample_requests/domain/create.xml
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<create>
|
||||
<domain:create
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:period unit="y">1</domain:period>
|
||||
<domain:ns>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns1.example.net</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns2.example.net</domain:hostName>
|
||||
<domain:hostAddr ip="v4">192.0.2.2</domain:hostAddr>
|
||||
<domain:hostAddr ip="v6">1080:0:0:0:8:800:200C:417A</domain:hostAddr>
|
||||
</domain:hostAttr>
|
||||
</domain:ns>
|
||||
<domain:registrant>jd1234</domain:registrant>
|
||||
<domain:contact type="admin">sh8013</domain:contact>
|
||||
<domain:contact type="tech">sh8013</domain:contact>
|
||||
<domain:contact type="tech">sh801333</domain:contact>
|
||||
</domain:create>
|
||||
</create>
|
||||
<extension>
|
||||
<secDNS:create xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
|
||||
<secDNS:keyData>
|
||||
<secDNS:flags>257</secDNS:flags>
|
||||
<secDNS:protocol>3</secDNS:protocol>
|
||||
<secDNS:alg>8</secDNS:alg>
|
||||
<secDNS:pubKey>AwEAAddt2AkLfYGKgiEZB5SmIF8EvrjxNMH6HtxWEA4RJ9Ao6LCWheg8</secDNS:pubKey>
|
||||
</secDNS:keyData>
|
||||
</secDNS:create>
|
||||
<eis:extdata xmlns:eis="eis">
|
||||
<eis:legalDocument type="pdf">
|
||||
dGVzdCBmYWlsCg==
|
||||
</eis:legalDocument>
|
||||
</eis:extdata>
|
||||
</extension>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
19
app/views/epp/sample_requests/domain/delete.xml
Normal file
19
app/views/epp/sample_requests/domain/delete.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<delete>
|
||||
<domain:delete
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
</domain:delete>
|
||||
</delete>
|
||||
<extension>
|
||||
<eis:extdata xmlns:eis="eis">
|
||||
<eis:legalDocument type="pdf">
|
||||
dGVzdCBmYWlsCg==
|
||||
</eis:legalDocument>
|
||||
</eis:extdata>
|
||||
</extension>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
15
app/views/epp/sample_requests/domain/info.xml
Normal file
15
app/views/epp/sample_requests/domain/info.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<info>
|
||||
<domain:info
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name hosts="all">example.ee</domain:name>
|
||||
<domain:authInfo>
|
||||
<domain:pw>2fooBAR</domain:pw>
|
||||
</domain:authInfo>
|
||||
</domain:info>
|
||||
</info>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
14
app/views/epp/sample_requests/domain/renew.xml
Normal file
14
app/views/epp/sample_requests/domain/renew.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<renew>
|
||||
<domain:renew
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:curExpDate>2014-08-07</domain:curExpDate>
|
||||
<domain:period unit="y">1</domain:period>
|
||||
</domain:renew>
|
||||
</renew>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
15
app/views/epp/sample_requests/domain/transfer.xml
Normal file
15
app/views/epp/sample_requests/domain/transfer.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<transfer op="request">
|
||||
<domain:transfer
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:authInfo>
|
||||
<domain:pw roid="JD1234-REP">2BARfoo</domain:pw>
|
||||
</domain:authInfo>
|
||||
</domain:transfer>
|
||||
</transfer>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
54
app/views/epp/sample_requests/domain/update.xml
Normal file
54
app/views/epp/sample_requests/domain/update.xml
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="epp-ee">
|
||||
<command>
|
||||
<update>
|
||||
<domain:update
|
||||
xmlns:domain="domain-ee">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:add>
|
||||
<domain:ns>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns1.example.com</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns2.example.com</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
</domain:ns>
|
||||
<domain:contact type="tech">mak21</domain:contact>
|
||||
</domain:add>
|
||||
<domain:rem>
|
||||
<domain:ns>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns1.example.net</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
</domain:ns>
|
||||
<domain:contact type="tech">mak21</domain:contact>
|
||||
</domain:rem>
|
||||
<domain:chg>
|
||||
<domain:registrant>mak21</domain:registrant>
|
||||
<domain:authInfo>
|
||||
<domain:pw>newpw</domain:pw>
|
||||
</domain:authInfo>
|
||||
</domain:chg>
|
||||
</domain:update>
|
||||
</update>
|
||||
<extension>
|
||||
<secDNS:update xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
|
||||
<secDNS:rem>
|
||||
<secDNS:keyData>
|
||||
<secDNS:flags>257</secDNS:flags>
|
||||
<secDNS:protocol>3</secDNS:protocol>
|
||||
<secDNS:alg>8</secDNS:alg>
|
||||
<secDNS:pubKey>700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f</secDNS:pubKey>
|
||||
</secDNS:keyData>
|
||||
</secDNS:rem>
|
||||
</secDNS:update>
|
||||
<eis:extdata xmlns:eis="eis">
|
||||
<eis:legalDocument type="pdf">
|
||||
dGVzdCBmYWlsCg==
|
||||
</eis:legalDocument>
|
||||
</eis:extdata>
|
||||
</extension>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
7
app/views/epp/sample_requests/poll/poll.xml
Normal file
7
app/views/epp/sample_requests/poll/poll.xml
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
||||
<command>
|
||||
<poll op="req"/>
|
||||
<clTRID>ABC-12345</clTRID>
|
||||
</command>
|
||||
</epp>
|
|
@ -61,6 +61,13 @@ contact_org_enabled: 'false'
|
|||
# System default for legal document types is: pdf,asice,sce,asics,scs,adoc,edoc,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx
|
||||
# legal_document_types: "pdf,asice,sce,asics,scs,adoc,edoc,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx"
|
||||
|
||||
#
|
||||
# REGISTRAR configuration
|
||||
#
|
||||
epp_port: '700'
|
||||
cert_path: '/opt/ca/certs/webclient.crt.pem'
|
||||
key_path: '/opt/ca/private/webclient.key.pem'
|
||||
epp_hostname: 'epp_proxy'
|
||||
repp_url: 'http://epp:3000/repp/v1/'
|
||||
|
||||
# Estonian Company Register
|
||||
|
|
|
@ -187,6 +187,9 @@ en:
|
|||
required_ident_attribute_missing: "Required ident attribute missing: %{key}"
|
||||
invalid_iso31661_alpha2: does not conform to ISO 3166-1 alpha-2 standard
|
||||
invalid_iso8601_date: has invalid date format YYYY-MM-DD (ISO 8601)
|
||||
invalid_cert: 'Invalid certificate'
|
||||
failed_epp_conn: 'Failed to open connection to EPP server!'
|
||||
epp_conn_error: 'CONNECTION ERROR - Is the EPP server running?'
|
||||
|
||||
code: 'Code'
|
||||
action: 'Action'
|
||||
|
|
|
@ -106,7 +106,7 @@ Rails.application.routes.draw do
|
|||
end
|
||||
end
|
||||
namespace :registrar do
|
||||
resources :notifications, only: [:index, :show, :update] do
|
||||
resources :notifications, only: %i[index show update] do
|
||||
collection do
|
||||
get '/all_notifications', to: 'notifications#all_notifications'
|
||||
end
|
||||
|
@ -128,6 +128,11 @@ Rails.application.routes.draw do
|
|||
post '/tara_callback', to: 'auth#tara_callback'
|
||||
end
|
||||
end
|
||||
resource :xml_console, controller: 'xml_console', only: %i[create] do
|
||||
collection do
|
||||
get 'load_xml'
|
||||
end
|
||||
end
|
||||
end
|
||||
resources :domains, constraints: { id: /.*/ } do
|
||||
resources :nameservers, only: %i[index create destroy], constraints: { id: /.*/ }, controller: 'domains/nameservers'
|
||||
|
@ -136,8 +141,8 @@ Rails.application.routes.draw do
|
|||
resources :renew, only: %i[create], constraints: { id: /.*/ }, controller: 'domains/renews'
|
||||
resources :transfer, only: %i[create], constraints: { id: /.*/ }, controller: 'domains/transfers'
|
||||
resources :statuses, only: %i[update destroy], constraints: { id: /.*/ }, controller: 'domains/statuses'
|
||||
match "dnssec", to: "domains/dnssec#destroy", via: "delete", defaults: { id: nil }
|
||||
match "contacts", to: "domains/contacts#destroy", via: "delete", defaults: { id: nil }
|
||||
match 'dnssec', to: 'domains/dnssec#destroy', via: 'delete', defaults: { id: nil }
|
||||
match 'contacts', to: 'domains/contacts#destroy', via: 'delete', defaults: { id: nil }
|
||||
collection do
|
||||
get ':id/transfer_info', to: 'domains#transfer_info', constraints: { id: /.*/ }
|
||||
post 'transfer', to: 'domains#transfer'
|
||||
|
|
108
test/integration/repp/v1/registrar/xml_console_test.rb
Normal file
108
test/integration/repp/v1/registrar/xml_console_test.rb
Normal file
|
@ -0,0 +1,108 @@
|
|||
require 'test_helper'
|
||||
|
||||
class ReppV1RegistrarXmlConsoleTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
@user = users(:api_bestnames)
|
||||
token = Base64.encode64("#{@user.username}:#{@user.plain_text_password}")
|
||||
token = "Basic #{token}"
|
||||
|
||||
@auth_headers = { 'Authorization' => token }
|
||||
adapter = ENV['shunter_default_adapter'].constantize.new
|
||||
adapter&.clear!
|
||||
end
|
||||
|
||||
def test_load_schema_path
|
||||
get load_xml_repp_v1_registrar_xml_console_path, params: { obj: 'domain', epp_action: 'update' },
|
||||
headers: @auth_headers
|
||||
|
||||
assert_response :ok
|
||||
json = JSON.parse(response.body, symbolize_names: true)
|
||||
assert_equal update_payload, json[:data][:xml]
|
||||
end
|
||||
|
||||
# TO BE REFACTORED
|
||||
# def test_check_schema_path
|
||||
# @auth_headers['Content-Type'] = 'application/json'
|
||||
# params = { xml_console: { payload: payload } }
|
||||
# post repp_v1_registrar_xml_console_path, params: params.to_json,
|
||||
# headers: @auth_headers
|
||||
|
||||
# assert_response :ok
|
||||
# end
|
||||
|
||||
private
|
||||
|
||||
def payload
|
||||
<<~XML
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
||||
<command>
|
||||
<check>
|
||||
<domain:check xmlns:domain="https://epp.tld.ee/schema/domain-ee-1.1.xsd">
|
||||
<domain:name>auction.test</domain:name>
|
||||
</domain:check>
|
||||
</check>
|
||||
</command>
|
||||
</epp>
|
||||
XML
|
||||
end
|
||||
|
||||
def update_payload
|
||||
<<~XML
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
|
||||
<command>
|
||||
<update>
|
||||
<domain:update
|
||||
xmlns:domain="https://epp.tld.ee/schema/domain-ee-1.2.xsd">
|
||||
<domain:name>example.ee</domain:name>
|
||||
<domain:add>
|
||||
<domain:ns>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns1.example.com</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns2.example.com</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
</domain:ns>
|
||||
<domain:contact type="tech">mak21</domain:contact>
|
||||
</domain:add>
|
||||
<domain:rem>
|
||||
<domain:ns>
|
||||
<domain:hostAttr>
|
||||
<domain:hostName>ns1.example.net</domain:hostName>
|
||||
</domain:hostAttr>
|
||||
</domain:ns>
|
||||
<domain:contact type="tech">mak21</domain:contact>
|
||||
</domain:rem>
|
||||
<domain:chg>
|
||||
<domain:registrant>mak21</domain:registrant>
|
||||
<domain:authInfo>
|
||||
<domain:pw>newpw</domain:pw>
|
||||
</domain:authInfo>
|
||||
</domain:chg>
|
||||
</domain:update>
|
||||
</update>
|
||||
<extension>
|
||||
<secDNS:update xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
|
||||
<secDNS:rem>
|
||||
<secDNS:keyData>
|
||||
<secDNS:flags>257</secDNS:flags>
|
||||
<secDNS:protocol>3</secDNS:protocol>
|
||||
<secDNS:alg>8</secDNS:alg>
|
||||
<secDNS:pubKey>700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f</secDNS:pubKey>
|
||||
</secDNS:keyData>
|
||||
</secDNS:rem>
|
||||
</secDNS:update>
|
||||
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
|
||||
<eis:legalDocument type="pdf">
|
||||
dGVzdCBmYWlsCg==
|
||||
</eis:legalDocument>
|
||||
</eis:extdata>
|
||||
</extension>
|
||||
<clTRID>test_bestnames-#{Time.zone.now.to_i}</clTRID>
|
||||
</command>
|
||||
</epp>
|
||||
XML
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue