whois 1.0.10 → 1.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +17 -0
- data/Manifest +24 -0
- data/Rakefile +15 -15
- data/lib/whois.rb +3 -3
- data/lib/whois/answer/parser/NOTES.txt +1 -0
- data/lib/whois/answer/parser/whois.aero.rb +5 -5
- data/lib/whois/answer/parser/whois.afilias-grs.info.rb +5 -5
- data/lib/whois/answer/parser/whois.ai.rb +73 -0
- data/lib/whois/answer/parser/whois.dns.lu.rb +72 -0
- data/lib/whois/answer/parser/whois.hkdnr.net.hk.rb +81 -0
- data/lib/whois/answer/parser/whois.nic.af.rb +83 -0
- data/lib/whois/answer/parser/whois.nic.ag.rb +77 -0
- data/lib/whois/answer/parser/whois.nic.asia.rb +1 -1
- data/lib/whois/answer/parser/whois.nic.mx.rb +87 -0
- data/lib/whois/answer/parser/whois.nic.or.kr.rb +1 -1
- data/lib/whois/answer/parser/whois.nic.ve.rb +2 -2
- data/lib/whois/answer/parser/whois.rotld.ro.rb +2 -4
- data/lib/whois/version.rb +2 -2
- data/test/answer/parser/whois.aero_test.rb +37 -17
- data/test/answer/parser/whois.afilias-grs.info_test.rb +63 -28
- data/test/answer/parser/whois.ai_test.rb +58 -0
- data/test/answer/parser/whois.dns.lu_test.rb +70 -0
- data/test/answer/parser/whois.hkdnr.net.hk_test.rb +77 -0
- data/test/answer/parser/whois.nic.af_test.rb +84 -0
- data/test/answer/parser/whois.nic.ag_test.rb +84 -0
- data/test/answer/parser/whois.nic.asia_test.rb +9 -4
- data/test/answer/parser/whois.nic.mx_test.rb +84 -0
- data/test/answer/parser/whois.nic.or.kr_test.rb +2 -2
- data/test/answer/parser/whois.nic.ve_test.rb +10 -5
- data/test/answer/parser/whois.rotld.ro_test.rb +9 -4
- data/test/list_tld +6 -6
- data/test/testcases/responses/whois.ai/available.txt +2 -0
- data/test/testcases/responses/whois.ai/registered.txt +59 -0
- data/test/testcases/responses/whois.dns.lu/available.txt +26 -0
- data/test/testcases/responses/whois.dns.lu/registered.txt +57 -0
- data/test/testcases/responses/whois.hkdnr.net.hk/available.txt +1 -0
- data/test/testcases/responses/whois.hkdnr.net.hk/registered.txt +96 -0
- data/test/testcases/responses/whois.nic.af/available.txt +13 -0
- data/test/testcases/responses/whois.nic.af/registered.txt +56 -0
- data/test/testcases/responses/whois.nic.ag/available.txt +1 -0
- data/test/testcases/responses/whois.nic.ag/registered.txt +100 -0
- data/test/testcases/responses/whois.nic.mx/available.txt +11 -0
- data/test/testcases/responses/whois.nic.mx/registered.txt +58 -0
- data/whois.gemspec +8 -8
- metadata +41 -5
data/CHANGELOG.rdoc
CHANGED
@@ -1,6 +1,23 @@
|
|
1
1
|
= Changelog
|
2
2
|
|
3
3
|
|
4
|
+
== Release 1.0.11
|
5
|
+
|
6
|
+
* NEW: Added simple .af TLD parser (whois.nic.af).
|
7
|
+
|
8
|
+
* NEW: Added simple .ag TLD parser (whois.nic.ag).
|
9
|
+
|
10
|
+
* NEW: Added simple .ai TLD parser (whois.ai).
|
11
|
+
|
12
|
+
* NEW: Added simple .hk TLD parser (whois.hkdnr.net.hk).
|
13
|
+
|
14
|
+
* NEW: Added simple .lu TLD parser (whois.dns.lu).
|
15
|
+
|
16
|
+
* NEW: Added simple .mx TLD parser (whois.nic.mx).
|
17
|
+
|
18
|
+
* FIXED: Fixed uninitialized constant error Whois::Answer::Parser::WhoisNicOrKr when trying to load the .kr parser.
|
19
|
+
|
20
|
+
|
4
21
|
== Release 1.0.10
|
5
22
|
|
6
23
|
* NEW: Added simple .kr TLD parser (whois.nic.or.kr).
|
data/Manifest
CHANGED
@@ -28,6 +28,7 @@ lib/whois/answer/parser/whois.aeda.net.ae.rb
|
|
28
28
|
lib/whois/answer/parser/whois.aero.rb
|
29
29
|
lib/whois/answer/parser/whois.afilias-grs.info.rb
|
30
30
|
lib/whois/answer/parser/whois.afilias.info.rb
|
31
|
+
lib/whois/answer/parser/whois.ai.rb
|
31
32
|
lib/whois/answer/parser/whois.arnes.si.rb
|
32
33
|
lib/whois/answer/parser/whois.biz.rb
|
33
34
|
lib/whois/answer/parser/whois.cat.rb
|
@@ -38,6 +39,7 @@ lib/whois/answer/parser/whois.crsnic.net.rb
|
|
38
39
|
lib/whois/answer/parser/whois.denic.de.rb
|
39
40
|
lib/whois/answer/parser/whois.dk-hostmaster.dk.rb
|
40
41
|
lib/whois/answer/parser/whois.dns.be.rb
|
42
|
+
lib/whois/answer/parser/whois.dns.lu.rb
|
41
43
|
lib/whois/answer/parser/whois.domain-registry.nl.rb
|
42
44
|
lib/whois/answer/parser/whois.domainregistry.ie.rb
|
43
45
|
lib/whois/answer/parser/whois.domreg.lt.rb
|
@@ -45,12 +47,15 @@ lib/whois/answer/parser/whois.dotmobiregistry.net.rb
|
|
45
47
|
lib/whois/answer/parser/whois.educause.edu.rb
|
46
48
|
lib/whois/answer/parser/whois.eu.org.rb
|
47
49
|
lib/whois/answer/parser/whois.eu.rb
|
50
|
+
lib/whois/answer/parser/whois.hkdnr.net.hk.rb
|
48
51
|
lib/whois/answer/parser/whois.iana.org.rb
|
49
52
|
lib/whois/answer/parser/whois.isnic.is.rb
|
50
53
|
lib/whois/answer/parser/whois.meregistry.net.rb
|
51
54
|
lib/whois/answer/parser/whois.museum.rb
|
52
55
|
lib/whois/answer/parser/whois.nic-se.se.rb
|
53
56
|
lib/whois/answer/parser/whois.nic.ac.rb
|
57
|
+
lib/whois/answer/parser/whois.nic.af.rb
|
58
|
+
lib/whois/answer/parser/whois.nic.ag.rb
|
54
59
|
lib/whois/answer/parser/whois.nic.asia.rb
|
55
60
|
lib/whois/answer/parser/whois.nic.at.rb
|
56
61
|
lib/whois/answer/parser/whois.nic.cc.rb
|
@@ -67,6 +72,7 @@ lib/whois/answer/parser/whois.nic.it.rb
|
|
67
72
|
lib/whois/answer/parser/whois.nic.lv.rb
|
68
73
|
lib/whois/answer/parser/whois.nic.ly.rb
|
69
74
|
lib/whois/answer/parser/whois.nic.mu.rb
|
75
|
+
lib/whois/answer/parser/whois.nic.mx.rb
|
70
76
|
lib/whois/answer/parser/whois.nic.name.rb
|
71
77
|
lib/whois/answer/parser/whois.nic.nu.rb
|
72
78
|
lib/whois/answer/parser/whois.nic.or.kr.rb
|
@@ -120,6 +126,7 @@ test/answer/parser/whois.aeda.net.ae_test.rb
|
|
120
126
|
test/answer/parser/whois.aero_test.rb
|
121
127
|
test/answer/parser/whois.afilias-grs.info_test.rb
|
122
128
|
test/answer/parser/whois.afilias.info_test.rb
|
129
|
+
test/answer/parser/whois.ai_test.rb
|
123
130
|
test/answer/parser/whois.arnes.si_test.rb
|
124
131
|
test/answer/parser/whois.biz_test.rb
|
125
132
|
test/answer/parser/whois.cat_test.rb
|
@@ -130,6 +137,7 @@ test/answer/parser/whois.crsnic.net_test.rb
|
|
130
137
|
test/answer/parser/whois.denic.de_test.rb
|
131
138
|
test/answer/parser/whois.dk-hostmaster.dk_test.rb
|
132
139
|
test/answer/parser/whois.dns.be_test.rb
|
140
|
+
test/answer/parser/whois.dns.lu_test.rb
|
133
141
|
test/answer/parser/whois.domain-registry.nl_test.rb
|
134
142
|
test/answer/parser/whois.domainregistry.ie_test.rb
|
135
143
|
test/answer/parser/whois.domreg.lt_test.rb
|
@@ -137,12 +145,15 @@ test/answer/parser/whois.dotmobiregistry.net_test.rb
|
|
137
145
|
test/answer/parser/whois.educause.edu_test.rb
|
138
146
|
test/answer/parser/whois.eu.org_test.rb
|
139
147
|
test/answer/parser/whois.eu_test.rb
|
148
|
+
test/answer/parser/whois.hkdnr.net.hk_test.rb
|
140
149
|
test/answer/parser/whois.iana.org_test.rb
|
141
150
|
test/answer/parser/whois.isnic.is_test.rb
|
142
151
|
test/answer/parser/whois.meregistry.net_test.rb
|
143
152
|
test/answer/parser/whois.museum_test.rb
|
144
153
|
test/answer/parser/whois.nic-se.se_test.rb
|
145
154
|
test/answer/parser/whois.nic.ac_test.rb
|
155
|
+
test/answer/parser/whois.nic.af_test.rb
|
156
|
+
test/answer/parser/whois.nic.ag_test.rb
|
146
157
|
test/answer/parser/whois.nic.asia_test.rb
|
147
158
|
test/answer/parser/whois.nic.at_test.rb
|
148
159
|
test/answer/parser/whois.nic.cc_test.rb
|
@@ -159,6 +170,7 @@ test/answer/parser/whois.nic.it_test.rb
|
|
159
170
|
test/answer/parser/whois.nic.lv_test.rb
|
160
171
|
test/answer/parser/whois.nic.ly_test.rb
|
161
172
|
test/answer/parser/whois.nic.mu_test.rb
|
173
|
+
test/answer/parser/whois.nic.mx_test.rb
|
162
174
|
test/answer/parser/whois.nic.name_test.rb
|
163
175
|
test/answer/parser/whois.nic.nu_test.rb
|
164
176
|
test/answer/parser/whois.nic.or.kr_test.rb
|
@@ -236,6 +248,8 @@ test/testcases/responses/whois.afilias-grs.info/vc/available.txt
|
|
236
248
|
test/testcases/responses/whois.afilias-grs.info/vc/registered.txt
|
237
249
|
test/testcases/responses/whois.afilias.info/available.txt
|
238
250
|
test/testcases/responses/whois.afilias.info/registered.txt
|
251
|
+
test/testcases/responses/whois.ai/available.txt
|
252
|
+
test/testcases/responses/whois.ai/registered.txt
|
239
253
|
test/testcases/responses/whois.arnes.si/available.txt
|
240
254
|
test/testcases/responses/whois.arnes.si/registered.txt
|
241
255
|
test/testcases/responses/whois.biz/available.txt
|
@@ -260,6 +274,8 @@ test/testcases/responses/whois.dk-hostmaster.dk/available.txt
|
|
260
274
|
test/testcases/responses/whois.dk-hostmaster.dk/registered.txt
|
261
275
|
test/testcases/responses/whois.dns.be/available.txt
|
262
276
|
test/testcases/responses/whois.dns.be/registered.txt
|
277
|
+
test/testcases/responses/whois.dns.lu/available.txt
|
278
|
+
test/testcases/responses/whois.dns.lu/registered.txt
|
263
279
|
test/testcases/responses/whois.domain-registry.nl/available.txt
|
264
280
|
test/testcases/responses/whois.domain-registry.nl/registered.txt
|
265
281
|
test/testcases/responses/whois.domainregistry.ie/available.txt
|
@@ -276,6 +292,8 @@ test/testcases/responses/whois.eu.org/registered.txt
|
|
276
292
|
test/testcases/responses/whois.eu/available.txt
|
277
293
|
test/testcases/responses/whois.eu/nameservers_with_ip.txt
|
278
294
|
test/testcases/responses/whois.eu/registered.txt
|
295
|
+
test/testcases/responses/whois.hkdnr.net.hk/available.txt
|
296
|
+
test/testcases/responses/whois.hkdnr.net.hk/registered.txt
|
279
297
|
test/testcases/responses/whois.iana.org/MULTIPLE.txt
|
280
298
|
test/testcases/responses/whois.iana.org/available.txt
|
281
299
|
test/testcases/responses/whois.iana.org/registered.txt
|
@@ -290,6 +308,10 @@ test/testcases/responses/whois.nic-se.se/nameservers_with_ip.txt
|
|
290
308
|
test/testcases/responses/whois.nic-se.se/registered.txt
|
291
309
|
test/testcases/responses/whois.nic.ac/available.txt
|
292
310
|
test/testcases/responses/whois.nic.ac/registered.txt
|
311
|
+
test/testcases/responses/whois.nic.af/available.txt
|
312
|
+
test/testcases/responses/whois.nic.af/registered.txt
|
313
|
+
test/testcases/responses/whois.nic.ag/available.txt
|
314
|
+
test/testcases/responses/whois.nic.ag/registered.txt
|
293
315
|
test/testcases/responses/whois.nic.asia/available.txt
|
294
316
|
test/testcases/responses/whois.nic.asia/registered.txt
|
295
317
|
test/testcases/responses/whois.nic.at/available.txt
|
@@ -340,6 +362,8 @@ test/testcases/responses/whois.nic.mu/ki/available.txt
|
|
340
362
|
test/testcases/responses/whois.nic.mu/ki/registered.txt
|
341
363
|
test/testcases/responses/whois.nic.mu/mu/available.txt
|
342
364
|
test/testcases/responses/whois.nic.mu/mu/registered.txt
|
365
|
+
test/testcases/responses/whois.nic.mx/available.txt
|
366
|
+
test/testcases/responses/whois.nic.mx/registered.txt
|
343
367
|
test/testcases/responses/whois.nic.name/available.txt
|
344
368
|
test/testcases/responses/whois.nic.name/registered.txt
|
345
369
|
test/testcases/responses/whois.nic.name/reserved.txt
|
data/Rakefile
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require 'rubygems'
|
5
|
-
require 'rake'
|
6
|
-
require 'echoe'
|
1
|
+
require "rubygems"
|
2
|
+
require "rake"
|
3
|
+
require "echoe"
|
7
4
|
begin
|
8
|
-
require
|
5
|
+
require "hanna/rdoctask"
|
9
6
|
hanna = false
|
10
7
|
rescue LoadError
|
11
|
-
require
|
8
|
+
require "rake/rdoctask"
|
12
9
|
hanna = true
|
13
10
|
end
|
14
11
|
|
12
|
+
$:.unshift(File.dirname(__FILE__) + "/lib")
|
13
|
+
require "whois"
|
14
|
+
|
15
15
|
# Common package properties
|
16
|
-
PKG_NAME = ENV[
|
17
|
-
PKG_VERSION = ENV[
|
18
|
-
RUBYFORGE_PROJECT =
|
16
|
+
PKG_NAME = ENV["PKG_NAME"] || Whois::GEM
|
17
|
+
PKG_VERSION = ENV["PKG_VERSION"] || Whois::VERSION
|
18
|
+
RUBYFORGE_PROJECT = "whois"
|
19
19
|
|
20
20
|
if ENV['SNAPSHOT'].to_i == 1
|
21
21
|
PKG_VERSION << "." << Time.now.utc.strftime("%Y%m%d%H%M%S")
|
22
22
|
end
|
23
|
-
|
24
|
-
|
23
|
+
|
24
|
+
|
25
25
|
Echoe.new(PKG_NAME, PKG_VERSION) do |p|
|
26
26
|
p.author = "Simone Carletti"
|
27
27
|
p.email = "weppos@weppos.net"
|
@@ -37,7 +37,7 @@ Echoe.new(PKG_NAME, PKG_VERSION) do |p|
|
|
37
37
|
p.need_zip = true
|
38
38
|
|
39
39
|
p.development_dependencies += ["rake 0.8.7",
|
40
|
-
"echoe 4.
|
40
|
+
"echoe 4.3",
|
41
41
|
"mocha 0.9.8"]
|
42
42
|
|
43
43
|
p.rdoc_options = []
|
@@ -53,7 +53,7 @@ task :console do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
begin
|
56
|
-
require
|
56
|
+
require "code_statistics"
|
57
57
|
desc "Show library's code statistics"
|
58
58
|
task :stats do
|
59
59
|
CodeStatistics.new(["Whois", "lib"],
|
data/lib/whois.rb
CHANGED
@@ -24,9 +24,9 @@ require 'whois/answer'
|
|
24
24
|
|
25
25
|
module Whois
|
26
26
|
|
27
|
-
NAME =
|
28
|
-
GEM =
|
29
|
-
AUTHORS = [
|
27
|
+
NAME = "Whois"
|
28
|
+
GEM = "whois"
|
29
|
+
AUTHORS = ["Simone Carletti <weppos@weppos.net>"]
|
30
30
|
|
31
31
|
|
32
32
|
# Queries the right whois server for <tt>qstring</tt> and returns
|
@@ -35,8 +35,8 @@ module Whois
|
|
35
35
|
class WhoisAero < Base
|
36
36
|
|
37
37
|
property_supported :status do
|
38
|
-
@status ||= if content_for_scanner =~ /Domain Status:(.*?)\n
|
39
|
-
$1
|
38
|
+
@status ||= if content_for_scanner =~ /Domain Status:(.*?)\n/
|
39
|
+
$1
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -50,19 +50,19 @@ module Whois
|
|
50
50
|
|
51
51
|
|
52
52
|
property_supported :created_on do
|
53
|
-
@created_on ||= if content_for_scanner =~ /Created On:(.*?)\n
|
53
|
+
@created_on ||= if content_for_scanner =~ /Created On:(.*?)\n/
|
54
54
|
Time.parse($1)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
property_supported :updated_on do
|
59
|
-
@updated_on ||= if content_for_scanner =~ /Updated On:(.*?)\n
|
59
|
+
@updated_on ||= if content_for_scanner =~ /Updated On:(.*?)\n/
|
60
60
|
Time.parse($1)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
64
|
property_supported :expires_on do
|
65
|
-
@expires_on ||= if content_for_scanner =~ /Expires On:(.*?)\n
|
65
|
+
@expires_on ||= if content_for_scanner =~ /Expires On:(.*?)\n/
|
66
66
|
Time.parse($1)
|
67
67
|
end
|
68
68
|
end
|
@@ -48,19 +48,19 @@ module Whois
|
|
48
48
|
|
49
49
|
|
50
50
|
property_supported :created_on do
|
51
|
-
@created_on ||= if content_for_scanner =~ /Created On:(.*?)\n
|
51
|
+
@created_on ||= if content_for_scanner =~ /Created On:(.*?)\n/
|
52
52
|
Time.parse($1)
|
53
53
|
end
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
property_supported :updated_on do
|
57
|
-
@updated_on ||= if content_for_scanner =~ /Last Updated On:(.*?)\n
|
57
|
+
@updated_on ||= if content_for_scanner =~ /Last Updated On:(.*?)\n/
|
58
58
|
Time.parse($1)
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
property_supported :expires_on do
|
63
|
-
@expires_on ||= if content_for_scanner =~ /Expiration Date:(.*?)\n
|
63
|
+
@expires_on ||= if content_for_scanner =~ /Expiration Date:(.*?)\n/
|
64
64
|
Time.parse($1)
|
65
65
|
end
|
66
66
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#
|
2
|
+
# = Ruby Whois
|
3
|
+
#
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Net
|
8
|
+
# Package:: Whois
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
require 'whois/answer/parser/base'
|
18
|
+
|
19
|
+
|
20
|
+
module Whois
|
21
|
+
class Answer
|
22
|
+
class Parser
|
23
|
+
|
24
|
+
#
|
25
|
+
# = whois.ai parser
|
26
|
+
#
|
27
|
+
# Parser for the whois.ai server.
|
28
|
+
#
|
29
|
+
# NOTE: This parser is just a stub and provides only a few basic methods
|
30
|
+
# to check for domain availability and get domain status.
|
31
|
+
# Please consider to contribute implementing missing methods.
|
32
|
+
# See WhoisNicIt parser for an explanation of all available methods
|
33
|
+
# and examples.
|
34
|
+
#
|
35
|
+
class WhoisAi < Base
|
36
|
+
|
37
|
+
property_supported :status do
|
38
|
+
if available?
|
39
|
+
:available
|
40
|
+
else
|
41
|
+
:registered
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
property_supported :available? do
|
46
|
+
@available ||= !!(content_for_scanner =~ /Domain (.+?) not registred/)
|
47
|
+
end
|
48
|
+
|
49
|
+
property_supported :registered? do
|
50
|
+
!available?
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
property_not_supported :created_on
|
55
|
+
|
56
|
+
property_not_supported :updated_on
|
57
|
+
|
58
|
+
property_not_supported :expires_on
|
59
|
+
|
60
|
+
|
61
|
+
property_supported :nameservers do
|
62
|
+
@nameservers ||= if content_for_scanner =~ /Nameservers\n((.+\n)+)\n/
|
63
|
+
$1.split("\n").select { |e| e =~ /Server Hostname/ }.map { |value| value.split(":").last.strip }
|
64
|
+
else
|
65
|
+
[]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#
|
2
|
+
# = Ruby Whois
|
3
|
+
#
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Net
|
8
|
+
# Package:: Whois
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
require 'whois/answer/parser/base'
|
18
|
+
|
19
|
+
|
20
|
+
module Whois
|
21
|
+
class Answer
|
22
|
+
class Parser
|
23
|
+
|
24
|
+
#
|
25
|
+
# = whois.dns.lu parser
|
26
|
+
#
|
27
|
+
# Parser for the whois.dns.lu server.
|
28
|
+
#
|
29
|
+
# NOTE: This parser is just a stub and provides only a few basic methods
|
30
|
+
# to check for domain availability and get domain status.
|
31
|
+
# Please consider to contribute implementing missing methods.
|
32
|
+
# See WhoisNicIt parser for an explanation of all available methods
|
33
|
+
# and examples.
|
34
|
+
#
|
35
|
+
class WhoisDnsLu < Base
|
36
|
+
|
37
|
+
property_supported :status do
|
38
|
+
@status ||= if content_for_scanner =~ /domaintype:\s+(.*)\n/
|
39
|
+
$1
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
property_supported :available? do
|
44
|
+
@available ||= !!(content_for_scanner =~ /% No such domain/)
|
45
|
+
end
|
46
|
+
|
47
|
+
property_supported :registered? do
|
48
|
+
!available?
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
property_supported :created_on do
|
53
|
+
@created_on ||= if content_for_scanner =~ /registered:\s+(.*)\n/
|
54
|
+
# Force the parser to use the dd/mm/yyyy format.
|
55
|
+
Time.utc(*$1.split("/").reverse)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
property_not_supported :updated_on
|
60
|
+
|
61
|
+
property_not_supported :expires_on
|
62
|
+
|
63
|
+
|
64
|
+
property_supported :nameservers do
|
65
|
+
@nameservers ||= content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#
|
2
|
+
# = Ruby Whois
|
3
|
+
#
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# Category:: Net
|
8
|
+
# Package:: Whois
|
9
|
+
# Author:: Simone Carletti <weppos@weppos.net>
|
10
|
+
# License:: MIT License
|
11
|
+
#
|
12
|
+
#--
|
13
|
+
#
|
14
|
+
#++
|
15
|
+
|
16
|
+
|
17
|
+
require 'whois/answer/parser/base'
|
18
|
+
|
19
|
+
|
20
|
+
module Whois
|
21
|
+
class Answer
|
22
|
+
class Parser
|
23
|
+
|
24
|
+
#
|
25
|
+
# = whois.hkdnr.net.hk parser
|
26
|
+
#
|
27
|
+
# Parser for the whois.hkdnr.net.hk server.
|
28
|
+
#
|
29
|
+
# NOTE: This parser is just a stub and provides only a few basic methods
|
30
|
+
# to check for domain availability and get domain status.
|
31
|
+
# Please consider to contribute implementing missing methods.
|
32
|
+
# See WhoisNicIt parser for an explanation of all available methods
|
33
|
+
# and examples.
|
34
|
+
#
|
35
|
+
class WhoisHkdnrNetHk < Base
|
36
|
+
|
37
|
+
property_supported :status do
|
38
|
+
@status ||= if available?
|
39
|
+
:available
|
40
|
+
else
|
41
|
+
:registered
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
property_supported :available? do
|
46
|
+
@available ||= (content_for_scanner.strip == "Domain Not Found")
|
47
|
+
end
|
48
|
+
|
49
|
+
property_supported :registered? do
|
50
|
+
!available?
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
property_supported :created_on do
|
55
|
+
@created_on ||= if content_for_scanner =~ /Domain Name Commencement Date:\s(.*?)\n/
|
56
|
+
Time.parse($1)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
property_not_supported :updated_on
|
61
|
+
|
62
|
+
property_supported :expires_on do
|
63
|
+
@expires_on ||= if content_for_scanner =~ /Expiry Date:\s(.*?)\n/
|
64
|
+
Time.parse($1)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
property_supported :nameservers do
|
70
|
+
@nameservers ||= if content_for_scanner =~ /Name Servers Information:\n\n((.+\n)+)\n/
|
71
|
+
$1.split("\n").map { |value| value.strip.downcase }
|
72
|
+
else
|
73
|
+
[]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|