epp_client 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +42 -0
- data/Rakefile +1 -0
- data/epp_client.gemspec +26 -0
- data/files/registrobr/client.pem +22 -0
- data/files/registrobr/key.pem +27 -0
- data/files/registrobr/root.pem +27 -0
- data/files/registrobr/server.pem +50 -0
- data/files/registrobr/templates/domain_check.xml.erb +17 -0
- data/files/registrobr/templates/login.xml.erb +27 -0
- data/files/registrobr/templates/logout.xml.erb +10 -0
- data/lib/epp_client/registrobr/client.rb +101 -0
- data/lib/epp_client/registrobr.rb +16 -0
- data/lib/epp_client/version.rb +3 -0
- data/lib/epp_client.rb +6 -0
- data/spec/epp_client/registrobr/client_spec.rb +12 -0
- data/spec/spec_helper.rb +8 -0
- metadata +120 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
epp_client (0.0.1)
|
5
|
+
uuid (~> 2.3)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
awesome_print (1.0.2)
|
11
|
+
coderay (1.0.5)
|
12
|
+
diff-lcs (1.1.3)
|
13
|
+
macaddr (1.5.0)
|
14
|
+
systemu (>= 2.4.0)
|
15
|
+
method_source (0.7.1)
|
16
|
+
pry (0.9.8.4)
|
17
|
+
coderay (~> 1.0.5)
|
18
|
+
method_source (~> 0.7.1)
|
19
|
+
slop (>= 2.4.4, < 3)
|
20
|
+
rake (0.9.2.2)
|
21
|
+
rspec (2.8.0)
|
22
|
+
rspec-core (~> 2.8.0)
|
23
|
+
rspec-expectations (~> 2.8.0)
|
24
|
+
rspec-mocks (~> 2.8.0)
|
25
|
+
rspec-core (2.8.0)
|
26
|
+
rspec-expectations (2.8.0)
|
27
|
+
diff-lcs (~> 1.1.2)
|
28
|
+
rspec-mocks (2.8.0)
|
29
|
+
slop (2.4.4)
|
30
|
+
systemu (2.4.2)
|
31
|
+
uuid (2.3.5)
|
32
|
+
macaddr (~> 1.0)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
ruby
|
36
|
+
|
37
|
+
DEPENDENCIES
|
38
|
+
awesome_print (~> 1.0)
|
39
|
+
epp_client!
|
40
|
+
pry (~> 0.9)
|
41
|
+
rake (~> 0.9)
|
42
|
+
rspec (~> 2.7)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/epp_client.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "epp_client/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "epp_client"
|
7
|
+
s.version = EppClient::VERSION
|
8
|
+
s.authors = ["Matheus Tardivo"]
|
9
|
+
s.email = ["matheustardivo@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/matheustardivo/epp_client"
|
11
|
+
s.summary = %q{Library to access EPP services}
|
12
|
+
s.description = s.summary
|
13
|
+
|
14
|
+
s.rubyforge_project = "epp_client"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency "rake", "~> 0.9"
|
22
|
+
s.add_development_dependency "rspec", "~> 2.7"
|
23
|
+
s.add_development_dependency "pry", "~> 0.9"
|
24
|
+
s.add_development_dependency "awesome_print", "~> 1.0"
|
25
|
+
s.add_runtime_dependency "uuid", "~> 2.3"
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDqDCCApCgAwIBAgIBMDANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCQlIx
|
3
|
+
EjAQBgNVBAgTCVNhbyBQYXVsbzESMBAGA1UEBxMJU2FvIFBhdWxvMRQwEgYDVQQK
|
4
|
+
EwtSZWdpc3Ryby5icjEMMAoGA1UECxMDRVBQMRQwEgYDVQQDEwtyZWdpc3Ryby5i
|
5
|
+
cjEeMBwGCSqGSIb3DQEJARYPZXBwQHJlZ2lzdHJvLmJyMB4XDTA5MDYwNDIwMTQy
|
6
|
+
MloXDTEyMDYwMzIwMTQyMlowVzELMAkGA1UEBhMCQlIxEjAQBgNVBAgTCVNhbyBQ
|
7
|
+
YXVsbzESMBAGA1UEBxMJU2FvIFBhdWxvMRQwEgYDVQQKEwtSZWdpc3Ryby5icjEK
|
8
|
+
MAgGA1UEAxMBMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM1Taqp4
|
9
|
+
U385+H9JFhUqvtdf7QKRSEMP4i3E588l9MxAKLN3zv6gLIPMDDIL9SzHLAUHwhb2
|
10
|
+
ugaMLw/cTRbsrX75aXDsTIeuNufCRTh/2tJbhh9q1QBH3TMMyKrh0tpUmBfQ+nIJ
|
11
|
+
ziO7NIQI4/aTKuBBgzF/r2Waf0+kTURaJ5zoy/I/5KaWtT6kZAoQ7QHi3TQAg5in
|
12
|
+
SeYPN5asI+PiWJcXlmU4nmwKRPeDRXimrOGbBU/jE2aK8oqgGX6VkhxVH79BfWxR
|
13
|
+
f7LNK59J5LCRXckQ983JcXvbzlYPw7vrRIWcAJK2XQ+9wIE+82d7hFh1nufeJW1C
|
14
|
+
Nb0/oQZ3qKfuVUkCAwEAAaNGMEQwHwYDVR0jBBgwFoAUywO+Dd5JDQC8ZtVHhwE9
|
15
|
+
W/atw8AwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADANBgkqhkiG
|
16
|
+
9w0BAQUFAAOCAQEAH1wVmUvad4ymlJD7ugz0htCLNJsIN4O9U99gr37Pn4yspUF9
|
17
|
+
weuGAWNRqjHGrEl8iKi1tou229+C9b3sJzazQSGg72wOlwB+xWwY9QzmZVWAjx1x
|
18
|
+
6HplZGxbZOnYrwnQnXG5xk/L4liqZZPJI7aAoa6QCMS8zkJBenk1O5nFvbW7sqLr
|
19
|
+
QEUzE7U2lbpLAy7goWonLgp9TPQV3Ndq4njFYQDc76r5ShOJOn2QXNmQqG8xxjTP
|
20
|
+
6lEYpivAjPfBxSTSmB9uBbSPYtFRYRmhhoRx3jFtpJpCXg8xXgPPE8FSS3Qd4B77
|
21
|
+
TjoDrotwp1D6LyxOGS0HsIYpa97K/D+GWWq+ww==
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEAzVNqqnhTfzn4f0kWFSq+11/tApFIQw/iLcTnzyX0zEAos3fO
|
3
|
+
/qAsg8wMMgv1LMcsBQfCFva6BowvD9xNFuytfvlpcOxMh64258JFOH/a0luGH2rV
|
4
|
+
AEfdMwzIquHS2lSYF9D6cgnOI7s0hAjj9pMq4EGDMX+vZZp/T6RNRFonnOjL8j/k
|
5
|
+
ppa1PqRkChDtAeLdNACDmKdJ5g83lqwj4+JYlxeWZTiebApE94NFeKas4ZsFT+MT
|
6
|
+
ZoryiqAZfpWSHFUfv0F9bFF/ss0rn0nksJFdyRD3zclxe9vOVg/Du+tEhZwAkrZd
|
7
|
+
D73AgT7zZ3uEWHWe594lbUI1vT+hBneop+5VSQIDAQABAoIBACSiRnzF3Tfs8u5a
|
8
|
+
7uq15rjsr4/utfLpKZS69hUak5PBusFSlgcOMwMM6/wd8A+eNbdsC/Am80fpyRfO
|
9
|
+
WZ7GeaoW+/4e2wS2S6uMGOecwEEZ/VMrr3dOWyQZmtAKXKGByGUvbw/bugDcDOGl
|
10
|
+
6G59EYBTkAHL41KAf0iJaxPP9hNjj/VNoPisH2eEk6wC6bSjMFY0NjOgIoSwafWN
|
11
|
+
1JInu9F3M781UucVhFbjIF1O73znhcMygqMw7qRFnxe9lICxT2megppORWgW07qf
|
12
|
+
dQ5y9WFtfFGkXgpdfMzemLrHSVM00L0xSpx7iifayptX0NNODPeIfFwrti1fkyZv
|
13
|
+
VEgDrgUCgYEA6O3n/b1J5iWtDasDi9Mn9TWIO40uWkZqmu9ZAu/QhqjbEVnyx84C
|
14
|
+
XJuUglWtP66UrfggsZK9HTKr5nkDf+o1JHmSJuBc075OQoUQENFMtQHcSa/rByq4
|
15
|
+
XYjH52U4xY9BX/Rwntq8UComxYx/XSt8k2RISjYGus51YtNd2bh3Qn8CgYEA4ama
|
16
|
+
pipz7k21Nw0BNotBDENKcxdD/ppCOwJzJ/WpQe7e8Ua2QjyNVsJGOJXdUeE7C8XV
|
17
|
+
Y6arT6LHqPnG9dZ7q0DThef/n+18FxzTvttC6Vr3sMjt22ygArxZL+trRjnCxpTQ
|
18
|
+
VTBtNM2mCdwSBVkA1UVrhEjPq1ZZ9kHvH1IS9DcCgYABNHHVwyvlr940SuUqzP3Q
|
19
|
+
6+T3geRyfRjCEmjgdgMbHzZ64X86/1rNxdQ/1FegE7QbLkRlBsBJrWBsQcX93GVH
|
20
|
+
+gUChHiWc86N04hgveRqr0bHbsyFbfgkK7f0/3YKt5H8ABSxDaqZs44dyXtDLR1o
|
21
|
+
2cTx9VOVlcnPqA49ORIM2wKBgQCKV0CQl7wEnqz2d8mDl7EkBGiyz9OGVSk/JcxU
|
22
|
+
9fxyiC8yuQfo6Vg4lNcZv34zwSFCoWClO7sQEhnW1HGNqpScMxy5nbWPZLbLMIf7
|
23
|
+
HE4T4wmv3i47c4dQxgjjIK7eGXD37qkdYJfCZERjDQAbOSoSlQFJ0p1FS6XRGzCu
|
24
|
+
AdHO1wKBgHhZiFxddmoo8prM9aFr5TbsfSsBfay1Gp2D6mAB/lUF+fShl1gB/ydt
|
25
|
+
esD7iYZ0xVtKs852L42XaccDXWs1sLSMN3/IPGeDSqkupWHg5K4OpKGOQ8ZWgjJ2
|
26
|
+
eppX6U6uFt3Wr09ChlwPEdUCfKQjy9FDW9tyDRn5VvodiMpwbKdO
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIEmzCCA4OgAwIBAgIJAPeh4e1Vi3LaMA0GCSqGSIb3DQEBBAUAMIGPMQswCQYD
|
3
|
+
VQQGEwJCUjESMBAGA1UECBMJU2FvIFBhdWxvMRIwEAYDVQQHEwlTYW8gUGF1bG8x
|
4
|
+
FDASBgNVBAoTC1JlZ2lzdHJvLmJyMQwwCgYDVQQLEwNFUFAxFDASBgNVBAMTC3Jl
|
5
|
+
Z2lzdHJvLmJyMR4wHAYJKoZIhvcNAQkBFg9lcHBAcmVnaXN0cm8uYnIwHhcNMDYw
|
6
|
+
NjE5MTcxNTM2WhcNMTYwNjE2MTcxNTM2WjCBjzELMAkGA1UEBhMCQlIxEjAQBgNV
|
7
|
+
BAgTCVNhbyBQYXVsbzESMBAGA1UEBxMJU2FvIFBhdWxvMRQwEgYDVQQKEwtSZWdp
|
8
|
+
c3Ryby5icjEMMAoGA1UECxMDRVBQMRQwEgYDVQQDEwtyZWdpc3Ryby5icjEeMBwG
|
9
|
+
CSqGSIb3DQEJARYPZXBwQHJlZ2lzdHJvLmJyMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
10
|
+
AQ8AMIIBCgKCAQEAvdoB0lvMm2OtDt+kuWjPqLz9E+1TlzSvmTZQMXtu+HBpXpuM
|
11
|
+
fgHRWmdWlxMb9PD5Z7KboNlVTJHq1fABT5FlfiYlUS2gPlNsL2GrrCp2YngDxUq8
|
12
|
+
5npjwaskfDmK72ioac74/DgdEUAtuikHKfgzc12RbXqV7g/mfTJrGddmrYI0jA1e
|
13
|
+
2yJ5eZZM1/8PR47pR207zq97zJVXFV8MqB5lfxpQeOc5ubH9o4OC8HkaBYlCG0RJ
|
14
|
+
lPkWcJn1f++6dsgpqxTU5fp5IqN7ngU7QCwRByUUj0kY+liPgkMR2q4UFwWSKKWJ
|
15
|
+
AfNe04jbpf6aHXP1LRrHK48SYPTnD5ifz9T8fQIDAQABo4H3MIH0MB0GA1UdDgQW
|
16
|
+
BBTLA74N3kkNALxm1UeHAT1b9q3DwDCBxAYDVR0jBIG8MIG5gBTLA74N3kkNALxm
|
17
|
+
1UeHAT1b9q3DwKGBlaSBkjCBjzELMAkGA1UEBhMCQlIxEjAQBgNVBAgTCVNhbyBQ
|
18
|
+
YXVsbzESMBAGA1UEBxMJU2FvIFBhdWxvMRQwEgYDVQQKEwtSZWdpc3Ryby5icjEM
|
19
|
+
MAoGA1UECxMDRVBQMRQwEgYDVQQDEwtyZWdpc3Ryby5icjEeMBwGCSqGSIb3DQEJ
|
20
|
+
ARYPZXBwQHJlZ2lzdHJvLmJyggkA96Hh7VWLctowDAYDVR0TBAUwAwEB/zANBgkq
|
21
|
+
hkiG9w0BAQQFAAOCAQEAD8zCjq2Zzwfht70d0feETkfBVbMSLMh7hqTR+eACnk2b
|
22
|
+
IVBX5AU+wvELrO+ZBMV8s/w5RlapRGxbyhuUNgaZ2nAD11sCWpYlO1YOpxbZRfCR
|
23
|
+
dHVnyRIFyG5obRr84M0fNw0Z+rfCOZta+PXNKDuYEI0Bnxi5VuWlmpNYnPFbgjhX
|
24
|
+
IFikOKBnvqBnZuByhA8Y7G7NnNE9alwQgxlMFEVauJPYFVCofkTMD42wtkt9qPe4
|
25
|
+
4qKIIueqOSkBKpZRMzr+kLDWkKSNYwHj06a7LpK+JwKXHFClLNm274Wj/W7xOjQy
|
26
|
+
XbvEn53j7c0kohYMSE5jOTuI45u3Rr28NJsd2AZHgQ==
|
27
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,50 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIID7DCCAtSgAwIBAgIBLjANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCQlIx
|
3
|
+
EjAQBgNVBAgTCVNhbyBQYXVsbzESMBAGA1UEBxMJU2FvIFBhdWxvMRQwEgYDVQQK
|
4
|
+
EwtSZWdpc3Ryby5icjEMMAoGA1UECxMDRVBQMRQwEgYDVQQDEwtyZWdpc3Ryby5i
|
5
|
+
cjEeMBwGCSqGSIb3DQEJARYPZXBwQHJlZ2lzdHJvLmJyMB4XDTA5MDYwNDE4NDA1
|
6
|
+
MVoXDTEyMDYwMzE4NDA1MVowejELMAkGA1UEBhMCQlIxEjAQBgNVBAgTCVNhbyBQ
|
7
|
+
YXVsbzESMBAGA1UEBxMJU2FvIFBhdWxvMRQwEgYDVQQKEwtSZWdpc3Ryby5icjEZ
|
8
|
+
MBcGA1UECxMQbGliZXBwIHVuaXQgdGVzdDESMBAGA1UEAxMJdW5pdC50ZXN0MIIB
|
9
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ofZ7tfm43XIgz+ZcTxfuRCr
|
10
|
+
4Ha5Pjo4SjHE4L3DOHMJsZKgjrJqs9s1QsyjmWpYMLf9LVZrQrNZjtlFsmyN4Iib
|
11
|
+
9V6HAkbR19ATUZUnH39t9BK3kDy/XU/48LPkJhumDx8y4hhsfGkn2yrqKY8n4GP2
|
12
|
+
CDuhnAzfnnY/SjjEOGpbsPW59Byc/fpdT2fJxbJbaFIUSm1gbXh1BL1/9kFAQAZw
|
13
|
+
K1FCoeWJjrKsG6QRu5PI6gffDR1IrOV6h4lOsBYe0RCRScm30meeKQRNZwKOVp8z
|
14
|
+
NDYCGLeGDt9I5DPqITv8FBRuLTeQt4iiXzRIpJ0aKj1pNHmdmrX325UfXmRuYQID
|
15
|
+
AQABo2cwZTAfBgNVHSMEGDAWgBTLA74N3kkNALxm1UeHAT1b9q3DwDA0BgNVHSUE
|
16
|
+
LTArBggrBgEFBQcDAQYIKwYBBQUHAwIGCisGAQQBgjcKAwMGCWCGSAGG+EIEATAM
|
17
|
+
BgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4IBAQCr2vGEi7NXd6KlfXVQ9JLE
|
18
|
+
MRGjl+I59xZOKKFB9E9BSieSvenpctT+FbsrrVuBIWRVXU3gJAFS9C35HRrZsRcl
|
19
|
+
D+x7+dFwIK3ootIEPX4h43Sb6IHrV94yQjuvsuN+bmKTqFjPjkXdQJFoLRGThvV3
|
20
|
+
j5zbBsQfVEdJ4kTPGb3sTZjkMFEGvVNtQ0YqvIJ2TyD+aptQOgIs/jkrRzMmExlD
|
21
|
+
H09yaO8ojZ870dcxovFgQ4TqtmsD91nXt7tUnfeXaPDENiNAQ6ibP8kFRsKb67pi
|
22
|
+
FJITyz8mTUpgH4GwDIEzCcTob4+vPxyakBQU4G8lc98LwxKjLdmRmW151mX8ecNr
|
23
|
+
-----END CERTIFICATE-----
|
24
|
+
-----BEGIN RSA PRIVATE KEY-----
|
25
|
+
MIIEpAIBAAKCAQEA8ofZ7tfm43XIgz+ZcTxfuRCr4Ha5Pjo4SjHE4L3DOHMJsZKg
|
26
|
+
jrJqs9s1QsyjmWpYMLf9LVZrQrNZjtlFsmyN4Iib9V6HAkbR19ATUZUnH39t9BK3
|
27
|
+
kDy/XU/48LPkJhumDx8y4hhsfGkn2yrqKY8n4GP2CDuhnAzfnnY/SjjEOGpbsPW5
|
28
|
+
9Byc/fpdT2fJxbJbaFIUSm1gbXh1BL1/9kFAQAZwK1FCoeWJjrKsG6QRu5PI6gff
|
29
|
+
DR1IrOV6h4lOsBYe0RCRScm30meeKQRNZwKOVp8zNDYCGLeGDt9I5DPqITv8FBRu
|
30
|
+
LTeQt4iiXzRIpJ0aKj1pNHmdmrX325UfXmRuYQIDAQABAoIBAQCxt5ibavuWW52V
|
31
|
+
h0oR7tKZ0ryPm4+8KH9M5tFEeekOeUV2KGKcjeKgbpXFoByVc5ayBHByA2xPkQqk
|
32
|
+
IVPwHZmNGa1mjGDT6z8jLCar1ma3rvHMMtbty4XSg6KABuG8hvAVDqCDirAcLhX1
|
33
|
+
hKnX0D3BMJ59g+y1Y72M6UsRQS2Pw/q+b/ygETN96zER3fBHrLvtEv2QmXCRODgI
|
34
|
+
rl504IQqGBFPgSOoj/esgtoUPBHcE8brFRbRUKc8oSn1NIcoDXkl5lZtFVYDDjY8
|
35
|
+
1Pqz725y9+D5Mvsv058c8ulDUbNxrFXpal6X2AmSXHgsK/aCTnBHJJrA0Krh3q4r
|
36
|
+
twU9pHNRAoGBAPwxfltDeHL0yg8eUmNurBR1IjXFRsdIhItkc8CBrnrAfadoTa87
|
37
|
+
1QH3AGJDq8WJB+LfQOeSU5W9yT/EGhaYJFxgqLp6ZjDYUWMYuxSybJbmOwzlXd+L
|
38
|
+
0TAgs1kzRNvo8cQBty1V/ec1kW/ECF7G4pxh5qkmu5+TVHGnwFXK6hX1AoGBAPYx
|
39
|
+
BR1uKXvnxY/d2qYB6yakIGwr+N6yY+EBvOcSiP1BP42bwBkQcY8qQLPQUGo4OGnN
|
40
|
+
wBtGDwMbgLugsPC7jaQe9vgCCavPfMWjEV+YCezJN1r8f/5qAAp/LemyuEW7jQVv
|
41
|
+
nTTjUp+79tqJyt+tdWQCr1O1bMYvoXNh+TEIRYc9AoGARn9PYxOpR/lFwpQnU8RM
|
42
|
+
NivINF/BOVP8OTsLYHTf4VCNz45IqQOAt9vkL5PbIIz9t13RNuqgkutKppia8lX1
|
43
|
+
VB1xDS/KAT13AsyW/2IhGM2jFCfJ5gOfpmR9viGmzhKAAtq36eRv5YID9cpGzLes
|
44
|
+
ASsc34wERsdYg6zxBwqCBUECgYEApyaBIoo5ADdMm3E1kqCa15F3sfno7sqPpaVY
|
45
|
+
bErZV5mFXM/yjRHtCBbX9z3oWzXwl2VqmRnn92Qk8z8W41tzv4qGg7xedJhbTpR4
|
46
|
+
pz7C/lFflBb7j/DINlhDA/ijxDSiep5dThtJbcpgv9/uLg/HNC/eeicjwytzorNS
|
47
|
+
TUggbMECgYB7wjmsv19vzfVOcsLso3LyJ6WRbBbG94pteyJp6Nrh8bHTU35b2PMx
|
48
|
+
nyQqxWtMWnmV9NGujZ+i5Wv1jFXe2FqYgfVe7K93ds/gWDS8MK58vY37wSj55CLb
|
49
|
+
3RcphBhbh2xeuYGdBcLEUBHAFVowzjNj7qS4AX6bVEv6t3d2ppNcKg==
|
50
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
|
5
|
+
epp-1.0.xsd">
|
6
|
+
<command>
|
7
|
+
<check>
|
8
|
+
<domain:check
|
9
|
+
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
|
10
|
+
xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
|
11
|
+
domain-1.0.xsd">
|
12
|
+
<domain:name><%= @domain %></domain:name>
|
13
|
+
</domain:check>
|
14
|
+
</check>
|
15
|
+
<clTRID><%= @uuid %></clTRID>
|
16
|
+
</command>
|
17
|
+
</epp>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
|
5
|
+
epp-1.0.xsd">
|
6
|
+
<command>
|
7
|
+
<login>
|
8
|
+
<clID><%= ENV['REGISTRO_BR_CLIENT_ID'] %></clID>
|
9
|
+
<pw><%= ENV['REGISTRO_BR_CLIENT_PW'] %></pw>
|
10
|
+
<options>
|
11
|
+
<version>1.0</version>
|
12
|
+
<lang>pt</lang>
|
13
|
+
</options>
|
14
|
+
<svcs>
|
15
|
+
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
|
16
|
+
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
|
17
|
+
<svcExtension>
|
18
|
+
<extURI>urn:ietf:params:xml:ns:brdomain-1.0</extURI>
|
19
|
+
<extURI>urn:ietf:params:xml:ns:brorg-1.0</extURI>
|
20
|
+
<extURI>urn:ietf:params:xml:ns:secDNS-1.0</extURI>
|
21
|
+
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
|
22
|
+
</svcExtension>
|
23
|
+
</svcs>
|
24
|
+
</login>
|
25
|
+
<clTRID><%= @uuid %></clTRID>
|
26
|
+
</command>
|
27
|
+
</epp>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
|
5
|
+
epp-1.0.xsd">
|
6
|
+
<command>
|
7
|
+
<logout/>
|
8
|
+
<clTRID><%= @uuid %></clTRID>
|
9
|
+
</command>
|
10
|
+
</epp>
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module EppClient
|
2
|
+
module Registrobr
|
3
|
+
class Client
|
4
|
+
attr_accessor :host, :port
|
5
|
+
|
6
|
+
def initialize(host, port)
|
7
|
+
@host, @port = host, port
|
8
|
+
end
|
9
|
+
|
10
|
+
def check(domain)
|
11
|
+
@domain = domain
|
12
|
+
|
13
|
+
connect
|
14
|
+
login
|
15
|
+
|
16
|
+
check_response = send_request(:domain_check)
|
17
|
+
|
18
|
+
logout
|
19
|
+
close_connection
|
20
|
+
|
21
|
+
check_response
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def connect
|
26
|
+
ssl_context = OpenSSL::SSL::SSLContext.new(:TLSv1)
|
27
|
+
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open(CERTIFICATES[:cert]))
|
28
|
+
ssl_context.key = OpenSSL::PKey::RSA.new(File.open(CERTIFICATES[:key]))
|
29
|
+
ssl_context.ca_file = CERTIFICATES[:ca_file]
|
30
|
+
ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
31
|
+
|
32
|
+
@ssl_socket = OpenSSL::SSL::SSLSocket.new(TCPSocket.new(@host, @port), ssl_context)
|
33
|
+
@ssl_socket.sync_close = true
|
34
|
+
|
35
|
+
@ssl_socket.connect
|
36
|
+
|
37
|
+
begin
|
38
|
+
@ssl_socket.post_connection_check(host)
|
39
|
+
rescue => ex
|
40
|
+
raise PostConnectionCheckError, "Post connection check failed: #{ex.inspect}"
|
41
|
+
end
|
42
|
+
|
43
|
+
@ssl_socket.sysread(4096)
|
44
|
+
end
|
45
|
+
|
46
|
+
def close_connection
|
47
|
+
@ssl_socket.close
|
48
|
+
end
|
49
|
+
|
50
|
+
def login
|
51
|
+
send_request(:login)
|
52
|
+
end
|
53
|
+
|
54
|
+
def logout
|
55
|
+
send_request(:logout)
|
56
|
+
end
|
57
|
+
|
58
|
+
def send_request(xml)
|
59
|
+
raise TemplateNotFoundError unless TEMPLATES[xml]
|
60
|
+
|
61
|
+
actual_template = ERB.new File.open(TEMPLATES[xml]).readlines.join
|
62
|
+
@uuid = generate_uuid
|
63
|
+
|
64
|
+
send_frame(actual_template.result(binding))
|
65
|
+
get_frame
|
66
|
+
end
|
67
|
+
|
68
|
+
def generate_uuid
|
69
|
+
UUID.generate(:compact)
|
70
|
+
end
|
71
|
+
|
72
|
+
def send_frame(xml)
|
73
|
+
@ssl_socket.write(packed(xml) + xml)
|
74
|
+
end
|
75
|
+
|
76
|
+
def packed(xml)
|
77
|
+
[xml.size + 4].pack("N")
|
78
|
+
end
|
79
|
+
|
80
|
+
def get_frame
|
81
|
+
raise SSLSocketError, "Connection closed by remote server" if !@ssl_socket or @ssl_socket.eof?
|
82
|
+
|
83
|
+
header = @ssl_socket.read(4)
|
84
|
+
raise SSLSocketError, "Error reading frame from remote server" if header.nil?
|
85
|
+
|
86
|
+
length = header_size(header)
|
87
|
+
raise SSLSocketError, "Got bad frame header length of #{length} bytes from the server" if length < 5
|
88
|
+
|
89
|
+
@ssl_socket.read(length - 4)
|
90
|
+
end
|
91
|
+
|
92
|
+
def header_size(header)
|
93
|
+
header.unpack("N").first
|
94
|
+
end
|
95
|
+
|
96
|
+
class PostConnectionCheckError < StandardError; end
|
97
|
+
class SSLSocketError < StandardError; end
|
98
|
+
class TemplateNotFoundError < StandardError; end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'epp_client/registrobr/client'
|
2
|
+
|
3
|
+
TEMPLATES_FOLDER = 'files/registrobr/templates/'
|
4
|
+
CERTIFICATES_FOLDER = 'files/registrobr/'
|
5
|
+
|
6
|
+
TEMPLATES = {
|
7
|
+
:login => "#{TEMPLATES_FOLDER}login.xml.erb",
|
8
|
+
:logout => "#{TEMPLATES_FOLDER}logout.xml.erb",
|
9
|
+
:domain_check => "#{TEMPLATES_FOLDER}domain_check.xml.erb"
|
10
|
+
}
|
11
|
+
|
12
|
+
CERTIFICATES = {
|
13
|
+
:cert => "#{CERTIFICATES_FOLDER}client.pem",
|
14
|
+
:key => "#{CERTIFICATES_FOLDER}key.pem",
|
15
|
+
:ca_file => "#{CERTIFICATES_FOLDER}root.pem"
|
16
|
+
}
|
data/lib/epp_client.rb
ADDED
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: epp_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matheus Tardivo
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &70138644799620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.9'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70138644799620
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &70138644797420 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.7'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70138644797420
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: pry
|
38
|
+
requirement: &70138644796000 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.9'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70138644796000
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: awesome_print
|
49
|
+
requirement: &70138644794700 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70138644794700
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: uuid
|
60
|
+
requirement: &70138644793220 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2.3'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70138644793220
|
69
|
+
description: Library to access EPP services
|
70
|
+
email:
|
71
|
+
- matheustardivo@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- Gemfile
|
78
|
+
- Gemfile.lock
|
79
|
+
- Rakefile
|
80
|
+
- epp_client.gemspec
|
81
|
+
- files/registrobr/client.pem
|
82
|
+
- files/registrobr/key.pem
|
83
|
+
- files/registrobr/root.pem
|
84
|
+
- files/registrobr/server.pem
|
85
|
+
- files/registrobr/templates/domain_check.xml.erb
|
86
|
+
- files/registrobr/templates/login.xml.erb
|
87
|
+
- files/registrobr/templates/logout.xml.erb
|
88
|
+
- lib/epp_client.rb
|
89
|
+
- lib/epp_client/registrobr.rb
|
90
|
+
- lib/epp_client/registrobr/client.rb
|
91
|
+
- lib/epp_client/version.rb
|
92
|
+
- spec/epp_client/registrobr/client_spec.rb
|
93
|
+
- spec/spec_helper.rb
|
94
|
+
homepage: https://github.com/matheustardivo/epp_client
|
95
|
+
licenses: []
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project: epp_client
|
114
|
+
rubygems_version: 1.8.11
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: Library to access EPP services
|
118
|
+
test_files:
|
119
|
+
- spec/epp_client/registrobr/client_spec.rb
|
120
|
+
- spec/spec_helper.rb
|