mlightner-universal_ruby_whois 1.2.6 → 1.2.7
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.
- data/CHANGELOG.rdoc +6 -0
- data/lib/universal_ruby_whois/domain.rb +14 -0
- data/lib/universal_ruby_whois/server.rb +6 -7
- data/lib/universal_ruby_whois/server_list.rb +83 -53
- data/test/whois.rb +7 -2
- data/universal_ruby_whois.gemspec +1 -1
- metadata +3 -2
data/CHANGELOG.rdoc
CHANGED
|
@@ -125,6 +125,20 @@ module Whois
|
|
|
125
125
|
def to_s
|
|
126
126
|
domain.to_s rescue nil
|
|
127
127
|
end
|
|
128
|
+
def to_hash
|
|
129
|
+
{
|
|
130
|
+
:status => self.status,
|
|
131
|
+
:creation_date => self.creation_date,
|
|
132
|
+
:expiration_date => self.expiration_date,
|
|
133
|
+
:output => self.whois_output
|
|
134
|
+
}
|
|
135
|
+
end
|
|
136
|
+
def to_json
|
|
137
|
+
self.to_hash.to_json
|
|
138
|
+
end
|
|
139
|
+
def to_xml
|
|
140
|
+
self.to_hash.to_xml
|
|
141
|
+
end
|
|
128
142
|
end
|
|
129
143
|
|
|
130
144
|
end
|
|
@@ -13,10 +13,10 @@ module Whois
|
|
|
13
13
|
|
|
14
14
|
# The default regular expressions used when defining a new server if none are supplied.
|
|
15
15
|
DEFAULT_WHOIS_REGULAR_EXPRESSIONS = {
|
|
16
|
-
:free => /(avail|free|no match|no entr|not taken|not registered|not found)/im,
|
|
17
|
-
:registered => /(registered|Domain ID|domain name\s*\:|is active|is not available|exists|\bregistrant\b|Created on)/im,
|
|
18
|
-
:creation_date => /(Creation date|created on|created at|Commencement Date|Registration Date)\s*[\:\.\]]*\s*([\w\-\:\ \/]+)[^\n\r]*[\n\r]/im,
|
|
19
|
-
:expiration_date => /(expiration date|expires on|registered through|Renewal date)\s*[\:\.\]]*\s*([\w\-\:\ \/]+)[^\n\r]*[\n\r]/im,
|
|
16
|
+
:free => /(avail|free|no match|no entr|not taken|Available|Status\:\sNot\sRegistered|not registered|not found|No match for domain)/im,
|
|
17
|
+
:registered => /(registered|Domain ID|domain name\s*\:|is active|Status\:\sActive|Not available|is not available|exists|\bregistrant\b|Created on|created\:)/im,
|
|
18
|
+
:creation_date => /(Creation date|created on|created at|Commencement Date|Registration Date|domain_dateregistered|created\:)\s*[\:\.\]]*\s*([\w\-\:\ \/]+)[^\n\r]*[\n\r]/im,
|
|
19
|
+
:expiration_date => /(expiration date|expires on|registered through|Renewal date|domain_datebilleduntil|expires\:)\s*[\:\.\]]*\s*([\w\-\:\ \/]+)[^\n\r]*[\n\r]/im,
|
|
20
20
|
:error => /(error)/im,
|
|
21
21
|
:server_unavailable => /(Sorry\. Server busy\.|too many requests|been blocked)/im
|
|
22
22
|
}
|
|
@@ -24,7 +24,7 @@ module Whois
|
|
|
24
24
|
# The location of the 'whois' binary utility.
|
|
25
25
|
WHOIS_BIN = '/usr/bin/env whois'
|
|
26
26
|
|
|
27
|
-
attr_reader :tld, :nic_server, :regexes, :port, :
|
|
27
|
+
attr_reader :tld, :nic_server, :regexes, :port, :server_unavailable, :unavailable_response
|
|
28
28
|
|
|
29
29
|
# === Whois Server Definition
|
|
30
30
|
#
|
|
@@ -145,7 +145,7 @@ module Whois
|
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
def unavailable?
|
|
148
|
-
@
|
|
148
|
+
@server_unavailable ? true : false
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
# Retrieve the raw WHOIS server output for a domain.
|
|
@@ -243,4 +243,3 @@ module Whois
|
|
|
243
243
|
end
|
|
244
244
|
|
|
245
245
|
end
|
|
246
|
-
|
|
@@ -12,6 +12,7 @@ Whois::Server.define('at', 'whois.nic.at')
|
|
|
12
12
|
Whois::Server.define('bg', 'whois.digsys.bg')
|
|
13
13
|
Whois::Server.define('bi', 'whois.nic.bi')
|
|
14
14
|
Whois::Server.define('bj', 'www.nic.bj')
|
|
15
|
+
Whois::Server.define('br', 'whois.nic.br')
|
|
15
16
|
Whois::Server.define('bz', 'whois.belizenic.bz')
|
|
16
17
|
Whois::Server.define('cc', 'whois.nic.cc')
|
|
17
18
|
Whois::Server.define('cd', 'whois.nic.cd')
|
|
@@ -27,22 +28,22 @@ Whois::Server.define('hm', 'webhst1.capital.hm')
|
|
|
27
28
|
Whois::Server.define('hu', 'whois.nic.hu')
|
|
28
29
|
Whois::Server.define('id', 'whois.idnic.net.id')
|
|
29
30
|
Whois::Server.define('in', 'whois.inregistry.net')
|
|
31
|
+
Whois::Server.define('io', 'whois.nic.io')
|
|
30
32
|
Whois::Server.define('ir', 'whois.nic.ir')
|
|
31
33
|
Whois::Server.define('kz', 'whois.nic.kz')
|
|
32
34
|
Whois::Server.define('la', 'whois2.afilias-grs.net')
|
|
33
35
|
Whois::Server.define('ly', 'whois.lydomains.com')
|
|
34
36
|
Whois::Server.define('mc', 'whois.ripe.net')
|
|
35
|
-
Whois::Server.define('ms', 'whois.ms')
|
|
37
|
+
Whois::Server.define('ms', 'whois.nic.ms')
|
|
36
38
|
Whois::Server.define('mx', 'whois.nic.mx')
|
|
37
39
|
Whois::Server.define('my', 'whois.mynic.net.my')
|
|
38
|
-
Whois::Server.define('nu', 'whois.nic.nu')
|
|
39
40
|
Whois::Server.define('pl', 'whois.dns.pl')
|
|
40
41
|
Whois::Server.define('pm', 'whois.nic.pm')
|
|
41
42
|
Whois::Server.define('pro', 'whois.registrypro.pro')
|
|
42
43
|
Whois::Server.define('pt', 'whois.nic.pt')
|
|
43
44
|
Whois::Server.define('sa', 'saudinic.net.sa')
|
|
44
45
|
Whois::Server.define('sb', 'whois.nic.net.sb')
|
|
45
|
-
Whois::Server.define('
|
|
46
|
+
Whois::Server.define('sh', 'whois.nic.sh')
|
|
46
47
|
Whois::Server.define('si', 'whois.arnes.si')
|
|
47
48
|
Whois::Server.define('sk', 'whois.sk-nic.sk')
|
|
48
49
|
Whois::Server.define('sm', 'whois.ripe.net')
|
|
@@ -61,30 +62,31 @@ Whois::Server.define('wf', 'whois.nic.wf')
|
|
|
61
62
|
Whois::Server.define('ws', 'whois.tld.ws')
|
|
62
63
|
Whois::Server.define('yt', 'whois.nic.yt')
|
|
63
64
|
Whois::Server.define('us', 'whois.nic.us')
|
|
64
|
-
Whois::Server.define('at',
|
|
65
|
-
Whois::Server.define('ca',
|
|
66
|
-
Whois::Server.define('cc',
|
|
67
|
-
Whois::Server.define('ch',
|
|
68
|
-
Whois::Server.define('cn',
|
|
69
|
-
Whois::Server.define('cz',
|
|
70
|
-
Whois::Server.define('ee',
|
|
71
|
-
Whois::Server.define('gr',
|
|
72
|
-
Whois::Server.define('it',
|
|
73
|
-
Whois::Server.define('li',
|
|
74
|
-
Whois::Server.define('lt',
|
|
75
|
-
Whois::Server.define('lu',
|
|
76
|
-
Whois::Server.define('lv',
|
|
77
|
-
Whois::Server.define('ms',
|
|
78
|
-
Whois::Server.define('co.nz',
|
|
79
|
-
Whois::Server.define('nu',
|
|
80
|
-
Whois::Server.define('pl',
|
|
81
|
-
Whois::Server.define('ro',
|
|
82
|
-
Whois::Server.define('ru',
|
|
83
|
-
Whois::Server.define('se',
|
|
84
|
-
Whois::Server.define('sk',
|
|
85
|
-
Whois::Server.define('tc',
|
|
86
|
-
Whois::Server.define('vg',
|
|
87
|
-
Whois::Server.define('ws',
|
|
65
|
+
Whois::Server.define('at', 'whois.nic.at')
|
|
66
|
+
Whois::Server.define('ca', 'whois.cira.ca')
|
|
67
|
+
Whois::Server.define('cc', 'whois.nic.cc')
|
|
68
|
+
Whois::Server.define('ch', 'whois.nic.ch')
|
|
69
|
+
Whois::Server.define('cn', 'whois.cnnic.net.cn')
|
|
70
|
+
Whois::Server.define('cz', 'whois.nic.cz')
|
|
71
|
+
Whois::Server.define('ee', 'whois.eenet.ee')
|
|
72
|
+
Whois::Server.define('gr', 'https://grweb.ics.forth.gr/')
|
|
73
|
+
Whois::Server.define('it', 'whois.nic.it')
|
|
74
|
+
Whois::Server.define('li', 'whois.nic.li')
|
|
75
|
+
Whois::Server.define('lt', 'whois.domreg.lt')
|
|
76
|
+
Whois::Server.define('lu', 'whois.dns.lu')
|
|
77
|
+
Whois::Server.define('lv', 'whois.ripe.net')
|
|
78
|
+
Whois::Server.define('ms', 'whois.adamsnames.tc')
|
|
79
|
+
Whois::Server.define('co.nz', 'whois.domainz.net.nz')
|
|
80
|
+
Whois::Server.define('nu', 'whois.nic.nu')
|
|
81
|
+
Whois::Server.define('pl', 'whois.dns.pl')
|
|
82
|
+
Whois::Server.define('ro', 'whois.rotld.ro')
|
|
83
|
+
Whois::Server.define('ru', 'whois.ripn.net')
|
|
84
|
+
Whois::Server.define('se', 'whois.iis.se')
|
|
85
|
+
Whois::Server.define('sk', 'whois.ripe.net')
|
|
86
|
+
Whois::Server.define('tc', 'whois.adamsnames.tc')
|
|
87
|
+
Whois::Server.define('vg', 'whois.adamsnames.tc')
|
|
88
|
+
Whois::Server.define('ws', 'whois.worldsite.ws')
|
|
89
|
+
Whois::Server.define('gd', 'whois.adamsnames.tc')
|
|
88
90
|
|
|
89
91
|
#Whois::Server.define('es',"https://www.nic.es/esnic/servlet/BuscarDomSolAlta?dominio=%DOMAIN%")
|
|
90
92
|
#Whois::Server.define('com.es',"https://www.nic.es/esnic/servlet/BuscarDomSolAlta?dominio=%DOMAIN%")
|
|
@@ -104,7 +106,6 @@ Whois::Server.define(
|
|
|
104
106
|
:free => [%q{%DOMAIN% </a> </th> <td class="disp"> <img src="../images/icon_disp_yes.gif" alt="si" />}, 'im']
|
|
105
107
|
)
|
|
106
108
|
|
|
107
|
-
|
|
108
109
|
# By leaving out the whois server, we force it to follow the internic redirection.
|
|
109
110
|
Whois::Server.define(
|
|
110
111
|
[ 'com', 'net', 'edu' ], nil,
|
|
@@ -118,10 +119,13 @@ Whois::Server.define(
|
|
|
118
119
|
:free => /Status:\s*Active/im.invert!
|
|
119
120
|
)
|
|
120
121
|
|
|
121
|
-
Whois::Server.define(
|
|
122
|
+
Whois::Server.define(
|
|
123
|
+
%w(asn.au com.au id.au net.au org.au),
|
|
124
|
+
'whois.ausregistry.net.au',
|
|
122
125
|
:free => /No Data Found/im,
|
|
123
|
-
:registered => /
|
|
124
|
-
:error => /BLACKLISTED/m
|
|
126
|
+
:registered => /Last Modified/im,
|
|
127
|
+
:error => /BLACKLISTED/m
|
|
128
|
+
)
|
|
125
129
|
|
|
126
130
|
Whois::Server.define(
|
|
127
131
|
%w(hk com.hk net.hk edu.hk org.hk gov.hk idv.hk),
|
|
@@ -177,9 +181,9 @@ Whois::Server.define(
|
|
|
177
181
|
)
|
|
178
182
|
Whois::Server.define(
|
|
179
183
|
'eu',
|
|
180
|
-
'
|
|
181
|
-
:free => /
|
|
182
|
-
:registered => /
|
|
184
|
+
'whois.eu',
|
|
185
|
+
:free => /Nameservers\:/im.invert!,
|
|
186
|
+
:registered => /Nameservers\:/im,
|
|
183
187
|
:pending => /APPLICATION PENDING/im,
|
|
184
188
|
:error => /NOT ALLOWED/im
|
|
185
189
|
)
|
|
@@ -193,23 +197,23 @@ Whois::Server.define(
|
|
|
193
197
|
Whois::Server.define(
|
|
194
198
|
'name',
|
|
195
199
|
'whois.nic.name',
|
|
196
|
-
:registered => /Not available for registration./im,
|
|
200
|
+
:registered => /Not available for second level registration./im,
|
|
197
201
|
:preserved => /Not available for second level registration./im,
|
|
198
202
|
:free => /No match./im
|
|
199
203
|
)
|
|
200
|
-
Whois::Server.define(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
)
|
|
204
|
+
# Whois::Server.define(
|
|
205
|
+
# 'net',
|
|
206
|
+
# 'whois.verisign-grs.com',
|
|
207
|
+
# :registered => /Domain Name:/im,
|
|
208
|
+
# :free => /No match for/im
|
|
209
|
+
# )
|
|
206
210
|
Whois::Server.define(
|
|
207
211
|
'nl',
|
|
208
212
|
'whois.domain-registry.nl',
|
|
209
|
-
:registered => /
|
|
210
|
-
:free => /
|
|
211
|
-
:error => /
|
|
212
|
-
:preserved => /
|
|
213
|
+
:registered => /active/im,
|
|
214
|
+
:free => /free/im,
|
|
215
|
+
:error => /invalid domain/im,
|
|
216
|
+
:preserved => /excluded/im
|
|
213
217
|
)
|
|
214
218
|
Whois::Server.define(
|
|
215
219
|
'org',
|
|
@@ -247,9 +251,10 @@ Whois::Server.define(
|
|
|
247
251
|
)
|
|
248
252
|
Whois::Server.define(
|
|
249
253
|
'mobi',
|
|
250
|
-
'whois.corenic.net',
|
|
251
|
-
|
|
252
|
-
:
|
|
254
|
+
# 'whois.corenic.net',
|
|
255
|
+
'whois.dotmobiregistry.net',
|
|
256
|
+
:registered => /is not registered/im.invert!,
|
|
257
|
+
:free => /is not registered/im
|
|
253
258
|
)
|
|
254
259
|
Whois::Server.define(
|
|
255
260
|
'ca',
|
|
@@ -257,13 +262,38 @@ Whois::Server.define(
|
|
|
257
262
|
:registered => /EXIST/im,
|
|
258
263
|
:free => /AVAIL/im
|
|
259
264
|
)
|
|
260
|
-
Whois::Server.define(
|
|
265
|
+
Whois::Server.define(
|
|
266
|
+
'asia',
|
|
267
|
+
'whois.nic.asia',
|
|
261
268
|
:registered => /Domain ID/im,
|
|
262
269
|
:free => /NOT FOUND/im
|
|
263
270
|
)
|
|
264
271
|
Whois::Server.define(
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
272
|
+
'co.il',
|
|
273
|
+
'whois.isoc.org.il',
|
|
274
|
+
:registered => /validity:/im,
|
|
275
|
+
:free => /No data was found to match the request criteria./im
|
|
276
|
+
)
|
|
277
|
+
Whois::Server.define(
|
|
278
|
+
'ac.uk',
|
|
279
|
+
'whois.ja.net',
|
|
280
|
+
:registered => /Domain:/im,
|
|
281
|
+
:free => /No such domain/im
|
|
282
|
+
)
|
|
283
|
+
Whois::Server.define(
|
|
284
|
+
%w(cx cm ht ki mu nf sb tl),
|
|
285
|
+
'whois.nic.cx',
|
|
286
|
+
:registered => //im,
|
|
287
|
+
:free => /(Not Registered|No Applications Pending)/im
|
|
288
|
+
)Whois::Server.define(
|
|
289
|
+
%w(gd tc vg ms),
|
|
290
|
+
'whois.adamsnames.tc',
|
|
291
|
+
:free => /is not registered/im,
|
|
292
|
+
:registered => /is registered/im
|
|
293
|
+
)
|
|
294
|
+
Whois::Server.define(
|
|
295
|
+
'nu',
|
|
296
|
+
'whois.nic.nu',
|
|
297
|
+
:free => /NO MATCH.*/,
|
|
298
|
+
:registered => /Domain Name/
|
|
269
299
|
)
|
data/test/whois.rb
CHANGED
|
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + '/../lib/universal_ruby_whois'
|
|
|
3
3
|
|
|
4
4
|
class WhoisTest < Test::Unit::TestCase
|
|
5
5
|
|
|
6
|
-
TEST_TLDS = %w(com org co.uk eu.com ru info jp)
|
|
6
|
+
TEST_TLDS = %w(com org co.uk eu.com ru info jp eu tc nu co.nz)
|
|
7
7
|
REGISTERED_DOMAIN = "google"
|
|
8
8
|
AVAILABLE_DOMAIN = "asdfasdfasdfcvr3rwsdc2e"
|
|
9
9
|
|
|
@@ -41,7 +41,7 @@ class WhoisTest < Test::Unit::TestCase
|
|
|
41
41
|
|
|
42
42
|
def test_expiration_date
|
|
43
43
|
domain = find_and_assert_domain("google.com")
|
|
44
|
-
assert_equal Time.local(*ParseDate.parsedate("2011-09-
|
|
44
|
+
assert_equal Time.local(*ParseDate.parsedate("2011-09-14")), domain.expiration_date
|
|
45
45
|
|
|
46
46
|
TEST_TLDS.each do |tld|
|
|
47
47
|
domain = find_and_assert_domain("#{REGISTERED_DOMAIN}.#{tld}")
|
|
@@ -50,6 +50,11 @@ class WhoisTest < Test::Unit::TestCase
|
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
def test_mobi_domain
|
|
54
|
+
domain = find_and_assert_domain("google.mobi")
|
|
55
|
+
assert domain.expiration_date_known?
|
|
56
|
+
end
|
|
57
|
+
|
|
53
58
|
protected
|
|
54
59
|
|
|
55
60
|
def find_and_assert_domain(domain)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mlightner-universal_ruby_whois
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Lightner
|
|
@@ -9,11 +9,12 @@ autorequire: name
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date:
|
|
12
|
+
date: 2009-05-16 00:00:00 -07:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: activesupport
|
|
17
|
+
type: :runtime
|
|
17
18
|
version_requirement:
|
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
|
19
20
|
requirements:
|