cozaepp 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +86 -0
  5. data/Rakefile +2 -0
  6. data/cozaepp.gemspec +19 -0
  7. data/erb/apply_clienthold.erb +13 -0
  8. data/erb/check.erb +14 -0
  9. data/erb/check_contact.erb +14 -0
  10. data/erb/check_domain.erb +11 -0
  11. data/erb/check_host.erb +14 -0
  12. data/erb/create_contact.erb +31 -0
  13. data/erb/create_domain.erb +20 -0
  14. data/erb/create_domain_with_host.erb +25 -0
  15. data/erb/create_domain_with_ns.erb +20 -0
  16. data/erb/create_host.erb +13 -0
  17. data/erb/create_testregistrar.erb +27 -0
  18. data/erb/delete_contact.erb +11 -0
  19. data/erb/delete_domain.erb +12 -0
  20. data/erb/delete_host.erb +11 -0
  21. data/erb/epp_metadata.erb +18 -0
  22. data/erb/info.erb +12 -0
  23. data/erb/info_balance.erb +15 -0
  24. data/erb/info_contact.erb +15 -0
  25. data/erb/info_contact_coza.erb +20 -0
  26. data/erb/info_contact_response.erb +49 -0
  27. data/erb/info_domain.erb +12 -0
  28. data/erb/info_host.erb +12 -0
  29. data/erb/login.erb +18 -0
  30. data/erb/logout.erb +8 -0
  31. data/erb/pack.erb +8 -0
  32. data/erb/poll.erb +8 -0
  33. data/erb/poll_ack.erb +8 -0
  34. data/erb/remove_clienthold.erb +13 -0
  35. data/erb/renew.erb +13 -0
  36. data/erb/set_autorenew.erb +15 -0
  37. data/erb/transfer_approve.erb +11 -0
  38. data/erb/transfer_cancel.erb +11 -0
  39. data/erb/transfer_domain.erb +11 -0
  40. data/erb/transfer_query.erb +11 -0
  41. data/erb/transfer_reject.erb +11 -0
  42. data/erb/update_contact.erb +33 -0
  43. data/erb/update_domain.erb +33 -0
  44. data/erb/update_domain_ns.erb +17 -0
  45. data/erb/update_domain_registrant.erb +13 -0
  46. data/erb/update_host.erb +23 -0
  47. data/lib/cozaepp/version.rb +3 -0
  48. data/lib/cozaepp.rb +364 -0
  49. data/xsd/contact-1.0.xsd +270 -0
  50. data/xsd/coza-contact-1.0.xsd +72 -0
  51. data/xsd/coza-domain-1.0.xsd +84 -0
  52. data/xsd/domain-1.0.xsd +432 -0
  53. data/xsd/epp-1.0.xsd +375 -0
  54. data/xsd/eppcom-1.0.xsd +97 -0
  55. data/xsd/host-1.0.xsd +238 -0
  56. data/xsd/secDNS-1.1.xsd +134 -0
  57. metadata +117 -0
@@ -0,0 +1,13 @@
1
+ <epp:epp xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
2
+ xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
3
+ <epp:command>
4
+ <epp:update>
5
+ <domain:update>
6
+ <domain:name><%= domainName %></domain:name>
7
+ <domain:rem>
8
+ <domain:status s="clientHold"/>
9
+ </domain:rem>
10
+ </domain:update>
11
+ </epp:update>
12
+ </epp:command>
13
+ </epp:epp>
data/erb/renew.erb ADDED
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
3
+ <command>
4
+ <renew>
5
+ <domain:renew xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
6
+ <domain:name><%= domainName %></domain:name>
7
+ <domain:curExpDate><%= curExpiryDate %></domain:curExpDate>
8
+ </domain:renew>
9
+ </renew>
10
+ <clTRID><%= cltrid %></clTRID>
11
+ </command>
12
+ </epp>
13
+
@@ -0,0 +1,15 @@
1
+ <epp:epp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
2
+ xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns:cozadomain="http://co.za/epp/extensions/cozadomain-1-0"
3
+ xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
4
+ <epp:command>
5
+ <epp:update>
6
+ <domain:update xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
7
+ <domain:name><%= domainName %></domain:name>
8
+ </domain:update>
9
+ </epp:update>
10
+ <epp:extension>
11
+ <cozadomain:update xsi:schemaLocation="http://co.za/epp/extensions/cozadomain-1-0 coza-domain-1.0.xsd">
12
+ <cozadomain:chg><cozadomain:autorenew><%= autoRenew %></cozadomain:autorenew></cozadomain:chg></cozadomain:update>
13
+ </epp:extension>
14
+ </epp:command>
15
+ </epp:epp>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <transfer op="approve">
5
+ <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
6
+ <domain:name><%= domainName %></domain:name>
7
+ </domain:transfer>
8
+ </transfer>
9
+ <clTRID><%= cltrid %></clTRID>
10
+ </command>
11
+ </epp>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <transfer op="cancel">
5
+ <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
6
+ <domain:name>example.test.dnservices.co.za</domain:name>
7
+ </domain:transfer>
8
+ </transfer>
9
+ <clTRID>ABC-1234567890</clTRID>
10
+ </command>
11
+ </epp>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <transfer op="request">
5
+ <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
6
+ <domain:name><%= domainName %></domain:name>
7
+ </domain:transfer>
8
+ </transfer>
9
+ <clTRID><%= cltrid %></clTRID>
10
+ </command>
11
+ </epp>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <transfer op="query">
5
+ <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
6
+ <domain:name>example.test.dnservices.co.za</domain:name>
7
+ </domain:transfer>
8
+ </transfer>
9
+ <clTRID>ABC-12345678901</clTRID>
10
+ </command>
11
+ </epp>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <transfer op="reject">
5
+ <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
6
+ <domain:name>example.test.dnservices.co.za</domain:name>
7
+ </domain:transfer>
8
+ </transfer>
9
+ <clTRID>ABC-123456789012</clTRID>
10
+ </command>
11
+ </epp>
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <update>
5
+ <contact:update
6
+ xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
7
+ <contact:id><%= contactId %></contact:id>
8
+ <contact:chg>
9
+ <contact:postalInfo type="loc">
10
+ <contact:name><%= contactName %></contact:name>
11
+ <contact:org><%= contactOrg %></contact:org>
12
+ <contact:addr>
13
+ <contact:street><%= contactStreet1 %></contact:street>
14
+ <contact:street><%= contactStreet2 %></contact:street>
15
+ <contact:street><%= contactStreet3 %></contact:street>
16
+ <contact:city><%= contactCity %></contact:city>
17
+ <contact:sp><%= contactProvince %></contact:sp>
18
+ <contact:pc><%= contactPostalcode %></contact:pc>
19
+ <contact:cc><%= contactCountry %></contact:cc>
20
+ </contact:addr>
21
+ </contact:postalInfo>
22
+ <contact:voice><%= contactTel %></contact:voice>
23
+ <contact:fax/>
24
+ <contact:authInfo>
25
+ <contact:pw><%= contactPassword %></contact:pw>
26
+ </contact:authInfo>
27
+ </contact:chg>
28
+ </contact:update>
29
+ </update>
30
+ <clTRID><%= cltrid %></clTRID>
31
+ </command>
32
+ </epp>
33
+
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <update>
5
+ <domain:update xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
6
+ <domain:name>example.test.dnservices.co.za</domain:name>
7
+ <domain:add>
8
+ <domain:ns>
9
+ <domain:hostObj>ns2.example.test.dnservices.co.za</domain:hostObj>
10
+ </domain:ns>
11
+ <domain:contact type="tech">A Person</domain:contact>
12
+ <domain:status s="clientHold" lang="en">Payment overdue.</domain:status>
13
+ </domain:add>
14
+ <domain:rem>
15
+ <domain:ns>
16
+ <domain:hostObj>ns1.example.test.dnservices.co.za</domain:hostObj>
17
+ </domain:ns>
18
+ <domain:contact type="tech">JEO115P</domain:contact>
19
+ <domain:status s="clientUpdateProhibited"/>
20
+ </domain:rem>
21
+ <domain:chg>
22
+ <domain:registrant>sh8013</domain:registrant>
23
+ <domain:authInfo>
24
+ <domain:pw>password</domain:pw>
25
+ </domain:authInfo>
26
+ </domain:chg>
27
+ </domain:update>
28
+ </update>
29
+ <clTRID>ABC-12345</clTRID>
30
+ </command>
31
+ </epp>
32
+
33
+
@@ -0,0 +1,17 @@
1
+ <epp:epp xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain=
2
+ "urn:ietf:params:xml:ns:domain-1.0">
3
+ <epp:command>
4
+ <epp:update>
5
+ <domain:update>
6
+ <domain:name><%= domainName %></domain:name>
7
+ <domain:add>
8
+ <domain:ns>
9
+ <domain:hostAttr>
10
+ <domain:hostName><%= nsHostname1 %></domain:hostName>
11
+ </domain:hostAttr>
12
+ </domain:ns>
13
+ </domain:add>
14
+ </domain:update>
15
+ </epp:update>
16
+ </epp:command>
17
+ </epp:epp>
@@ -0,0 +1,13 @@
1
+ <epp:epp xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain=
2
+ "urn:ietf:params:xml:ns:domain-1.0">
3
+ <epp:command>
4
+ <epp:update>
5
+ <domain:update>
6
+ <domain:name><%= domainName %></domain:name>
7
+ <domain:chg>
8
+ <domain:registrant><%= registrant %></domain:registrant>
9
+ </domain:chg>
10
+ </domain:update>
11
+ </epp:update>
12
+ </epp:command>
13
+ </epp:epp>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
3
+ <command>
4
+ <update>
5
+ <host:update
6
+ xmlns:host="urn:ietf:params:xml:ns:host-1.0">
7
+ <host:name>ns1.example.test.dnservices.co.za</host:name>
8
+ <host:add>
9
+ <host:addr ip="v4">10.0.0.1</host:addr>
10
+ <host:addr ip="v6">fc00::9</host:addr>
11
+ <host:status s="clientUpdateProhibited"/>
12
+ </host:add>
13
+ <host:rem>
14
+ <host:addr ip="v6">fc00::1</host:addr>
15
+ </host:rem>
16
+ <host:chg>
17
+ <host:name>ns2.example.test.dnservices.co.za</host:name>
18
+ </host:chg>
19
+ </host:update>
20
+ </update>
21
+ <clTRID>ABC-12345</clTRID>
22
+ </command>
23
+ </epp>
@@ -0,0 +1,3 @@
1
+ module Cozaepp
2
+ VERSION = "0.0.1"
3
+ end
data/lib/cozaepp.rb ADDED
@@ -0,0 +1,364 @@
1
+ require "socket"
2
+ require "time"
3
+ require "securerandom"
4
+ require "erb"
5
+ require "epp"
6
+ require "cozaepp/version"
7
+
8
+ module CozaEPP
9
+ class Client
10
+ def initialize(server, tag, password, port = 3121)
11
+ raise ArgumentError unless server and tag and password
12
+ @gemRoot = Gem::Specification.find_by_name("cozaepp").gem_dir
13
+ @eppTag = tag
14
+ @eppPassword = password
15
+ @epp = Epp::Server.new(
16
+ :server => server,
17
+ :port => port,
18
+ :tag => tag,
19
+ :password => password
20
+ )
21
+ @epp.open_connection
22
+ end
23
+
24
+ def login
25
+ cltrid = gen_cltrid
26
+ xml = ERB.new(File.read(@gemRoot + "/erb/login.erb")).result(binding)
27
+ result = @epp.send_request(xml)
28
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
29
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
30
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
31
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid}
32
+ end
33
+
34
+ def logout
35
+ cltrid = gen_cltrid
36
+ xml = ERB.new(File.read(@gemRoot + "/erb/logout.erb")).result(binding)
37
+ result = @epp.send_request(xml)
38
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
39
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
40
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
41
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
42
+ end
43
+
44
+ def poll
45
+ cltrid = gen_cltrid
46
+ xml = ERB.new(File.read(@gemRoot + "/erb/poll.erb")).result(binding)
47
+ result = @epp.send_request(xml)
48
+ puts result
49
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
50
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
51
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
52
+ if statusCode == "1300"
53
+ return {:status => statusCode, \
54
+ :text => statusMsg, \
55
+ :cltrid => cltrid, \
56
+ :svtrid => svtrid
57
+ }
58
+ elsif statusCode == "1301"
59
+ msgId = Hpricot::XML(result).at("//epp:epp//epp:response//epp:msgQ")[:id]
60
+ msgDate = Hpricot::XML(result).at("//epp:epp//epp:response//epp:msgQ//epp:qDate/")
61
+ msgText = Hpricot::XML(result).at("//epp:epp//epp:response//epp:msgQ//epp:msg/")
62
+ msgCount = Hpricot::XML(result).at("//epp:epp//epp:response//epp:msgQ")[:count]
63
+ return {:status => statusCode, \
64
+ :text => statusMsg, \
65
+ :cltrid => cltrid, \
66
+ :svtrid => svtrid, \
67
+ :msgcount => msgCount, \
68
+ :msgid => msgId, \
69
+ :msgdate => msgDate, \
70
+ :msgtext => msgText}
71
+ end
72
+ end
73
+
74
+ def ack(messageId)
75
+ cltrid = gen_cltrid
76
+ xml = ERB.new(File.read(@gemRoot + "/erb/poll_ack.erb")).result(binding)
77
+ result = @epp.send_request(xml)
78
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
79
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
80
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
81
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
82
+ end
83
+
84
+ def create_contact(contactId,
85
+ contactName,
86
+ contactOrg,
87
+ contactStreet1,
88
+ contactStreet2,
89
+ contactStreet3,
90
+ contactCity,
91
+ contactProvince,
92
+ contactPostalcode,
93
+ contactCountry,
94
+ contactTel,
95
+ contactFax,
96
+ contactEmail,
97
+ contactPassword
98
+ )
99
+ cltrid = gen_cltrid
100
+ xml = ERB.new(File.read(@gemRoot + "/erb/create_contact.erb")).result(binding)
101
+ result = @epp.send_request(xml)
102
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
103
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
104
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
105
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
106
+ end
107
+
108
+ def update_contact(contactId,
109
+ contactName,
110
+ contactOrg,
111
+ contactStreet1,
112
+ contactStreet2,
113
+ contactStreet3,
114
+ contactCity,
115
+ contactProvince,
116
+ contactPostalcode,
117
+ contactCountry,
118
+ contactTel,
119
+ contactFax,
120
+ contactEmail,
121
+ contactPassword
122
+ )
123
+ cltrid = gen_cltrid
124
+ xml = ERB.new(File.read(@gemRoot + "/erb/update_contact.erb")).result(binding)
125
+ result = @epp.send_request(xml)
126
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
127
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
128
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
129
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
130
+ end
131
+
132
+ def update_domain_registrant(domainName,registrant)
133
+ cltrid = gen_cltrid
134
+ xml = ERB.new(File.read(@gemRoot + "/erb/update_domain_registrant.erb")).result(binding)
135
+ result = @epp.send_request(xml)
136
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
137
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
138
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
139
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
140
+ end
141
+
142
+ def update_domain_ns(domainName,
143
+ nsHostname1,
144
+ nsipv4Address1,
145
+ nsipv6Address1)
146
+ cltrid = gen_cltrid
147
+ xml = ERB.new(File.read(@gemRoot + "/erb/update_domain_ns.erb")).result(binding)
148
+ result = @epp.send_request(xml)
149
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
150
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
151
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
152
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
153
+ end
154
+
155
+ def info_contact(contactId,contactPassword)
156
+ cltrid = gen_cltrid
157
+ xml = ERB.new(File.read(@gemRoot + "/erb/info_contact.erb")).result(binding)
158
+ result = @epp.send_request(xml)
159
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
160
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
161
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
162
+ if statusCode == "1000" then
163
+ resData = Hpricot::XML(result).at("//epp:epp//epp:response//epp:resData//")
164
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid, :resdata => resData }
165
+ else
166
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
167
+ end
168
+ end
169
+
170
+ def info_contact_linkeddomains(contactId,contactPassword)
171
+ cltrid = gen_cltrid
172
+ xml = ERB.new(File.read(@gemRoot + "/erb/info_contact_coza.erb")).result(binding)
173
+ result = @epp.send_request(xml)
174
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
175
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
176
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
177
+ domainData = Hpricot::XML(result).at("//epp:epp//epp:response//epp:extension//cozac:infData//")
178
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid, :domaindata => domainData }
179
+ end
180
+
181
+ def info_balance(contactId)
182
+ cltrid = gen_cltrid
183
+ xml = ERB.new(File.read(@gemRoot + "/erb/info_balance.erb")).result(binding)
184
+ result = @epp.send_request(xml)
185
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
186
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
187
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
188
+ balance = Hpricot::XML(result).at("//epp:epp//epp:response//epp:extension//cozac:balance/")
189
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid, :balance => balance}
190
+ end
191
+
192
+ def info_domain(domainName)
193
+ cltrid = gen_cltrid
194
+ xml = ERB.new(File.read(@gemRoot + "/erb/info_domain.erb")).result(binding)
195
+ result = @epp.send_request(xml)
196
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
197
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
198
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
199
+ if statusCode == "1000" then
200
+ resData = Hpricot::XML(result).at("//epp:epp//epp:response//epp:resData//")
201
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid, :resdata => resData }
202
+ else
203
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
204
+ end
205
+ end
206
+
207
+ def create_host(serverHostname, ipv4Address, ipv6Address=nil)
208
+ cltrid = gen_cltrid
209
+ xml = ERB.new(File.read(@gemRoot + "/erb/create_host.erb")).result(binding)
210
+ result = @epp.send_request(xml)
211
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
212
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
213
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
214
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
215
+ end
216
+
217
+ def create_domain_with_ns(domainName,
218
+ registrant,
219
+ nsHostname1,
220
+ nsHostname2,
221
+ domainSecret
222
+ )
223
+
224
+ cltrid = gen_cltrid
225
+ xml = ERB.new(File.read(@gemRoot + "/erb/create_domain_with_ns.erb")).result(binding)
226
+ result = @epp.send_request(xml)
227
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
228
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
229
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
230
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
231
+ end
232
+
233
+ def create_domain_with_host(domainName,
234
+ registrant,
235
+ nsHostname1,
236
+ nsipv4Address1,
237
+ nsipv6Address1,
238
+ nsHostname2,
239
+ nsipv4Address2,
240
+ nsipv6Address2,
241
+ domainSecret
242
+ )
243
+
244
+ cltrid = gen_cltrid
245
+ xml = ERB.new(File.read(@gemRoot + "/erb/create_domain_with_host.erb")).result(binding)
246
+ result = @epp.send_request(xml)
247
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
248
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
249
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
250
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
251
+ end
252
+
253
+ def delete_domain(domainName)
254
+ cltrid = gen_cltrid
255
+ xml = ERB.new(File.read(@gemRoot + "/erb/delete_domain.erb")).result(binding)
256
+ result = @epp.send_request(xml)
257
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
258
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
259
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
260
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
261
+ end
262
+
263
+ def delete_contact(contactId)
264
+ cltrid = gen_cltrid
265
+ xml = ERB.new(File.read(@gemRoot + "/erb/delete_contact.erb")).result(binding)
266
+ result = @epp.send_request(xml)
267
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
268
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
269
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
270
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
271
+ end
272
+
273
+ def check_domain(domainName)
274
+ cltrid = gen_cltrid
275
+ xml = ERB.new(File.read(@gemRoot + "/erb/check_domain.erb")).result(binding)
276
+ result = @epp.send_request(xml)
277
+ puts result
278
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
279
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
280
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
281
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
282
+ end
283
+
284
+ def renew_domain(domainName,curExpiryDate)
285
+ cltrid = gen_cltrid
286
+ xml = ERB.new(File.read(@gemRoot + "/erb/renew.erb")).result(binding)
287
+ result = @epp.send_request(xml)
288
+ puts result
289
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
290
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
291
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
292
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
293
+ end
294
+
295
+ #autorenew in [ "true", "false"]
296
+ def set_autorenew(domainName, autoRenew)
297
+ cltrid = gen_cltrid
298
+ xml = ERB.new(File.read(@gemRoot + "/erb/set_autorenew.erb")).result(binding)
299
+ result = @epp.send_request(xml)
300
+ puts result
301
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
302
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
303
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
304
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
305
+ end
306
+
307
+ def apply_clienthold(domainName)
308
+ cltrid = gen_cltrid
309
+ xml = ERB.new(File.read(@gemRoot + "/erb/apply_clienthold.erb")).result(binding)
310
+ result = @epp.send_request(xml)
311
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
312
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
313
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
314
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
315
+ end
316
+
317
+ def remove_clienthold(domainName)
318
+ cltrid = gen_cltrid
319
+ xml = ERB.new(File.read(@gemRoot + "/erb/remove_clienthold.erb")).result(binding)
320
+ result = @epp.send_request(xml)
321
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
322
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
323
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
324
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid }
325
+ end
326
+
327
+ def transfer_domain(domainName)
328
+ cltrid = gen_cltrid
329
+ xml = ERB.new(File.read(@gemRoot + "/erb/transfer_domain.erb")).result(binding)
330
+ result = @epp.send_request(xml)
331
+ puts result
332
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
333
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
334
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
335
+ resData = Hpricot::XML(result).at("//epp:epp//epp:response//epp:resData//")
336
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid, :resdata => resData }
337
+ end
338
+
339
+ def transfer_approve(domainName)
340
+ cltrid = gen_cltrid
341
+ xml = ERB.new(File.read(@gemRoot + "/erb/transfer_approve.erb")).result(binding)
342
+ result = @epp.send_request(xml)
343
+ puts result
344
+ statusCode = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result")[:code]
345
+ statusMsg = Hpricot::XML(result).at("//epp:epp//epp:response//epp:result//epp:msg/")
346
+ svtrid = Hpricot::XML(result).at("//epp:epp//epp:response//epp:trID//epp:svTRID/")
347
+ resData = Hpricot::XML(result).at("//epp:epp//epp:response//epp:resData//")
348
+ return {:status => statusCode, :text => statusMsg, :cltrid => cltrid, :svtrid => svtrid, :resdata => resData }
349
+ end
350
+
351
+ private
352
+ def gen_cltrid
353
+ return "MTNBUS-" + Time.now.to_i.to_s + "-" + gen_random_string
354
+ end
355
+
356
+ private
357
+ def gen_random_string(length=32)
358
+ chars = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ23456789'
359
+ Array.new(length) { chars[rand(chars.length)].chr }.join
360
+ end
361
+
362
+ end
363
+ end
364
+