whois 1.0.9 → 1.0.10
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 +100 -87
- data/Manifest +15 -2
- data/lib/whois/answer/parser/whois.cira.ca.rb +2 -1
- data/lib/whois/answer/parser/whois.cnnic.cn.rb +73 -0
- data/lib/whois/answer/parser/whois.cnnic.net.cn.rb +3 -40
- data/lib/whois/answer/parser/whois.dns.be.rb +75 -0
- data/lib/whois/answer/parser/whois.domain-registry.nl.rb +2 -1
- data/lib/whois/answer/parser/whois.domreg.lt.rb +1 -1
- data/lib/whois/answer/parser/whois.educause.edu.rb +2 -1
- data/lib/whois/answer/parser/whois.eu.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.cd.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.ch.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.gl.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.ly.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.mu.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.nu.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.or.kr.rb +81 -0
- data/lib/whois/answer/parser/whois.nic.tl.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.uk.rb +2 -1
- data/lib/whois/answer/parser/whois.nic.ve.rb +2 -1
- data/lib/whois/answer/parser/whois.register.bg.rb +3 -2
- data/lib/whois/answer/parser/whois.samoanic.ws.rb +2 -1
- data/lib/whois/answer/parser/whois.za.net.rb +2 -1
- data/lib/whois/answer/parser/whois.za.org.rb +2 -1
- data/lib/whois/client.rb +0 -1
- data/lib/whois/server/adapters/base.rb +4 -3
- data/lib/whois/version.rb +1 -1
- data/test/answer/parser/whois.cnnic.cn_test.rb +73 -0
- data/test/answer/parser/whois.cnnic.net.cn_test.rb +2 -64
- data/test/answer/parser/whois.dns.be_test.rb +65 -0
- data/test/answer/parser/whois.domreg.lt_test.rb +7 -0
- data/test/answer/parser/whois.eu_test.rb +2 -2
- data/test/answer/parser/whois.nic.or.kr_test.rb +64 -0
- data/test/answer/parser/whois.register.bg_test.rb +7 -0
- data/test/list_tld +2 -2
- data/test/testcases/responses/UTF8.txt +5 -0
- data/test/testcases/responses/{whois.cnnic.net.cn → whois.cnnic.cn}/available.txt +0 -0
- data/test/testcases/responses/{whois.cnnic.net.cn → whois.cnnic.cn}/registered.txt +0 -0
- data/test/testcases/responses/whois.dns.be/available.txt +41 -0
- data/test/testcases/responses/whois.dns.be/registered.txt +66 -0
- data/test/testcases/responses/whois.domreg.lt/property_nameservers_with_ip.txt +32 -0
- data/test/testcases/responses/whois.nic.or.kr/available.txt +10 -0
- data/test/testcases/responses/whois.nic.or.kr/registered.txt +48 -0
- data/test/testcases/responses/whois.register.bg/property_nameservers_with_ip.txt +42 -0
- data/whois.gemspec +5 -5
- metadata +24 -5
|
@@ -74,8 +74,9 @@ module Whois
|
|
|
74
74
|
property_supported :nameservers do
|
|
75
75
|
@nameservers ||= if content_for_scanner =~ /Name servers:\n((?:\s+([^\s]+)\s+([^\s]+)\n)+)/
|
|
76
76
|
$1.split("\n").map { |value| value.split(" ").first }
|
|
77
|
+
else
|
|
78
|
+
[]
|
|
77
79
|
end
|
|
78
|
-
@nameservers ||= []
|
|
79
80
|
end
|
|
80
81
|
|
|
81
82
|
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.cnnic.cn parser
|
|
26
|
+
#
|
|
27
|
+
# Parser for the whois.cnnic.cn 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 WhoisCnnicCn < Base
|
|
36
|
+
|
|
37
|
+
property_supported :status do
|
|
38
|
+
@status ||= content_for_scanner.scan(/Domain Status:\s+(.*?)\n/).flatten
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
property_supported :available? do
|
|
42
|
+
@available ||= (content_for_scanner.strip == "no matching record")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
property_supported :registered? do
|
|
46
|
+
!available?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
property_supported :created_on do
|
|
51
|
+
@created_on ||= if content_for_scanner =~ /Registration Date:\s+(.*)\n/
|
|
52
|
+
Time.parse($1)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
property_not_supported :updated_on
|
|
57
|
+
|
|
58
|
+
property_supported :expires_on do
|
|
59
|
+
@expires_on ||= if content_for_scanner =~ /Expiration Date:\s+(.*)\n/
|
|
60
|
+
Time.parse($1)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
property_supported :nameservers do
|
|
66
|
+
@nameservers ||= content_for_scanner.scan(/Name Server:(.*)\n/).flatten.map(&:downcase)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
require 'whois/answer/parser/base'
|
|
18
|
+
require 'whois/answer/parser/whois.cnnic.cn.rb'
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
module Whois
|
|
@@ -25,47 +26,9 @@ module Whois
|
|
|
25
26
|
# = whois.cnnic.net.cn parser
|
|
26
27
|
#
|
|
27
28
|
# Parser for the whois.cnnic.net.cn server.
|
|
29
|
+
# Aliases the whois.cnnic.cn parser.
|
|
28
30
|
#
|
|
29
|
-
|
|
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 WhoisCnnicNetCn < Base
|
|
36
|
-
|
|
37
|
-
property_supported :status do
|
|
38
|
-
@status ||= content_for_scanner.scan(/Domain Status:\s+(.*?)\n/).flatten
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
property_supported :available? do
|
|
42
|
-
@available ||= (content_for_scanner.strip == "no matching record")
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
property_supported :registered? do
|
|
46
|
-
!available?
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
property_supported :created_on do
|
|
51
|
-
@created_on ||= if content_for_scanner =~ /Registration Date:\s+(.*)\n/
|
|
52
|
-
Time.parse($1)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
property_not_supported :updated_on
|
|
57
|
-
|
|
58
|
-
property_supported :expires_on do
|
|
59
|
-
@expires_on ||= if content_for_scanner =~ /Expiration Date:\s+(.*)\n/
|
|
60
|
-
Time.parse($1)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
property_supported :nameservers do
|
|
66
|
-
@nameservers ||= content_for_scanner.scan(/Name Server:(.*)\n/).flatten.map(&:downcase)
|
|
67
|
-
end
|
|
68
|
-
|
|
31
|
+
class WhoisCnnicNetCn < WhoisCnnicCn
|
|
69
32
|
end
|
|
70
33
|
|
|
71
34
|
end
|
|
@@ -0,0 +1,75 @@
|
|
|
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.be parser
|
|
26
|
+
#
|
|
27
|
+
# Parser for the whois.dns.be 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 WhoisDnsBe < Base
|
|
36
|
+
|
|
37
|
+
property_supported :status do
|
|
38
|
+
@status ||= if content_for_scanner =~ /Status:\s+(.+)\n/
|
|
39
|
+
$1
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
property_supported :available? do
|
|
44
|
+
@available ||= (status == "FREE")
|
|
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
|
+
Time.parse($1)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
property_not_supported :updated_on
|
|
59
|
+
|
|
60
|
+
property_not_supported :expires_on
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
property_supported :nameservers do
|
|
64
|
+
@nameservers ||= if content_for_scanner =~ /Nameservers:\n((.+\n)+)\n/
|
|
65
|
+
$1.split("\n").map(&:strip)
|
|
66
|
+
else
|
|
67
|
+
[]
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -61,7 +61,7 @@ module Whois
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
property_supported :nameservers do
|
|
64
|
-
@nameservers ||= content_for_scanner.scan(/Nameserver:\s+(.*)\n/).flatten.map(
|
|
64
|
+
@nameservers ||= content_for_scanner.scan(/Nameserver:\s+(.*)\n/).flatten.map { |value| value.split("\t").first }
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
end
|
|
@@ -67,8 +67,9 @@ module Whois
|
|
|
67
67
|
property_supported :nameservers do
|
|
68
68
|
@nameservers ||= if content_for_scanner =~ /Name servers:\n((.+\n)+)(?:\n|\z)/
|
|
69
69
|
$1.split("\n").map { |value| value.split("\t").first }.uniq
|
|
70
|
+
else
|
|
71
|
+
[]
|
|
70
72
|
end
|
|
71
|
-
@nameservers ||= []
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
end
|
|
@@ -71,8 +71,9 @@ module Whois
|
|
|
71
71
|
property_supported :nameservers do
|
|
72
72
|
@nameservers ||= if content_for_scanner =~ /Domain servers in listed order:(.*)Owner and Administrative Contact information for domains/m
|
|
73
73
|
$1.split.map(&:strip)
|
|
74
|
+
else
|
|
75
|
+
[]
|
|
74
76
|
end
|
|
75
|
-
@nameservers ||= []
|
|
76
77
|
end
|
|
77
78
|
|
|
78
79
|
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.nic.or.kr parser
|
|
26
|
+
#
|
|
27
|
+
# Parser for the whois.nic.or.kr 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 WhoisNicOrKz < 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 =~ /domain name is not registered/)
|
|
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 =~ /Registered Date\s+:\s+(.*)\n/
|
|
56
|
+
Time.parse($1)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
property_supported :updated_on do
|
|
61
|
+
@updated_on ||= if content_for_scanner =~ /Last updated Date\s+:\s+(.*)\n/
|
|
62
|
+
Time.parse($1)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
property_supported :expires_on do
|
|
67
|
+
@expires_on ||= if content_for_scanner =~ /Expiration Date\s+:\s+(.*)\n/
|
|
68
|
+
Time.parse($1)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
property_supported :nameservers do
|
|
74
|
+
@nameservers ||= content_for_scanner.scan(/\s+Host Name\s+:\s+(.*)\n/).flatten
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|