Basic domain check command implementation

This commit is contained in:
Martin Lensment 2014-06-27 17:46:03 +03:00
parent f8757891ef
commit cd52da3f8f
8 changed files with 49 additions and 9 deletions

View file

@ -67,8 +67,8 @@ For development configuration, add:
SetHandler cgi-script
</Directory>
Listen 700
<VirtualHost *:700>
Listen 701
<VirtualHost *:701>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/apache.crt
@ -89,6 +89,8 @@ For development configuration, add:
</IfModule>
```
Note: Its best to go with two virtual hosts, one for test and one for dev, then you don't have to worry about quitting the dev appserver for running tests (because of colliding ports).
For plain TCP EPP configuration, see below (may be useful for debugging purposes).
* `sudo a2ensite epp_ssl`
@ -98,7 +100,7 @@ Try it out:
* Fire up your appserver on port 8989 (This setup is tested with Unicorn)
* `cd $mod_epp`
* `./epptelnet.pl localhost 700 -s`
* `./epptelnet.pl localhost 701 -s`
You should receive the greeting from the registry server.
Wait for the greeting message on the STD, then send EPP/TCP frame:

View file

@ -12,4 +12,9 @@ class Epp::CommandsController < ApplicationController
type = OBJECT_TYPES[parsed_frame.css('create create').attr('schemaLocation').value]
send("create_#{type}")
end
def check
type = OBJECT_TYPES[parsed_frame.css('check check').attr('schemaLocation').value]
send("check_#{type}")
end
end

View file

@ -1,6 +1,6 @@
module Epp::CommandsHelper
def command_params
node_set = parsed_frame.css('epp command create create').children.select(&:element?)
def command_params_for type
node_set = parsed_frame.css("epp command #{type} #{type}").children.select(&:element?)
node_set.inject({}) {|hash, obj| hash[obj.name.to_sym] = obj.text;hash }
end
end

View file

@ -4,8 +4,17 @@ module Epp::DomainsHelper
render '/epp/domains/create'
end
def check_domain
cp = command_params_for('check')
@domain = cp[:name]
render '/epp/domains/check'
end
### HELPER METHODS ###
def domain_params
cp = command_params
cp = command_params_for('create')
{
name: cp[:name],
registrar_id: current_epp_user.registrar.try(:id),

View file

@ -1,3 +1,17 @@
xml.epp_head do
xml.bla
xml.response do
xml.result('code' => '1000') do
xml.msg 'Command completed successfully'
end
xml.resData do
xml.tag!('domain:chkData', 'xmlns:domain' => 'http://www.nic.cz/xml/epp/domain-1.4', 'xsi:schemaLocation' => 'http://www.nic.cz/xml/epp/domain-1.4 domain-1.4.xsd') do
xml.tag!('domain:cd') do
xml.tag!('domain:name', @domain, 'avail' => 1)
end
end
end
xml << render('/epp/shared/trID')
end
end

View file

@ -0,0 +1,4 @@
xml.trID do
xml.clTRID params[:clTRID]
xml.svTRID @svTRID
end

View file

@ -1,7 +1,7 @@
require 'rails_helper'
describe 'EPP Domain', epp: true do
let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'test', password: 'test'}) }
let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'test', password: 'test', port: 701}) }
context 'with valid user' do
before(:each) { Fabricate(:epp_user) }
@ -14,5 +14,11 @@ describe 'EPP Domain', epp: true do
expect(Domain.first.registrar.name).to eq('Zone Media OÜ')
end
it 'checks domain' do
response = epp_request('domains/check.xml')
expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully')
end
end
end

View file

@ -1,7 +1,7 @@
require 'rails_helper'
describe 'EPP Session', epp: true do
let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'test', password: 'test'}) }
let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'test', password: 'test', port: 701}) }
context 'when not connected' do
it 'greets client upon connection' do