epp_client 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in epp_client.gemspec
4
+ gemspec
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"
@@ -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
+ }
@@ -0,0 +1,3 @@
1
+ module EppClient
2
+ VERSION = "0.0.1"
3
+ end
data/lib/epp_client.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'socket'
2
+ require 'openssl'
3
+ require 'uuid'
4
+ require 'erb'
5
+
6
+ require 'epp_client/registrobr'
@@ -0,0 +1,12 @@
1
+ require "spec_helper"
2
+
3
+ describe EppClient::Registrobr::Client do
4
+
5
+ subject {
6
+ EppClient::Registrobr::Client.new("beta.registro.br", 700)
7
+ }
8
+
9
+ it "should check domain" do
10
+ subject.check("alisson15.com.br").should_not be_nil
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ require "bundler"
2
+ Bundler.setup(:default, :test)
3
+ Bundler.require
4
+
5
+ require "epp_client"
6
+
7
+ require "rake"
8
+ load File.expand_path("../../Rakefile", __FILE__)
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