cps-client 0.0.2
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 +17 -0
- data/Rakefile +2 -0
- data/Readme.textile +76 -0
- data/cps-client.gemspec +23 -0
- data/lib/core_ext.rb +55 -0
- data/lib/cps-client.rb +8 -0
- data/lib/cps-client/client.rb +102 -0
- data/lib/cps-client/config.rb +10 -0
- data/lib/cps-client/contact.rb +48 -0
- data/lib/cps-client/domain.rb +35 -0
- data/lib/cps-client/erb_helper.rb +11 -0
- data/lib/cps-client/errors.rb +267 -0
- data/lib/cps-client/version.rb +17 -0
- data/lib/erb/base.erb +11 -0
- data/lib/erb/contact_create.erb +19 -0
- data/lib/erb/contact_delete.erb +4 -0
- data/lib/erb/contact_domain.erb +13 -0
- data/lib/erb/contact_info.erb +4 -0
- data/lib/erb/domain_create.erb +16 -0
- data/lib/erb/domain_delete.erb +4 -0
- data/lib/erb/domain_info.erb +4 -0
- data/test.rb +131 -0
- metadata +106 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cps-client (0.1.0)
|
5
|
+
always_verify_ssl_certificates (>= 0.2.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
always_verify_ssl_certificates (0.2.0)
|
11
|
+
|
12
|
+
PLATFORMS
|
13
|
+
ruby
|
14
|
+
|
15
|
+
DEPENDENCIES
|
16
|
+
always_verify_ssl_certificates (>= 0.2.0)
|
17
|
+
cps-client!
|
data/Rakefile
ADDED
data/Readme.textile
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
h1. CPS-CLIENT
|
2
|
+
|
3
|
+
Ruby api for the arp-client of cps-datensysteme.de
|
4
|
+
|
5
|
+
h2. Installation
|
6
|
+
|
7
|
+
<pre><code>sudo gem install cps-client
|
8
|
+
bundle # to install dependencies</code></pre>
|
9
|
+
|
10
|
+
h2. Howto register a domain
|
11
|
+
|
12
|
+
Create a cps-client object:
|
13
|
+
|
14
|
+
<pre><code>server = CPS::Client.new(
|
15
|
+
:cid => 'your-cid',
|
16
|
+
:uid => 'your-uid',
|
17
|
+
:pwd => 'your-pwd',
|
18
|
+
:production => false # for development
|
19
|
+
)</code></pre>
|
20
|
+
|
21
|
+
Create a client contact handle:
|
22
|
+
|
23
|
+
<pre><code>client_contact = CPS::Contact.new(
|
24
|
+
:object => 'QD1234',
|
25
|
+
:firstname => 'Peter',
|
26
|
+
:lastname => 'Pan',
|
27
|
+
:street => 'your-street',
|
28
|
+
:postal => '60000',
|
29
|
+
:city => 'Frankfurt am Main',
|
30
|
+
:state => 'Hessen',
|
31
|
+
:iso_country => 'DE',
|
32
|
+
:phone => '+49 69471117',
|
33
|
+
:fax => '+49 69471118',
|
34
|
+
:email => 'peter.pan@example.com'
|
35
|
+
)
|
36
|
+
|
37
|
+
server.query(client_contact.create)</code></pre>
|
38
|
+
|
39
|
+
Create your company contact handle:
|
40
|
+
|
41
|
+
<pre><code>company_contact = CPS::Contact.new(
|
42
|
+
:object => 'QD0001',
|
43
|
+
:firstname => 'Paulär',
|
44
|
+
:lastname => 'Panter',
|
45
|
+
:street => 'my-street',
|
46
|
+
:postal => '60000',
|
47
|
+
:city => 'Frankfurt am Main',
|
48
|
+
:state => 'Hessen',
|
49
|
+
:iso_country => 'DE',
|
50
|
+
:phone => '+49 69471123',
|
51
|
+
:fax => '+49 69471124',
|
52
|
+
:email => 'paulaer.panter@example.com'
|
53
|
+
)
|
54
|
+
|
55
|
+
server.query(company_contact.create)</code></pre>
|
56
|
+
|
57
|
+
Register the domain:
|
58
|
+
|
59
|
+
<pre><code>domain = CPS::Domain.new(
|
60
|
+
:domain => 'example-domain-123456.com',
|
61
|
+
:adminc => 'QD1234',
|
62
|
+
:ownerc => 'QD1234',
|
63
|
+
:techc => 'QD0001',
|
64
|
+
:billc => 'QD0001',
|
65
|
+
:ns1 => 'my1.dns.com',
|
66
|
+
:ns2 => 'my2.dns.com'
|
67
|
+
)
|
68
|
+
|
69
|
+
server.query(domain.create)</code></pre>
|
70
|
+
|
71
|
+
h2. Todo
|
72
|
+
|
73
|
+
- Add validation and error handling
|
74
|
+
- Add modify and transfer for domains
|
75
|
+
|
76
|
+
(c) 2011 jfqd [at] blun.org
|
data/cps-client.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "cps-client/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "cps-client"
|
7
|
+
s.version = CPS::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["jfqd"]
|
10
|
+
s.email = ["jfqd@blun.org"]
|
11
|
+
s.homepage = "https://github.com/jfqd/cps-client"
|
12
|
+
s.summary = %q{ruby api for the arp-client of cps-datensysteme.de}
|
13
|
+
s.description = %q{ruby api for the arp-client of cps-datensysteme.de}
|
14
|
+
|
15
|
+
s.add_dependency('always_verify_ssl_certificates', '>= 0.2.0')
|
16
|
+
|
17
|
+
s.rubyforge_project = "cps-client"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
end
|
data/lib/core_ext.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'iconv'
|
2
|
+
|
3
|
+
class String
|
4
|
+
|
5
|
+
CONVERTION_TABLE = {
|
6
|
+
'Ç' => 'C',
|
7
|
+
'ç' => 'c',
|
8
|
+
'[ûúù]' => 'u',
|
9
|
+
'[éêëè]' => 'e',
|
10
|
+
'[âàåá]' => 'a',
|
11
|
+
'[ïîìí]' => 'i',
|
12
|
+
'[Å]' => 'A',
|
13
|
+
'É' => 'E',
|
14
|
+
'æ' => 'ae',
|
15
|
+
'Æ' => 'Ae',
|
16
|
+
'[ôòó]' => 'o',
|
17
|
+
'Ä' => 'Ae',
|
18
|
+
'Ö' => 'Oe',
|
19
|
+
'Ü' => 'Ue',
|
20
|
+
'ä' => 'ae',
|
21
|
+
'ö' => 'oe',
|
22
|
+
'ü' => 'ue',
|
23
|
+
'ß' => 'ss',
|
24
|
+
'ÿ' => 'y',
|
25
|
+
'Ö' => 'O',
|
26
|
+
'ñ' => 'n',
|
27
|
+
'Ñ' => 'N'
|
28
|
+
}
|
29
|
+
|
30
|
+
def i18n_safe
|
31
|
+
s = self
|
32
|
+
return "" unless s
|
33
|
+
CONVERTION_TABLE.each do |key, value|
|
34
|
+
s = s.gsub(key, value)
|
35
|
+
end
|
36
|
+
return s
|
37
|
+
end
|
38
|
+
|
39
|
+
def convert_to_iso_8859_1
|
40
|
+
begin
|
41
|
+
i = Iconv.new('ISO-8859-1', 'UTF-8') # Iconv.new(to, from)
|
42
|
+
f = i.iconv(self.i18n_safe)
|
43
|
+
i.close
|
44
|
+
return f
|
45
|
+
rescue
|
46
|
+
i.close
|
47
|
+
self
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def blank?
|
52
|
+
self.nil? || self == ""
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/lib/cps-client.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'net/https'
|
2
|
+
require 'uri'
|
3
|
+
require 'rexml/document'
|
4
|
+
require 'always_verify_ssl_certificates'
|
5
|
+
|
6
|
+
module CPS
|
7
|
+
|
8
|
+
class Client
|
9
|
+
include REXML
|
10
|
+
|
11
|
+
# The Integer maximum time to run a cps query, expressed in seconds.
|
12
|
+
DEFAULT_TIMEOUT = 10
|
13
|
+
|
14
|
+
# Initializes a new <tt>Cps::Client</tt> with <tt>options</tt>.
|
15
|
+
#
|
16
|
+
# new(options = {})
|
17
|
+
#
|
18
|
+
# ==== Parameters
|
19
|
+
#
|
20
|
+
# options:: Hash of options:
|
21
|
+
# :timeout - The Integer script timeout, expressed in seconds (default: DEFAULT_TIMEOUT).
|
22
|
+
# :cid - Customer number
|
23
|
+
# :uid - User
|
24
|
+
# :pwd - Password
|
25
|
+
#
|
26
|
+
# If <tt>block</tt> is given, yields <tt>self</tt>.
|
27
|
+
#
|
28
|
+
# ==== Returns
|
29
|
+
#
|
30
|
+
# Cps::Client:: The client instance.
|
31
|
+
#
|
32
|
+
# ==== Examples
|
33
|
+
#
|
34
|
+
# client = Cps::Client.new do |c|
|
35
|
+
# c.timeout = nil
|
36
|
+
# end
|
37
|
+
# client.query("google.com")
|
38
|
+
#
|
39
|
+
def initialize(options = {})
|
40
|
+
@cid = options[:cid]
|
41
|
+
@uid = options[:uid]
|
42
|
+
@pwd = options[:pwd]
|
43
|
+
|
44
|
+
@production = options[:production] == false ? false : true
|
45
|
+
|
46
|
+
@timeout = options[:timeout] || DEFAULT_TIMEOUT
|
47
|
+
@request = ""
|
48
|
+
@response = ""
|
49
|
+
@data = ""
|
50
|
+
end
|
51
|
+
|
52
|
+
def query( object )
|
53
|
+
# AlwaysVerifySSLCertificates.ca_file = CA_FILE
|
54
|
+
url = @production == true ? URL : URL_DEV
|
55
|
+
uri = URI.parse("#{PROTO}://#{url}:#{PORT}")
|
56
|
+
@request = self.template(object)
|
57
|
+
|
58
|
+
begin
|
59
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
60
|
+
http.use_ssl = true if PROTO == 'https'
|
61
|
+
req = Net::HTTP::Post.new( PATH )
|
62
|
+
@response, @data = http.request(req, @request)
|
63
|
+
self.result_code == '1000' ? true : false
|
64
|
+
rescue
|
65
|
+
false
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def data
|
71
|
+
@data.to_s
|
72
|
+
end
|
73
|
+
|
74
|
+
def request
|
75
|
+
@request.to_s
|
76
|
+
end
|
77
|
+
|
78
|
+
def entity(path)
|
79
|
+
d = Document.new(@data)
|
80
|
+
d.root.elements[path].text rescue ""
|
81
|
+
end
|
82
|
+
|
83
|
+
def result_code
|
84
|
+
self.entity('/response/result/code')
|
85
|
+
end
|
86
|
+
|
87
|
+
def result_message
|
88
|
+
self.entity('/response/result/message')
|
89
|
+
end
|
90
|
+
|
91
|
+
def template(xml)
|
92
|
+
@xml = xml
|
93
|
+
ErbHelper.build("base", self)
|
94
|
+
end
|
95
|
+
|
96
|
+
def get_binding
|
97
|
+
binding
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
module CPS
|
4
|
+
|
5
|
+
class Contact
|
6
|
+
attr_reader :object
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
@object = options[:object].upcase
|
10
|
+
@firstname = options[:firstname]
|
11
|
+
@lastname = options[:lastname]
|
12
|
+
@orgname = options[:orgname].nil? || options[:orgname] == "" ? "-" : options[:orgname]
|
13
|
+
@street = options[:street]
|
14
|
+
@postal = options[:postal]
|
15
|
+
@city = options[:city]
|
16
|
+
@state = options[:state]
|
17
|
+
@iso_country = options[:iso_country]
|
18
|
+
@phone = options[:phone]
|
19
|
+
@fax = options[:fax]
|
20
|
+
@email = options[:email]
|
21
|
+
@privacy_rule = options[:privacy_rule] || ""
|
22
|
+
@contact_type = @orgname == '-' ? "person" : "organisation"
|
23
|
+
end
|
24
|
+
|
25
|
+
def info
|
26
|
+
ErbHelper.build("contact_info", self)
|
27
|
+
end
|
28
|
+
|
29
|
+
def create
|
30
|
+
ErbHelper.build("contact_create", self)
|
31
|
+
end
|
32
|
+
|
33
|
+
def delete
|
34
|
+
ErbHelper.build("contact_delete", self)
|
35
|
+
end
|
36
|
+
|
37
|
+
def domain
|
38
|
+
ErbHelper.build("contact_domain", self)
|
39
|
+
end
|
40
|
+
|
41
|
+
# this is only a helper method to access the objects binding method
|
42
|
+
def get_binding
|
43
|
+
binding
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module CPS
|
2
|
+
|
3
|
+
class Domain
|
4
|
+
attr_reader :domain
|
5
|
+
|
6
|
+
def initialize(options = {})
|
7
|
+
@domain = options[:domain]
|
8
|
+
@adminc = options[:adminc]
|
9
|
+
@techc = options[:techc]
|
10
|
+
@billc = options[:billc]
|
11
|
+
@ownerc = options[:ownerc]
|
12
|
+
@ns1 = options[:ns1]
|
13
|
+
@ns2 = options[:ns2]
|
14
|
+
end
|
15
|
+
|
16
|
+
def create
|
17
|
+
ErbHelper.build("domain_create", self)
|
18
|
+
end
|
19
|
+
|
20
|
+
def info
|
21
|
+
ErbHelper.build("domain_info", self)
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete
|
25
|
+
ErbHelper.build("domain_delete", self)
|
26
|
+
end
|
27
|
+
|
28
|
+
# this is only a helper method to access the objects binding method
|
29
|
+
def get_binding
|
30
|
+
binding
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,267 @@
|
|
1
|
+
module CPS
|
2
|
+
|
3
|
+
class Errors
|
4
|
+
ERRORS = {
|
5
|
+
'1000' => 'Action was successfully completed.',
|
6
|
+
'1001' => 'Action was successfully transfered to the sub system. A status update will follow soon.',
|
7
|
+
'1002' => 'Change of status received - a further status update will follow soon.',
|
8
|
+
'1003' => 'Transaction was started.',
|
9
|
+
'5000' => 'The primary DNS answered with an error.',
|
10
|
+
'5001' => 'The secondary DNS answered with an error.',
|
11
|
+
'5002' => 'Delivery of SMS failed.',
|
12
|
+
'5003' => 'The SSL order could not be started.',
|
13
|
+
'5004' => 'Registration of domain failed.',
|
14
|
+
'5005' => 'Update of domain failed.',
|
15
|
+
'5006' => 'Deletion of domain failed.',
|
16
|
+
'5007' => 'Status update of Domain failed.',
|
17
|
+
'5008' => 'Transfer of domain could not be carried out.',
|
18
|
+
'5009' => 'Transfer of domain failed.',
|
19
|
+
'5010' => 'Restoration of domain failed.',
|
20
|
+
'5011' => 'A handle could not be created by the NIC. The action failed.',
|
21
|
+
'5012' => 'A transfer-out-request was refused (NACK) because the domain is in TRANSFER-LOCK.',
|
22
|
+
'5013' => 'The migration of the domain/zone failed.',
|
23
|
+
'5014' => 'The SSL order was canceled.',
|
24
|
+
'5015' => 'Return of payment responsibility (changeover) failed.',
|
25
|
+
'5016' => 'A transfer-out-request was denied (NACK) because the assignee has refused it (CLIENT-LOCK).',
|
26
|
+
'5017' => 'Registration of hostname failed.',
|
27
|
+
'5018' => 'Update of hostname failed.',
|
28
|
+
'5019' => 'A transfer-out-request was cancelled (CANCEL).',
|
29
|
+
'6000' => 'IP is already in use.',
|
30
|
+
'6001' => 'Found an active transaction for the demanded object.',
|
31
|
+
'6002' => 'No active transaction found.',
|
32
|
+
'6003' => 'No pricing information or active duty found.',
|
33
|
+
'6004' => 'No active fees (onhold) found.',
|
34
|
+
'6005' => 'Transactions dismatch.',
|
35
|
+
'6006' => 'IP is not available.',
|
36
|
+
'6007' => 'Demanded User.',
|
37
|
+
'6008' => 'Remote command failed.',
|
38
|
+
'6009' => 'The execution of the interleaved order CREATE USER caused an error.',
|
39
|
+
'6010' => 'Demanded Contact does not exist or the active user does not own the rights to access the handle.',
|
40
|
+
'6011' => 'The execution of the interleaved order CREATE CONTACT caused an error.',
|
41
|
+
'6012' => 'The contact handle already exists.',
|
42
|
+
'6013' => 'The contact handle is in use and cannot be deleted.',
|
43
|
+
'6014' => 'The user already exists.',
|
44
|
+
'6015' => 'Notification notice-by-recall requires an URL.',
|
45
|
+
'6016' => 'Notification notice-by-email requires a target email address.',
|
46
|
+
'6017' => 'The user is in use and cannot be deleted.',
|
47
|
+
'6018' => 'The application data dismatches the registrary conditions of the responsible registry.',
|
48
|
+
'6019' => 'The option chosen for this application is invalid.',
|
49
|
+
'6020' => 'The key words are missing in the meta tags of the desired homepage.',
|
50
|
+
'6021' => 'The order could not be transfered.',
|
51
|
+
'6022' => 'You reached or overstepped your credit limit.',
|
52
|
+
'6023' => 'Sending SMS failed.',
|
53
|
+
'6024' => 'This zone already exists.',
|
54
|
+
'6025' => 'Zone limit reached.',
|
55
|
+
'6026' => 'The zone does not exist, the user has no right to access the zone or a wrong product type (attribute) was chosen.',
|
56
|
+
'6027' => 'The ACE string seems to be invalid.',
|
57
|
+
'6028' => 'The CSR seems to be wrong and could not be parsed.',
|
58
|
+
'6029' => 'The common name does not seem to be a correct domain name.',
|
59
|
+
'6030' => 'A server for matching data could not be reached (technical or authentication error).',
|
60
|
+
'6031' => 'Common name from CSR does not fit the domain in the objectfield.',
|
61
|
+
'6032' => 'Wrong certificate type chosen - does not fit to CSR/CN or SAN.',
|
62
|
+
'6033' => 'The approver emailaddress does not seem to be usable by CA.',
|
63
|
+
'6034' => 'The domain exists and is already managed by the registrar.',
|
64
|
+
'6035' => 'The domain already exists.',
|
65
|
+
'6036' => 'The domain is not administrated by the demanding user or does not exist.',
|
66
|
+
'6037' => 'The domain is not be administrated by the registrar and does not exist.',
|
67
|
+
'6038' => 'The domain already exists in the demanding account.',
|
68
|
+
'6039' => 'The AUTH-INFO is invalid.',
|
69
|
+
'6040' => 'The domain does not exist.',
|
70
|
+
'6041' => 'The domain is not administrated by the user or is located in the "Restriction Period".',
|
71
|
+
'6042' => 'The host is already subscribed.',
|
72
|
+
'6043' => 'The hostname does not base on the root domain.',
|
73
|
+
'6044' => 'The host is not be administrated by the demanding user and does not exist.',
|
74
|
+
'6045' => 'The check of your nameserver configuration caused an error.',
|
75
|
+
'6046' => 'NSENTRY details are missing.',
|
76
|
+
'6047' => 'A LATEACK can only be executed together with an UN-LOCK.',
|
77
|
+
'6048' => 'The owner-C (values::ownerc) does not match the actual domain holder.',
|
78
|
+
'6049' => 'The data of owner-C (values::ownerc) or admin-C (values::adminc) dismatch the registrary conditions of the responsible registry.',
|
79
|
+
'6050' => 'No information found for demanded object.',
|
80
|
+
'6051' => 'The domain is not administrated by the user or is located in the "Expire Threshold Period" / "Auto Renew Period".',
|
81
|
+
'6052' => 'The transaction was denied by the assignee.',
|
82
|
+
'6053' => 'Starting authorisation of transaction failed.',
|
83
|
+
'6054' => 'Too many active connections to the sub-system.',
|
84
|
+
'6055' => 'The query results in too many data records.',
|
85
|
+
'6056' => 'The object\'s data could not be synchronized with the order cache.',
|
86
|
+
'6057' => 'Domain status prohibits this operation.',
|
87
|
+
'6058' => 'Hostname status prohibits this operation.',
|
88
|
+
'6059' => 'SSL Certificate status prohibits this operation.',
|
89
|
+
'6060' => 'Access to this domain is restricted.',
|
90
|
+
'6061' => 'The zone does not exist.',
|
91
|
+
'6062' => 'The zone already exists in the demanding account.',
|
92
|
+
'6063' => 'The data of the CSR do not meet the requirements of the CA.',
|
93
|
+
'7000' => 'The customer number ist invalid.',
|
94
|
+
'7001' => 'The username is invalid.',
|
95
|
+
'7002' => 'The password is invalid.',
|
96
|
+
'7003' => 'The object goup is invalid.',
|
97
|
+
'7004' => 'The reference number is invalid.',
|
98
|
+
'7005' => 'The chosen action is invalid.',
|
99
|
+
'7006' => 'The chosen attribute is invalid.',
|
100
|
+
'7007' => 'The insert IP is invalid.',
|
101
|
+
'7008' => 'The field request_action is invalid.',
|
102
|
+
'7009' => 'The field values::servicepwd is incorrect.',
|
103
|
+
'7010' => 'The field values::street is incorrect.',
|
104
|
+
'7011' => 'The field values::billc is incorrect.',
|
105
|
+
'7012' => 'The field values::techc is incorrect.',
|
106
|
+
'7013' => 'The field values::servicepwd is incorrect.',
|
107
|
+
'7014' => 'The field values::iso_country is incorrect.',
|
108
|
+
'7015' => 'The field values::lang is incorrect.',
|
109
|
+
'7016' => 'The field values::adminc is incorrect.',
|
110
|
+
'7017' => 'The field values::super_user is incorrect.',
|
111
|
+
'7018' => 'The field values::postal is incorrect.',
|
112
|
+
'7019' => 'The field values::city is incorrect.',
|
113
|
+
'7020' => 'The field first name of admin-c is invalid.',
|
114
|
+
'7021' => 'The field last name of admin-c is invalid.',
|
115
|
+
'7022' => 'The field first name of bill-c is invalid.',
|
116
|
+
'7023' => 'The field first name of tech-c is invalid.',
|
117
|
+
'7024' => 'The field last name of bill-c is invalid.',
|
118
|
+
'7025' => 'The field last name of tech-c is invalid.',
|
119
|
+
'7026' => 'The field values::user is invalid.',
|
120
|
+
'7027' => 'The time format of field values::begin is invalid.',
|
121
|
+
'7028' => 'The time format of field values::end is invalid.',
|
122
|
+
'7029' => 'The field values::firstname is incorrect.',
|
123
|
+
'7030' => 'The field values::lastname is incorrect.',
|
124
|
+
'7031' => 'The field values::orgname is incorrect.',
|
125
|
+
'7032' => 'The field values::street is incorrect.',
|
126
|
+
'7033' => 'The field values::postal is incorrect.',
|
127
|
+
'7034' => 'The field values::city is incorrect.',
|
128
|
+
'7035' => 'The field values::state is incorrect.',
|
129
|
+
'7036' => 'The field values::iso_country is incorrect.',
|
130
|
+
'7037' => 'The field values::phone is incorrect.',
|
131
|
+
'7038' => 'The field values::fax is incorrect.',
|
132
|
+
'7039' => 'The field values::email is incorrect.',
|
133
|
+
'7040' => 'The chosen user status is invalid.',
|
134
|
+
'7041' => 'The chosen password is invalid.',
|
135
|
+
'7042' => 'The chosen option for the notification notice-by-poll is invalid.',
|
136
|
+
'7043' => 'The chosen option for the notification notice-by-recall is invalid.',
|
137
|
+
'7044' => 'The chosen option for the notification notice-by-email is invalid.',
|
138
|
+
'7045' => 'The chosen recall URL is invalid.',
|
139
|
+
'7046' => 'The sender email address is invalid.',
|
140
|
+
'7047' => 'The receiver email address is invalid.',
|
141
|
+
'7048' => 'The field values::object is incorrect.',
|
142
|
+
'7049' => 'The user rights for the range account are invalid.',
|
143
|
+
'7050' => 'The user rights for the range user are invalid.',
|
144
|
+
'7051' => 'The user rights for the range contact are invalid.',
|
145
|
+
'7052' => 'The user rights for the range domain are invalid.',
|
146
|
+
'7053' => 'The user rights for the range DNS are invalid.',
|
147
|
+
'7054' => 'The user rights for the range SSL-Cert are invalid.',
|
148
|
+
'7055' => 'The user rights for the range SMS are invalid.',
|
149
|
+
'7056' => 'The user rights for the range submit are invalid.',
|
150
|
+
'7057' => 'The chosen contact is invalid.',
|
151
|
+
'7058' => 'Der user name in the object field is invalid.',
|
152
|
+
'7059' => 'The chosen domain name is invalid.',
|
153
|
+
'7060' => 'The field values::group is invalid.',
|
154
|
+
'7061' => 'The field values::account_invoice_num is invalid.',
|
155
|
+
'7062' => 'The field values::view is invalid.',
|
156
|
+
'7063' => 'The target number in the object field is invalid.',
|
157
|
+
'7064' => 'The field enable_flash can only be yes or no.',
|
158
|
+
'7065' => 'The field sender_id can only consist of 11 alpha numeric characters or 16 numeric characters.',
|
159
|
+
'7066' => 'The field message_text is incorrect.',
|
160
|
+
'7067' => 'One of the NS record fiels is invalid.',
|
161
|
+
'7068' => 'The domain in the object field is invalid.',
|
162
|
+
'7069' => 'One of the MX record fields is invalid.',
|
163
|
+
'7070' => 'One of the TXT records is invalid.',
|
164
|
+
'7071' => 'One of the CNAME record fields is invalid.',
|
165
|
+
'7072' => 'One of the A record fields is incorrect.',
|
166
|
+
'7073' => 'The master IP is invalid.',
|
167
|
+
'7074' => 'The field values::domain is invalid.',
|
168
|
+
'7075' => 'The field vaules::native_domain is invalid.',
|
169
|
+
'7076' => 'The CSR is incorrect.',
|
170
|
+
'7077' => 'The approver email is invalid.',
|
171
|
+
'7078' => 'The certificate type is invalid.',
|
172
|
+
'7079' => 'The field values::common_name is invalid.',
|
173
|
+
'7080' => 'The field values::status is invalid.',
|
174
|
+
'7081' => 'The field values::expire_end is invalid.',
|
175
|
+
'7082' => 'The field values::expire_begin is invalid.',
|
176
|
+
'7083' => 'The field values::sslcert_type is invalid.',
|
177
|
+
'7084' => 'The field values::object_id is invalid.',
|
178
|
+
'7085' => 'The desired action / the demanded product are not available.',
|
179
|
+
'7086' => 'One of the DNS host names is invalid.',
|
180
|
+
'7087' => 'One of the DNS host IPs is invalid.',
|
181
|
+
'7088' => 'The field values::ownerc is incorrect.',
|
182
|
+
'7089' => 'The field values::ownerc::lastname is incorrect.',
|
183
|
+
'7090' => 'The field values::ownerc::firstname is incorrect.',
|
184
|
+
'7091' => 'The field values::active is incorrect.',
|
185
|
+
'7092' => 'The field values::auth_info is incorrect.',
|
186
|
+
'7093' => 'The host name in the Object field is invalid.',
|
187
|
+
'7094' => 'The root domain (values::parent_domain) is invalid.',
|
188
|
+
'7095' => 'The IP (values::ip) is invalid.',
|
189
|
+
'7096' => 'The field values::auto_renew is invalid.',
|
190
|
+
'7097' => 'The field values::transfer_lock is invalid.',
|
191
|
+
'7098' => 'The field values::hostname is invalid.',
|
192
|
+
'7099' => 'One of the NSENTRY fields is invalid.',
|
193
|
+
'7100' => 'The option values::denic_lateack is incorrect.',
|
194
|
+
'7101' => 'The AUTH-CODE is invalid.',
|
195
|
+
'7102' => 'Error in the additional declaration REG-number.',
|
196
|
+
'7103' => 'Error the additional declaration REG-type.',
|
197
|
+
'7104' => 'Error the additional declaration REG-date.',
|
198
|
+
'7105' => 'Error the additional declaration REG-location.',
|
199
|
+
'7106' => 'Error the additional declaration REG-AUTH.',
|
200
|
+
'7107' => 'The field values::attribute is invalid.',
|
201
|
+
'7108' => 'The field values::action is invalid.',
|
202
|
+
'7109' => 'The structure of your XML order is incorrect.',
|
203
|
+
'7110' => 'The field values::privacy_rule is incorrect.',
|
204
|
+
'7111' => 'The field values::publicc is incorrect.',
|
205
|
+
'7112' => 'The field last name of public-c is invalid.',
|
206
|
+
'7113' => 'The field first name of public-c is invalid.',
|
207
|
+
'7114' => 'The field values::contact_type is incorrect.',
|
208
|
+
'7115' => 'The chosen report source (object group) is incorrect.',
|
209
|
+
'7116' => 'The output format is invalid.',
|
210
|
+
'7117' => 'One of the AAAA record fields is incorrect.',
|
211
|
+
'7118' => 'The field values::delegation is invalid.',
|
212
|
+
'7119' => 'The field values::ttl is invalid.',
|
213
|
+
'8000' => 'This IP is not authorised for accessing our system.',
|
214
|
+
'8001' => 'The IP could not be auhorised by the used account.',
|
215
|
+
'8002' => 'The account could not be found.',
|
216
|
+
'8003' => 'The user could not be found.',
|
217
|
+
'8004' => 'Authentication failed. Please check the password.',
|
218
|
+
'8005' => 'Account is inactive.',
|
219
|
+
'8006' => 'User is inactive.',
|
220
|
+
'8007' => 'User privileges forbid this action.',
|
221
|
+
'8008' => 'Chosen module or duty is under maintenance.',
|
222
|
+
'8009' => 'Too many active connections for this resource.',
|
223
|
+
'8010' => 'User temporarily blocked.',
|
224
|
+
'9000' => 'System temporary not available - System locked.',
|
225
|
+
'9001' => 'Critical error by ROLLBACK to DBMS while writing transaction.',
|
226
|
+
'9002' => 'Critical error by ROLLBACK after invalid COMMIT to DBMS after a transaction.',
|
227
|
+
'9003' => 'RegEx table access violation.',
|
228
|
+
'9004' => 'IP table access violation.',
|
229
|
+
'9005' => 'Account table access violation.',
|
230
|
+
'9006' => 'User table access violation.',
|
231
|
+
'9007' => 'Critical Error by ROLLBACK to DBMS while transaction.',
|
232
|
+
'9008' => 'Module table access violation.',
|
233
|
+
'9009' => 'No active module for machining available or rather error while loading module.',
|
234
|
+
'9010' => 'Transaction table access violation.',
|
235
|
+
'9011' => 'Pricing table access violation.',
|
236
|
+
'9012' => 'Critical Error while reading the auto increment value.',
|
237
|
+
'9013' => 'Debug breakpoint. Please try again later.',
|
238
|
+
'9014' => 'SQL writing transaction failed.',
|
239
|
+
'9015' => 'COMMIT failed. Reverse execution follows.',
|
240
|
+
'9016' => 'Error on SQL prepare order.',
|
241
|
+
'9017' => 'Active bill table access violation.',
|
242
|
+
'9018' => 'Contact table access violation.',
|
243
|
+
'9019' => 'Access table access violation.',
|
244
|
+
'9020' => 'Bill log table access violation.',
|
245
|
+
'9021' => 'Account balance table access violation.',
|
246
|
+
'9022' => 'Account billing details table access violation.',
|
247
|
+
'9023' => 'Service table access violation',
|
248
|
+
'9024' => 'Active transaction table access violation.',
|
249
|
+
'9025' => 'DNS zones table access violation.',
|
250
|
+
'9026' => 'Service table access violation.',
|
251
|
+
'9027' => 'SSL-Certs table access violation.',
|
252
|
+
'9028' => 'Domain names table access violation.',
|
253
|
+
'9029' => 'Host name table access violation.',
|
254
|
+
'9030' => 'Domain additional Value access violation.',
|
255
|
+
'9031' => 'Active-Transactions-Approvals table access violation.',
|
256
|
+
'9032' => 'Active-Sessions table access violation.',
|
257
|
+
'9033' => 'Active-Transactions-Email-Crontab table access violation.',
|
258
|
+
'9034' => 'Footnotes access violation.',
|
259
|
+
'9035' => 'Object cache access violation.',
|
260
|
+
'9036' => 'Contact reference table access violation.',
|
261
|
+
'9037' => 'Restricted domains access violation.',
|
262
|
+
'9038' => 'Credit data access violation.',
|
263
|
+
'9039' => 'Order stack table access violation.',
|
264
|
+
'9040' => 'Exchange rates table access violation.'
|
265
|
+
}
|
266
|
+
end
|
267
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module CPS
|
2
|
+
|
3
|
+
NAME = "CPS-CLIENT"
|
4
|
+
GEM = "cps-client"
|
5
|
+
AUTHORS = ["jfqd <jfqd@blun.org>"]
|
6
|
+
|
7
|
+
module Version
|
8
|
+
MAJOR = 0
|
9
|
+
MINOR = 0
|
10
|
+
PATCH = 2
|
11
|
+
BUILD = nil
|
12
|
+
|
13
|
+
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join(".")
|
14
|
+
end
|
15
|
+
|
16
|
+
VERSION = CPS::Version::STRING
|
17
|
+
end
|
data/lib/erb/base.erb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<request>
|
3
|
+
<auth>
|
4
|
+
<cid><%= @cid.convert_to_iso_8859_1 %></cid>
|
5
|
+
<user><%= @uid.convert_to_iso_8859_1 %></user>
|
6
|
+
<pwd><%= @pwd.convert_to_iso_8859_1 %></pwd>
|
7
|
+
</auth>
|
8
|
+
<transaction>
|
9
|
+
<%= @xml %>
|
10
|
+
</transaction>
|
11
|
+
</request>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<group>contact</group>
|
2
|
+
<action>create</action>
|
3
|
+
<attribute>contact</attribute>
|
4
|
+
<object><%= @object.convert_to_iso_8859_1 %></object>
|
5
|
+
<values>
|
6
|
+
<firstname><%= @firstname.convert_to_iso_8859_1 %></firstname>
|
7
|
+
<lastname><%= @lastname.convert_to_iso_8859_1 %></lastname>
|
8
|
+
<orgname><%= @orgname.convert_to_iso_8859_1 %></orgname>
|
9
|
+
<street><%= @street.convert_to_iso_8859_1 %></street>
|
10
|
+
<postal><%= @postal.convert_to_iso_8859_1 %></postal>
|
11
|
+
<city><%= @city.convert_to_iso_8859_1 %></city>
|
12
|
+
<state><%= @state.convert_to_iso_8859_1 %></state>
|
13
|
+
<iso_country><%= @iso_country.convert_to_iso_8859_1 %></iso_country>
|
14
|
+
<phone><%= @phone.convert_to_iso_8859_1 %></phone>
|
15
|
+
<fax><%= @fax.convert_to_iso_8859_1 %></fax>
|
16
|
+
<email><%= @email.convert_to_iso_8859_1 %></email>
|
17
|
+
<privacy_rule><%= @privacy_rule.convert_to_iso_8859_1 %></privacy_rule>
|
18
|
+
<contact_type><%= @contact_type.convert_to_iso_8859_1 %></contact_type>
|
19
|
+
</values>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<firstname><%= @firstname.convert_to_iso_8859_1 %></firstname>
|
2
|
+
<lastname><%= @lastname.convert_to_iso_8859_1 %></lastname>
|
3
|
+
<orgname><%= @orgname.convert_to_iso_8859_1 %></orgname>
|
4
|
+
<street><%= @street.convert_to_iso_8859_1 %></street>
|
5
|
+
<postal><%= @postal.convert_to_iso_8859_1 %></postal>
|
6
|
+
<city><%= @city.convert_to_iso_8859_1 %></city>
|
7
|
+
<state><%= @state.convert_to_iso_8859_1 %></state>
|
8
|
+
<iso_country><%= @iso_country.convert_to_iso_8859_1 %></iso_country>
|
9
|
+
<phone><%= @phone.convert_to_iso_8859_1 %></phone>
|
10
|
+
<fax><%= @fax.convert_to_iso_8859_1 %></fax>
|
11
|
+
<email><%= @email.convert_to_iso_8859_1 %></email>
|
12
|
+
<privacy_rule><%= @privacy_rule.convert_to_iso_8859_1 %></privacy_rule>
|
13
|
+
<contact_type><%= @contact_type.convert_to_iso_8859_1 %></contact_type>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<group>domain</group>
|
2
|
+
<action>create</action>
|
3
|
+
<attribute>domain</attribute>
|
4
|
+
<object><%= @domain.convert_to_iso_8859_1 %></object>
|
5
|
+
<values>
|
6
|
+
<adminc><%= @adminc.convert_to_iso_8859_1 %></adminc>
|
7
|
+
<techc><%= @techc.convert_to_iso_8859_1 %></techc>
|
8
|
+
<billc><%= @billc.convert_to_iso_8859_1 %></billc>
|
9
|
+
<ownerc><%= @ownerc.convert_to_iso_8859_1 %></ownerc>
|
10
|
+
<dns>
|
11
|
+
<hostname><%= @ns1.convert_to_iso_8859_1 %></hostname>
|
12
|
+
</dns>
|
13
|
+
<dns>
|
14
|
+
<hostname><%= @ns2.convert_to_iso_8859_1 %></hostname>
|
15
|
+
</dns>
|
16
|
+
</values>
|
data/test.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/lib/cps-client.rb'
|
4
|
+
|
5
|
+
server = CPS::Client.new(
|
6
|
+
:cid => 'your-cid',
|
7
|
+
:uid => 'your-uid',
|
8
|
+
:pwd => 'your-pwd',
|
9
|
+
:production => false
|
10
|
+
)
|
11
|
+
|
12
|
+
client_contact = CPS::Contact.new(
|
13
|
+
:object => 'qd1234',
|
14
|
+
:firstname => 'Peter',
|
15
|
+
:lastname => 'Pan',
|
16
|
+
:street => 'Brunnengasse 34',
|
17
|
+
:postal => '60127',
|
18
|
+
:city => 'Frankfurt am Main',
|
19
|
+
:state => 'Hessen',
|
20
|
+
:iso_country => 'DE',
|
21
|
+
:phone => '+49 694711',
|
22
|
+
:fax => '+49 694711',
|
23
|
+
:email => 'peter.pan@example.com'
|
24
|
+
)
|
25
|
+
|
26
|
+
company_contact = CPS::Contact.new(
|
27
|
+
:object => 'qd0001',
|
28
|
+
:firstname => 'Paulär',
|
29
|
+
:lastname => 'Panter',
|
30
|
+
:street => 'Brunnengasse 1',
|
31
|
+
:postal => '60127',
|
32
|
+
:city => 'Frankfurt am Main',
|
33
|
+
:state => 'Hessen',
|
34
|
+
:iso_country => 'DE',
|
35
|
+
:phone => '+49 69471123',
|
36
|
+
:fax => '+49 69471124',
|
37
|
+
:email => 'paulaer.panter@example.com'
|
38
|
+
)
|
39
|
+
|
40
|
+
domain = CPS::Domain.new(
|
41
|
+
:domain => 'example-domain-123456.com',
|
42
|
+
:adminc => 'QD1234',
|
43
|
+
:techc => 'QD0001',
|
44
|
+
:billc => 'QD0001',
|
45
|
+
:ownerc => 'QD1234',
|
46
|
+
:ns1 => 'my1.dns.com',
|
47
|
+
:ns2 => 'my2.dns.com'
|
48
|
+
)
|
49
|
+
|
50
|
+
unless server.query(client_contact.info) # return true if contact handle exists
|
51
|
+
# Create client contact handle
|
52
|
+
if server.query(client_contact.create)
|
53
|
+
puts "Contact created: #{server.result_code}: #{server.result_message}"
|
54
|
+
else
|
55
|
+
puts "Error: #{server.data}"
|
56
|
+
puts "#{server.result_code}: #{server.result_message} #{server.request}"
|
57
|
+
exit 1
|
58
|
+
end
|
59
|
+
else
|
60
|
+
puts "Client contact handle exists: #{client_contact.object}"
|
61
|
+
end
|
62
|
+
|
63
|
+
unless server.query(company_contact.info) # return true if contact handle exists
|
64
|
+
# Create company contact handle
|
65
|
+
if server.query(company_contact.create)
|
66
|
+
puts "Contact created: #{server.result_code}: #{server.result_message}"
|
67
|
+
else
|
68
|
+
puts "Error: #{server.data}"
|
69
|
+
puts "#{server.result_code}: #{server.result_message} #{server.request}"
|
70
|
+
exit 1
|
71
|
+
end
|
72
|
+
else
|
73
|
+
puts "Company contact handle exists: #{company_contact.object}"
|
74
|
+
end
|
75
|
+
|
76
|
+
# if server.query(client_contact.info)
|
77
|
+
# puts "Contact info: #{server.data}"
|
78
|
+
# puts "#{server.result_code}: #{server.result_message}"
|
79
|
+
# else
|
80
|
+
# puts "Error: #{server.data}"
|
81
|
+
# puts "#{server.result_code}: #{server.result_message} #{server.request}"
|
82
|
+
# exit 1
|
83
|
+
# end
|
84
|
+
|
85
|
+
# create domain
|
86
|
+
unless server.query(domain.info) # return true if domain is registered
|
87
|
+
if server.query(domain.create)
|
88
|
+
puts "Domain created: #{server.result_code}: #{server.result_message}"
|
89
|
+
else
|
90
|
+
puts "Error: #{server.data}"
|
91
|
+
puts "#{server.result_code}: #{server.result_message} #{server.request}"
|
92
|
+
exit 1
|
93
|
+
end
|
94
|
+
else
|
95
|
+
puts "Domain exists: #{domain.domain}"
|
96
|
+
end
|
97
|
+
|
98
|
+
# if server.query(domain.info)
|
99
|
+
# puts "Domain info: #{server.data}"
|
100
|
+
# puts "#{server.result_code}: #{server.result_message}"
|
101
|
+
# else
|
102
|
+
# puts "Error: #{server.data}"
|
103
|
+
# puts "#{server.result_code}: #{server.result_message} #{server.request}"
|
104
|
+
# exit 1
|
105
|
+
# end
|
106
|
+
|
107
|
+
if server.query(domain.delete)
|
108
|
+
puts "Domain delete: #{server.result_code}: #{server.result_message}"
|
109
|
+
else
|
110
|
+
puts "Error: #{server.data}"
|
111
|
+
puts "#{server.result_code}: #{server.result_message} #{server.request}"
|
112
|
+
exit 1
|
113
|
+
end
|
114
|
+
|
115
|
+
if server.query(client_contact.delete)
|
116
|
+
puts "Contact deleted: #{server.result_code}: #{server.result_message}"
|
117
|
+
else
|
118
|
+
puts "Error: #{server.data}"
|
119
|
+
puts "#{server.result_code}: #{server.result_message}"
|
120
|
+
exit 1
|
121
|
+
end
|
122
|
+
|
123
|
+
if server.query(company_contact.delete)
|
124
|
+
puts "Contact deleted: #{server.result_code}: #{server.result_message}"
|
125
|
+
else
|
126
|
+
puts "Error: #{server.data}"
|
127
|
+
puts "#{server.result_code}: #{server.result_message}"
|
128
|
+
exit 1
|
129
|
+
end
|
130
|
+
|
131
|
+
exit 0
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cps-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- jfqd
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-01-05 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: always_verify_ssl_certificates
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 23
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 2
|
33
|
+
- 0
|
34
|
+
version: 0.2.0
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
description: ruby api for the arp-client of cps-datensysteme.de
|
38
|
+
email:
|
39
|
+
- jfqd@blun.org
|
40
|
+
executables: []
|
41
|
+
|
42
|
+
extensions: []
|
43
|
+
|
44
|
+
extra_rdoc_files: []
|
45
|
+
|
46
|
+
files:
|
47
|
+
- .gitignore
|
48
|
+
- Gemfile
|
49
|
+
- Gemfile.lock
|
50
|
+
- Rakefile
|
51
|
+
- Readme.textile
|
52
|
+
- cps-client.gemspec
|
53
|
+
- lib/core_ext.rb
|
54
|
+
- lib/cps-client.rb
|
55
|
+
- lib/cps-client/client.rb
|
56
|
+
- lib/cps-client/config.rb
|
57
|
+
- lib/cps-client/contact.rb
|
58
|
+
- lib/cps-client/domain.rb
|
59
|
+
- lib/cps-client/erb_helper.rb
|
60
|
+
- lib/cps-client/errors.rb
|
61
|
+
- lib/cps-client/version.rb
|
62
|
+
- lib/erb/base.erb
|
63
|
+
- lib/erb/contact_create.erb
|
64
|
+
- lib/erb/contact_delete.erb
|
65
|
+
- lib/erb/contact_domain.erb
|
66
|
+
- lib/erb/contact_info.erb
|
67
|
+
- lib/erb/domain_create.erb
|
68
|
+
- lib/erb/domain_delete.erb
|
69
|
+
- lib/erb/domain_info.erb
|
70
|
+
- test.rb
|
71
|
+
has_rdoc: true
|
72
|
+
homepage: https://github.com/jfqd/cps-client
|
73
|
+
licenses: []
|
74
|
+
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 3
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
98
|
+
requirements: []
|
99
|
+
|
100
|
+
rubyforge_project: cps-client
|
101
|
+
rubygems_version: 1.3.7
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: ruby api for the arp-client of cps-datensysteme.de
|
105
|
+
test_files: []
|
106
|
+
|