globessl 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +5 -0
- data/LICENSE +19 -0
- data/README.md +383 -0
- data/globessl.gemspec +18 -0
- data/lib/globessl.rb +45 -0
- data/lib/globessl/account_balance.rb +35 -0
- data/lib/globessl/account_details.rb +57 -0
- data/lib/globessl/base.rb +13 -0
- data/lib/globessl/certificate_signing_request.rb +129 -0
- data/lib/globessl/client.rb +42 -0
- data/lib/globessl/configuration.rb +13 -0
- data/lib/globessl/country_codes.rb +257 -0
- data/lib/globessl/domain_control_validation.rb +121 -0
- data/lib/globessl/domain_emails.rb +38 -0
- data/lib/globessl/order_ssl_certificate.rb +298 -0
- data/lib/globessl/product.rb +51 -0
- data/lib/globessl/products.rb +46 -0
- data/lib/globessl/ssl_certificate.rb +250 -0
- data/lib/globessl/version.rb +10 -0
- data/lib/globessl/webserver.rb +6 -0
- data/lib/globessl/webservers.rb +32 -0
- metadata +82 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
module GlobeSSL
|
2
|
+
class Product < Base
|
3
|
+
attribute :errors, Array[String]
|
4
|
+
attribute :id, Integer
|
5
|
+
attribute :name, String
|
6
|
+
attribute :validation, String
|
7
|
+
attribute :wildcard, Boolean
|
8
|
+
attribute :multi_domain, Boolean
|
9
|
+
attribute :min_domains, Integer
|
10
|
+
attribute :max_domains, Integer
|
11
|
+
attribute :brand, String
|
12
|
+
|
13
|
+
def fetch
|
14
|
+
@errors.clear
|
15
|
+
|
16
|
+
unless @id
|
17
|
+
@errors << "product id is required"
|
18
|
+
return false
|
19
|
+
end
|
20
|
+
|
21
|
+
response = Client.get('/products/details', { 'product_id' => @id })
|
22
|
+
|
23
|
+
case response.code
|
24
|
+
when '200'
|
25
|
+
json = response.body
|
26
|
+
hash = JSON.parse(json)
|
27
|
+
|
28
|
+
@name = hash["name"]
|
29
|
+
@validation = hash["validation"]
|
30
|
+
@wildcard = hash["wildcard"] == 1 ? true : false
|
31
|
+
@multi_domain = hash["mdc"] == 1 ? true : false
|
32
|
+
@min_domains = hash["mdc_min"]
|
33
|
+
@max_domains = hash["mdc_max"]
|
34
|
+
@brand = hash["brand"]
|
35
|
+
|
36
|
+
return true
|
37
|
+
when '400', '401', '403'
|
38
|
+
set_errors(response)
|
39
|
+
return false
|
40
|
+
else
|
41
|
+
return false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def set_errors(response)
|
46
|
+
json = response.body
|
47
|
+
hash = JSON.parse(json)
|
48
|
+
@errors << hash["message"]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module GlobeSSL
|
2
|
+
class Products < Base
|
3
|
+
attribute :errors, Array[String]
|
4
|
+
attribute :list, Array[Product]
|
5
|
+
|
6
|
+
def fetch
|
7
|
+
@errors.clear
|
8
|
+
@list.clear
|
9
|
+
|
10
|
+
response = Client.get('/products/list')
|
11
|
+
|
12
|
+
case response.code
|
13
|
+
when '200'
|
14
|
+
json = response.body
|
15
|
+
hash = JSON.parse(json)
|
16
|
+
|
17
|
+
collection = hash["products"].inject([]) { |memo, element| memo << element.last }
|
18
|
+
|
19
|
+
collection.each do |product|
|
20
|
+
@list << Product.new(
|
21
|
+
:id => product["id"],
|
22
|
+
:name => product["name"],
|
23
|
+
:validation => product["validation"],
|
24
|
+
:wildcard => product["wildcard"],
|
25
|
+
:mdc => product["mdc"],
|
26
|
+
:mdc_min => product["mdc_min"],
|
27
|
+
:mdc_max => product["mdc_max"],
|
28
|
+
:brand => product["brand"]
|
29
|
+
)
|
30
|
+
end
|
31
|
+
return true
|
32
|
+
when '400', '401', '403'
|
33
|
+
set_errors(response)
|
34
|
+
return false
|
35
|
+
else
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def set_errors(response)
|
41
|
+
json = response.body
|
42
|
+
hash = JSON.parse(json)
|
43
|
+
@errors << hash["message"]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,250 @@
|
|
1
|
+
module GlobeSSL
|
2
|
+
class SSLCertificate < Base
|
3
|
+
attribute :id, Integer
|
4
|
+
attribute :order_id, Integer
|
5
|
+
attribute :partner_order_id, Integer
|
6
|
+
attribute :status, String
|
7
|
+
attribute :status_description, String
|
8
|
+
attribute :dcv_method, String
|
9
|
+
attribute :dcv_email, String
|
10
|
+
attribute :product, Product
|
11
|
+
attribute :domain, String
|
12
|
+
attribute :domains, String
|
13
|
+
attribute :total_domains, Integer
|
14
|
+
attribute :period, Integer
|
15
|
+
attribute :valid_from, Date
|
16
|
+
attribute :valid_till, Date
|
17
|
+
attribute :csr_code, String
|
18
|
+
attribute :crt_code, String
|
19
|
+
attribute :ca_code, String
|
20
|
+
attribute :webserver_type, Integer
|
21
|
+
|
22
|
+
def fetch
|
23
|
+
@errors.clear
|
24
|
+
|
25
|
+
unless @id
|
26
|
+
@errors << "cerificate id is required"
|
27
|
+
return false
|
28
|
+
end
|
29
|
+
|
30
|
+
response = Client.get('/certificates/get', { "id" => @id })
|
31
|
+
|
32
|
+
case response.code
|
33
|
+
when '200'
|
34
|
+
json = response.body
|
35
|
+
hash = JSON.parse(json)
|
36
|
+
|
37
|
+
@order_id = hash["order_id"]
|
38
|
+
@partner_order_id = hash["partner_order_id"]
|
39
|
+
@status = hash["status"]
|
40
|
+
@status_description = hash["status_description"]
|
41
|
+
@dcv_method = hash["dcv_method"]
|
42
|
+
@dcv_email = hash["dcv_email"]
|
43
|
+
@domain = hash["domain"]
|
44
|
+
@domains = hash["domains"]
|
45
|
+
@total_domains = hash["total_domains"]
|
46
|
+
@period = hash["period"]
|
47
|
+
@valid_from = hash["valid_from"]
|
48
|
+
@valid_till = hash["valid_till"]
|
49
|
+
@csr_code = hash["csr_code"]
|
50
|
+
@crt_code = hash["crt_code"]
|
51
|
+
@ca_code = hash["ca_code"]
|
52
|
+
|
53
|
+
@product = Product.new(:id => hash["product_id"])
|
54
|
+
@product.fetch
|
55
|
+
|
56
|
+
return true
|
57
|
+
when '400', '401', '403'
|
58
|
+
set_errors(response)
|
59
|
+
return false
|
60
|
+
else
|
61
|
+
return false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def reissue
|
66
|
+
@errors.clear
|
67
|
+
return false unless valid?
|
68
|
+
|
69
|
+
params = {
|
70
|
+
"id" => @id,
|
71
|
+
"csr" => @csr_code,
|
72
|
+
"dcv_method" => @dcv_method,
|
73
|
+
"webserver_type" => @webserver_type
|
74
|
+
}
|
75
|
+
|
76
|
+
if @dcv_method == "email" && @product.validation == "dv"
|
77
|
+
email_params = {
|
78
|
+
"approver_email" => @approver_email
|
79
|
+
}
|
80
|
+
params.merge!(email_params)
|
81
|
+
|
82
|
+
if @product.multi_domain
|
83
|
+
multi_domain_params = {
|
84
|
+
"dns_names" => @domains,
|
85
|
+
"approver_emails" => @approver_emails
|
86
|
+
}
|
87
|
+
params.merge!(multi_domain_params)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
request = Client.post('/certificates/reissue', params)
|
92
|
+
|
93
|
+
case response.code
|
94
|
+
when '200'
|
95
|
+
return true
|
96
|
+
when '400', '401', '403'
|
97
|
+
set_errors(response)
|
98
|
+
return false
|
99
|
+
else
|
100
|
+
return false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def set_errors(response)
|
105
|
+
json = response.body
|
106
|
+
hash = JSON.parse(json)
|
107
|
+
@errors << hash["message"]
|
108
|
+
end
|
109
|
+
|
110
|
+
def valid?
|
111
|
+
validate
|
112
|
+
end
|
113
|
+
|
114
|
+
def validate
|
115
|
+
unless @dcv_method
|
116
|
+
@errors << "dcv_method is required"
|
117
|
+
else
|
118
|
+
unless DomainControlValidation::METHODS.include?(@dcv_method)
|
119
|
+
@errors << "dcv_method must be one of 'email', 'http' or 'https'"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
if @product.multi_domain
|
124
|
+
unless @dns_names.size > (@product.min_domains - 1)
|
125
|
+
@errors << "dns_names are required"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
if @dcv_method == "email"
|
130
|
+
unless @approver_email
|
131
|
+
@errors << "approver_email is required"
|
132
|
+
end
|
133
|
+
|
134
|
+
if @product.multi_domain
|
135
|
+
unless @approver_emails.size == @dns_names.size
|
136
|
+
@errors << "approver_emails are required"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
unless @product.validation == "dv" # if not domain validation
|
142
|
+
unless @admin_org
|
143
|
+
@errors << "admin_org is required"
|
144
|
+
end
|
145
|
+
|
146
|
+
unless @admin_address
|
147
|
+
@errors << "admin_address is required"
|
148
|
+
end
|
149
|
+
|
150
|
+
unless @admin_city
|
151
|
+
@errors << "admin_city is required"
|
152
|
+
end
|
153
|
+
|
154
|
+
unless @admin_country
|
155
|
+
@errors << "admin_country is required"
|
156
|
+
else
|
157
|
+
unless COUNTRY_CODES.has_key?(@admin_country)
|
158
|
+
@errors << "admin_country must be one in COUNTRY_CODES"
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
unless @org_name
|
163
|
+
@errors << "org_name is required"
|
164
|
+
end
|
165
|
+
|
166
|
+
unless @org_division
|
167
|
+
@errors << "org_division is required"
|
168
|
+
end
|
169
|
+
|
170
|
+
unless @org_address
|
171
|
+
@errors << "org_address is required"
|
172
|
+
end
|
173
|
+
|
174
|
+
unless @org_city
|
175
|
+
@errors << "org_city is required"
|
176
|
+
end
|
177
|
+
|
178
|
+
unless @org_state
|
179
|
+
@errors << "org_state is required"
|
180
|
+
end
|
181
|
+
|
182
|
+
unless @org_country
|
183
|
+
@errors << "org_country is required"
|
184
|
+
else
|
185
|
+
unless COUNTRY_CODES.has_key?(@org_country)
|
186
|
+
@errors << "org_country must be one in COUNTRY_CODES"
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
unless @org_postalcode
|
191
|
+
@errors << "org_postalcode is required"
|
192
|
+
end
|
193
|
+
|
194
|
+
unless @org_phone
|
195
|
+
@errors << "org_phone is required"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
unless @admin_firstname
|
200
|
+
@errors << "admin_firstname is required"
|
201
|
+
end
|
202
|
+
|
203
|
+
unless @admin_lastname
|
204
|
+
@errors << "admin_lastname is required"
|
205
|
+
end
|
206
|
+
|
207
|
+
unless @admin_email
|
208
|
+
@errors << "admin_email is required"
|
209
|
+
end
|
210
|
+
|
211
|
+
unless @admin_jobtitle
|
212
|
+
@errors << "admin_jobtitle is required"
|
213
|
+
end
|
214
|
+
|
215
|
+
unless @admin_phone
|
216
|
+
@errors << "admin_phone is required"
|
217
|
+
end
|
218
|
+
|
219
|
+
unless @admin_phone
|
220
|
+
@errors << "admin_phone is required"
|
221
|
+
end
|
222
|
+
|
223
|
+
unless @csr
|
224
|
+
@errors << "certificate signing request (csr) is required"
|
225
|
+
end
|
226
|
+
|
227
|
+
unless @period
|
228
|
+
@errors << "period is required"
|
229
|
+
else
|
230
|
+
unless EXPIRY_PERIODS.include?(@period)
|
231
|
+
@errors << "period must be 1, 2 or 3 years or 0 if product is free"
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
unless @webserver_type
|
236
|
+
@errors << "webserver_type is required"
|
237
|
+
end
|
238
|
+
|
239
|
+
unless @product
|
240
|
+
@errors << "product is required"
|
241
|
+
end
|
242
|
+
|
243
|
+
if @errors.any?
|
244
|
+
return false
|
245
|
+
else
|
246
|
+
return true
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module GlobeSSL
|
2
|
+
class Webservers < Base
|
3
|
+
attribute :errors, Array[String]
|
4
|
+
attribute :list, Array[Product]
|
5
|
+
|
6
|
+
def fetch
|
7
|
+
@errors.clear
|
8
|
+
@list.clear
|
9
|
+
|
10
|
+
response = Client.get('/tools/webservers')
|
11
|
+
|
12
|
+
case response.code
|
13
|
+
when '200'
|
14
|
+
json = response.body
|
15
|
+
hash = JSON.parse(json)
|
16
|
+
hash.each_pair { |key, value| @list << Webserver.new(:id => key, :name => value) }
|
17
|
+
return true
|
18
|
+
when '400', '401', '403'
|
19
|
+
set_errors(response)
|
20
|
+
return false
|
21
|
+
else
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_errors(response)
|
27
|
+
json = response.body
|
28
|
+
hash = JSON.parse(json)
|
29
|
+
@errors << hash["message"]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: globessl
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jurgen Jocubeit
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: virtus
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.3
|
27
|
+
description: A Ruby API client for GlobeSSL CA resellers. This client provides almost
|
28
|
+
all of the functionality exposed by v2 of their API.
|
29
|
+
email: support@brightcommerce.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".gitignore"
|
35
|
+
- Gemfile
|
36
|
+
- LICENSE
|
37
|
+
- README.md
|
38
|
+
- globessl.gemspec
|
39
|
+
- lib/globessl.rb
|
40
|
+
- lib/globessl/account_balance.rb
|
41
|
+
- lib/globessl/account_details.rb
|
42
|
+
- lib/globessl/base.rb
|
43
|
+
- lib/globessl/certificate_signing_request.rb
|
44
|
+
- lib/globessl/client.rb
|
45
|
+
- lib/globessl/configuration.rb
|
46
|
+
- lib/globessl/country_codes.rb
|
47
|
+
- lib/globessl/domain_control_validation.rb
|
48
|
+
- lib/globessl/domain_emails.rb
|
49
|
+
- lib/globessl/order_ssl_certificate.rb
|
50
|
+
- lib/globessl/product.rb
|
51
|
+
- lib/globessl/products.rb
|
52
|
+
- lib/globessl/ssl_certificate.rb
|
53
|
+
- lib/globessl/version.rb
|
54
|
+
- lib/globessl/webserver.rb
|
55
|
+
- lib/globessl/webservers.rb
|
56
|
+
homepage: https://github.com/brightcommerce/globessl
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
metadata:
|
60
|
+
copyright: Copyright 2015 Brightcommerce, Inc.
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.0
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubyforge_project:
|
77
|
+
rubygems_version: 2.4.5
|
78
|
+
signing_key:
|
79
|
+
specification_version: 4
|
80
|
+
summary: GlobeSSL Ruby Client v1.0.1
|
81
|
+
test_files: []
|
82
|
+
has_rdoc:
|