epp 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +8 -12
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/epp/server.rb +17 -32
- metadata +18 -42
data/README.rdoc
CHANGED
@@ -7,25 +7,21 @@ The EPP gem provides basic functionality for connecting and making requests on E
|
|
7
7
|
|
8
8
|
== Installation
|
9
9
|
|
10
|
-
|
10
|
+
You can install this gem with:
|
11
11
|
|
12
12
|
$ gem install epp
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
$ gem install gemcutter
|
17
|
-
$ gem tumble
|
18
|
-
$ gem install epp
|
19
|
-
|
20
|
-
Then, you can require it in your Ruby app:
|
14
|
+
Then, you can require it in your Ruby/Rails app:
|
21
15
|
|
22
16
|
require "epp"
|
23
17
|
|
24
|
-
If you're using Rails,
|
18
|
+
If you're using Rails, configure your gem in the following file:
|
25
19
|
|
26
|
-
|
20
|
+
# Rails 2.x - config/environment.rb
|
21
|
+
config.gem "epp"
|
27
22
|
|
28
|
-
|
23
|
+
# Rails 3 - Gemfile
|
24
|
+
gem "epp"
|
29
25
|
|
30
26
|
== Example Usage
|
31
27
|
|
@@ -64,7 +60,7 @@ http://github.com/ultraspeed/epp/issues
|
|
64
60
|
|
65
61
|
== Credit
|
66
62
|
|
67
|
-
Author: Josh Delsman
|
63
|
+
Author: Josh Delsman (http://twitter.com/voxxit)
|
68
64
|
Inspired from: http://labs.centralnic.com/Net_EPP_Client.php
|
69
65
|
|
70
66
|
== License
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/lib/epp/server.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Epp #:nodoc:
|
2
2
|
class Server
|
3
|
+
include REXML
|
3
4
|
include RequiresParameters
|
4
5
|
|
5
|
-
attr_accessor :tag, :password, :server, :port, :old_server, :lang, :extensions, :version
|
6
|
+
attr_accessor :tag, :password, :server, :port, :old_server, :services, :lang, :extensions, :version
|
6
7
|
|
7
8
|
# ==== Required Attrbiutes
|
8
9
|
#
|
@@ -27,11 +28,10 @@ module Epp #:nodoc:
|
|
27
28
|
@server = attributes[:server]
|
28
29
|
@port = attributes[:port] || 700
|
29
30
|
@old_server = attributes[:old_server] || false
|
30
|
-
@lang = attributes[:lang] ||
|
31
|
+
@lang = attributes[:lang] || "en"
|
31
32
|
@services = attributes[:services] || ["urn:ietf:params:xml:ns:domain-1.0", "urn:ietf:params:xml:ns:contact-1.0", "urn:ietf:params:xml:ns:host-1.0"]
|
32
33
|
@extensions = attributes[:extensions] || []
|
33
34
|
@version = attributes[:verison] || "1.0"
|
34
|
-
@debug_log = attributes[:debug_log] || false
|
35
35
|
|
36
36
|
@logged_in = false
|
37
37
|
end
|
@@ -46,10 +46,9 @@ module Epp #:nodoc:
|
|
46
46
|
@logged_in = true if login
|
47
47
|
|
48
48
|
begin
|
49
|
-
puts "** EPP - Sending frame..." if @debug_log
|
50
49
|
@response = send_request(xml)
|
51
50
|
ensure
|
52
|
-
if @logged_in &&
|
51
|
+
if @logged_in && !old_server
|
53
52
|
@logged_in = false if logout
|
54
53
|
end
|
55
54
|
|
@@ -63,19 +62,17 @@ module Epp #:nodoc:
|
|
63
62
|
|
64
63
|
# Sends a standard login request to the EPP server.
|
65
64
|
def login
|
66
|
-
puts "** EPP - Attempting login..." if @debug_log
|
67
|
-
|
68
65
|
xml = new_epp_request
|
69
66
|
|
70
67
|
command = xml.root.add_element("command")
|
71
68
|
login = command.add_element("login")
|
72
69
|
|
73
|
-
login.add_element("clID").text =
|
74
|
-
login.add_element("pw").text =
|
70
|
+
login.add_element("clID").text = tag
|
71
|
+
login.add_element("pw").text = password
|
75
72
|
|
76
73
|
options = login.add_element("options")
|
77
|
-
options.add_element("version").text =
|
78
|
-
options.add_element("lang").text =
|
74
|
+
options.add_element("version").text = version
|
75
|
+
options.add_element("lang").text = lang
|
79
76
|
|
80
77
|
services = login.add_element("svcs")
|
81
78
|
services.add_element("objURI").text = "urn:ietf:params:xml:ns:domain-1.0"
|
@@ -83,9 +80,9 @@ module Epp #:nodoc:
|
|
83
80
|
services.add_element("objURI").text = "urn:ietf:params:xml:ns:host-1.0"
|
84
81
|
|
85
82
|
# Include schema extensions for registrars which require it
|
86
|
-
extensions_container = services.add_element("svcExtension") unless
|
83
|
+
extensions_container = services.add_element("svcExtension") unless extensions.empty?
|
87
84
|
|
88
|
-
for uri in
|
85
|
+
for uri in extensions
|
89
86
|
extensions_container.add_element("extURI").text = uri
|
90
87
|
end
|
91
88
|
|
@@ -98,7 +95,6 @@ module Epp #:nodoc:
|
|
98
95
|
result_code = (response/"epp"/"response"/"result").attr("code").to_i
|
99
96
|
|
100
97
|
if result_code == 1000
|
101
|
-
puts "** EPP - Successfully logged in." if @debug_log
|
102
98
|
return true
|
103
99
|
else
|
104
100
|
raise EppErrorResponse.new(:xml => response, :code => result_code, :message => result_message)
|
@@ -107,8 +103,6 @@ module Epp #:nodoc:
|
|
107
103
|
|
108
104
|
# Sends a standard logout request to the EPP server.
|
109
105
|
def logout
|
110
|
-
puts "** EPP - Attempting logout..." if @debug_log
|
111
|
-
|
112
106
|
xml = new_epp_request
|
113
107
|
|
114
108
|
command = xml.root.add_element("command")
|
@@ -121,7 +115,6 @@ module Epp #:nodoc:
|
|
121
115
|
result_code = (response/"epp"/"response"/"result").attr("code").to_i
|
122
116
|
|
123
117
|
if result_code == 1500
|
124
|
-
puts "** EPP - Successfully logged out." if @debug_log
|
125
118
|
return true
|
126
119
|
else
|
127
120
|
raise EppErrorResponse.new(:xml => response, :code => result_code, :message => result_message)
|
@@ -129,8 +122,8 @@ module Epp #:nodoc:
|
|
129
122
|
end
|
130
123
|
|
131
124
|
def new_epp_request
|
132
|
-
xml =
|
133
|
-
xml <<
|
125
|
+
xml = Document.new
|
126
|
+
xml << XMLDecl.new("1.0", "UTF-8", "no")
|
134
127
|
|
135
128
|
xml.add_element("epp", {
|
136
129
|
"xmlns" => "urn:ietf:params:xml:ns:epp-1.0",
|
@@ -153,7 +146,7 @@ module Epp #:nodoc:
|
|
153
146
|
# the EPP <tt><greeting></tt> frame which is sent by the
|
154
147
|
# server upon connection.
|
155
148
|
def open_connection
|
156
|
-
@connection = TCPSocket.new(
|
149
|
+
@connection = TCPSocket.new(server, port)
|
157
150
|
@socket = OpenSSL::SSL::SSLSocket.new(@connection)
|
158
151
|
|
159
152
|
# Synchronously close the connection & socket
|
@@ -163,12 +156,7 @@ module Epp #:nodoc:
|
|
163
156
|
@socket.connect
|
164
157
|
|
165
158
|
# Get the initial frame
|
166
|
-
|
167
|
-
|
168
|
-
if frame
|
169
|
-
puts "EPP - Connection opened." if @debug_log
|
170
|
-
return frame
|
171
|
-
end
|
159
|
+
get_frame
|
172
160
|
end
|
173
161
|
|
174
162
|
# Closes the connection to the EPP server.
|
@@ -183,10 +171,7 @@ module Epp #:nodoc:
|
|
183
171
|
@connection = nil
|
184
172
|
end
|
185
173
|
|
186
|
-
if @connection.nil? and @socket.nil?
|
187
|
-
puts "EPP - Connection closed." if @debug_log
|
188
|
-
return true
|
189
|
-
end
|
174
|
+
return true if @connection.nil? and @socket.nil?
|
190
175
|
end
|
191
176
|
|
192
177
|
# Receive an EPP frame from the server. Since the connection is blocking,
|
@@ -194,7 +179,7 @@ module Epp #:nodoc:
|
|
194
179
|
# the connection is broken, a SocketError will be raised. Otherwise,
|
195
180
|
# it will return a string containing the XML from the server.
|
196
181
|
def get_frame
|
197
|
-
if
|
182
|
+
if old_server
|
198
183
|
data = ""
|
199
184
|
first_char = @socket.read(1)
|
200
185
|
|
@@ -235,7 +220,7 @@ module Epp #:nodoc:
|
|
235
220
|
# size of the frame sent to the server. If the socket returns EOF,
|
236
221
|
# the connection has closed and a SocketError is raised.
|
237
222
|
def send_frame(xml)
|
238
|
-
@socket.write(
|
223
|
+
@socket.write(old_server ? (xml + "\r\n") : ([xml.size + 4].pack("N") + xml))
|
239
224
|
end
|
240
225
|
end
|
241
226
|
end
|
metadata
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease: false
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
- 3
|
10
|
-
version: 1.1.3
|
4
|
+
version: 1.2.0
|
11
5
|
platform: ruby
|
12
6
|
authors:
|
13
7
|
- Josh Delsman
|
@@ -15,51 +9,39 @@ autorequire:
|
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
11
|
|
18
|
-
date: 2010-
|
12
|
+
date: 2010-02-04 00:00:00 +00:00
|
19
13
|
default_executable:
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
16
|
name: shoulda
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
20
|
requirements:
|
27
21
|
- - ">="
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
23
|
version: "0"
|
33
|
-
|
34
|
-
version_requirements: *id001
|
24
|
+
version:
|
35
25
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
37
|
-
|
38
|
-
|
39
|
-
|
26
|
+
name: active_support
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
30
|
requirements:
|
41
31
|
- - ">="
|
42
32
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
33
|
version: "0"
|
47
|
-
|
48
|
-
version_requirements: *id002
|
34
|
+
version:
|
49
35
|
- !ruby/object:Gem::Dependency
|
50
36
|
name: hpricot
|
51
|
-
|
52
|
-
|
53
|
-
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
40
|
requirements:
|
55
41
|
- - ">="
|
56
42
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 0
|
60
43
|
version: "0"
|
61
|
-
|
62
|
-
version_requirements: *id003
|
44
|
+
version:
|
63
45
|
description: Basic functionality for connecting and making requests on EPP (Extensible Provisioning Protocol) servers
|
64
46
|
email: jdelsman@ultraspeed.com
|
65
47
|
executables: []
|
@@ -90,27 +72,21 @@ rdoc_options:
|
|
90
72
|
require_paths:
|
91
73
|
- lib
|
92
74
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
75
|
requirements:
|
95
76
|
- - ">="
|
96
77
|
- !ruby/object:Gem::Version
|
97
|
-
hash: 3
|
98
|
-
segments:
|
99
|
-
- 0
|
100
78
|
version: "0"
|
79
|
+
version:
|
101
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
81
|
requirements:
|
104
82
|
- - ">="
|
105
83
|
- !ruby/object:Gem::Version
|
106
|
-
hash: 3
|
107
|
-
segments:
|
108
|
-
- 0
|
109
84
|
version: "0"
|
85
|
+
version:
|
110
86
|
requirements: []
|
111
87
|
|
112
88
|
rubyforge_project:
|
113
|
-
rubygems_version: 1.3.
|
89
|
+
rubygems_version: 1.3.5
|
114
90
|
signing_key:
|
115
91
|
specification_version: 3
|
116
92
|
summary: EPP (Extensible Provisioning Protocol) for Ruby
|