whois 3.2.0 → 3.2.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.
- data/CHANGELOG.md +20 -0
- data/lib/whois/core_ext.rb +3 -1
- data/lib/whois/core_ext/array/extract_options.rb +2 -2
- data/lib/whois/core_ext/array/wrap.rb +13 -16
- data/lib/whois/core_ext/object/blank.rb +105 -0
- data/lib/whois/record/contact.rb +14 -3
- data/lib/whois/record/parser/base_afilias.rb +3 -4
- data/lib/whois/record/parser/base_cocca.rb +14 -13
- data/lib/whois/record/parser/base_cocca2.rb +25 -32
- data/lib/whois/record/parser/base_shared2.rb +1 -1
- data/lib/whois/record/parser/base_shared3.rb +1 -1
- data/lib/whois/record/parser/base_whoisd.rb +5 -6
- data/lib/whois/record/parser/whois.aeda.net.ae.rb +6 -8
- data/lib/whois/record/parser/whois.ai.rb +6 -8
- data/lib/whois/record/parser/whois.ati.tn.rb +1 -1
- data/lib/whois/record/parser/whois.cctld.by.rb +0 -1
- data/lib/whois/record/parser/whois.centralnic.com.rb +2 -1
- data/lib/whois/record/parser/whois.cira.ca.rb +1 -1
- data/lib/whois/record/parser/whois.cnnic.cn.rb +1 -1
- data/lib/whois/record/parser/whois.comlaude.com.rb +1 -1
- data/lib/whois/record/parser/whois.denic.de.rb +1 -1
- data/lib/whois/record/parser/whois.domainregistry.ie.rb +1 -1
- data/lib/whois/record/parser/whois.dreamhost.com.rb +1 -1
- data/lib/whois/record/parser/whois.educause.edu.rb +1 -1
- data/lib/whois/record/parser/whois.enom.com.rb +1 -1
- data/lib/whois/record/parser/whois.gg.rb +4 -58
- data/lib/whois/record/parser/whois.godaddy.com.rb +1 -1
- data/lib/whois/record/parser/whois.iana.org.rb +1 -1
- data/lib/whois/record/parser/whois.ja.net.rb +6 -8
- data/lib/whois/record/parser/whois.je.rb +4 -58
- data/lib/whois/record/parser/whois.markmonitor.com.rb +1 -1
- data/lib/whois/record/parser/whois.networksolutions.com.rb +1 -1
- data/lib/whois/record/parser/whois.nic.am.rb +10 -11
- data/lib/whois/record/parser/whois.nic.as.rb +4 -44
- data/lib/whois/record/parser/whois.nic.asia.rb +1 -1
- data/lib/whois/record/parser/whois.nic.bo.rb +6 -8
- data/lib/whois/record/parser/whois.nic.cd.rb +4 -47
- data/lib/whois/record/parser/whois.nic.cz.rb +4 -4
- data/lib/whois/record/parser/whois.nic.fr.rb +1 -1
- data/lib/whois/record/parser/whois.nic.hn.rb +2 -3
- data/lib/whois/record/parser/whois.nic.hu.rb +1 -1
- data/lib/whois/record/parser/whois.nic.it.rb +1 -1
- data/lib/whois/record/parser/whois.nic.mg.rb +4 -64
- data/lib/whois/record/parser/whois.nic.sn.rb +1 -1
- data/lib/whois/record/parser/whois.nic.tr.rb +75 -8
- data/lib/whois/record/parser/whois.pnina.ps.rb +10 -58
- data/lib/whois/record/parser/whois.register.bg.rb +6 -8
- data/lib/whois/record/parser/whois.register.com.rb +1 -1
- data/lib/whois/record/parser/whois.rnids.rs.rb +1 -1
- data/lib/whois/record/parser/whois.smallregistry.net.rb +1 -1
- data/lib/whois/record/parser/whois.srs.net.nz.rb +1 -1
- data/lib/whois/record/parser/whois.sx.rb +1 -1
- data/lib/whois/record/parser/whois.tcinet.ru.rb +1 -1
- data/lib/whois/record/parser/whois.ua.rb +2 -2
- data/lib/whois/record/parser/whois.usp.ac.fj.rb +6 -8
- data/lib/whois/record/scanners/base_cocca2.rb +52 -0
- data/lib/whois/record/scanners/whois.ati.tn.rb +0 -2
- data/lib/whois/record/scanners/whois.audns.net.au.rb +0 -2
- data/lib/whois/record/scanners/whois.cctld.by.rb +5 -6
- data/lib/whois/record/scanners/whois.cira.ca.rb +0 -2
- data/lib/whois/record/scanners/whois.dns.hr.rb +0 -2
- data/lib/whois/record/scanners/whois.nc.rb +0 -2
- data/lib/whois/record/scanners/whois.registry.net.za.rb +20 -20
- data/lib/whois/record/scanners/whois.rnids.rs.rb +0 -2
- data/lib/whois/version.rb +1 -1
- data/whois.gemspec +3 -3
- metadata +4 -2
|
@@ -14,16 +14,14 @@ module Whois
|
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.aeda.net.ae parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.aeda.net.ae server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
19
|
+
# @note This parser is just a stub and provides only a few basic methods
|
|
20
|
+
# to check for domain availability and get domain status.
|
|
21
|
+
# Please consider to contribute implementing missing methods.
|
|
22
|
+
#
|
|
23
|
+
# @see Whois::Record::Parser::Example
|
|
24
|
+
# The Example parser for the list of all available methods.
|
|
27
25
|
#
|
|
28
26
|
class WhoisAedaNetAe < Base
|
|
29
27
|
|
|
@@ -14,16 +14,14 @@ module Whois
|
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.ai parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.ai server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
19
|
+
# @note This parser is just a stub and provides only a few basic methods
|
|
20
|
+
# to check for domain availability and get domain status.
|
|
21
|
+
# Please consider to contribute implementing missing methods.
|
|
22
|
+
#
|
|
23
|
+
# @see Whois::Record::Parser::Example
|
|
24
|
+
# The Example parser for the list of all available methods.
|
|
27
25
|
#
|
|
28
26
|
class WhoisAi < Base
|
|
29
27
|
|
|
@@ -37,6 +37,7 @@ module Whois
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
property_supported :status do
|
|
40
|
+
# OK, RENEW PERIOD, ...
|
|
40
41
|
Array.wrap(node("Status"))
|
|
41
42
|
end
|
|
42
43
|
|
|
@@ -78,7 +79,7 @@ module Whois
|
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
property_supported :admin_contacts do
|
|
81
|
-
build_contact("Admin", Whois::Record::Contact::
|
|
82
|
+
build_contact("Admin", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
|
|
82
83
|
end
|
|
83
84
|
|
|
84
85
|
property_supported :technical_contacts do
|
|
@@ -99,7 +99,7 @@ module Whois
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
property_supported :admin_contacts do
|
|
102
|
-
build_contact("Administrative contact", Whois::Record::Contact::
|
|
102
|
+
build_contact("Administrative contact", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
property_supported :technical_contacts do
|
|
@@ -77,7 +77,7 @@ module Whois
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
property_supported :admin_contacts do
|
|
80
|
-
build_contact("Administrative", Whois::Record::Contact::
|
|
80
|
+
build_contact("Administrative", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
property_not_supported :technical_contacts
|
|
@@ -62,7 +62,7 @@ module Whois
|
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
property_supported :admin_contacts do
|
|
65
|
-
build_contact('Administrative Contact:', Record::Contact::
|
|
65
|
+
build_contact('Administrative Contact:', Record::Contact::TYPE_ADMINISTRATIVE)
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
property_supported :technical_contacts do
|
|
@@ -85,7 +85,7 @@ module Whois
|
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
property_supported :admin_contacts do
|
|
88
|
-
build_contact("Administrative Contact", Whois::Record::Contact::
|
|
88
|
+
build_contact("Administrative Contact", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
property_supported :technical_contacts do
|
|
@@ -65,7 +65,7 @@ module Whois
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
property_supported :admin_contacts do
|
|
68
|
-
build_contact("Administrative Contact", Record::Contact::
|
|
68
|
+
build_contact("Administrative Contact", Record::Contact::TYPE_ADMINISTRATIVE)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
property_supported :technical_contacts do
|
|
@@ -7,73 +7,19 @@
|
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
require 'whois/record/parser/
|
|
10
|
+
require 'whois/record/parser/base_cocca'
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
module Whois
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.gg parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.gg server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
# Please consider to contribute implementing missing methods.
|
|
25
|
-
# See WhoisNicIt parser for an explanation of all available methods
|
|
26
|
-
# and examples.
|
|
19
|
+
# @see Whois::Record::Parser::Example
|
|
20
|
+
# The Example parser for the list of all available methods.
|
|
27
21
|
#
|
|
28
|
-
class WhoisGg <
|
|
29
|
-
|
|
30
|
-
property_supported :status do
|
|
31
|
-
if content_for_scanner =~ /Status:\s+(.+?)\n/
|
|
32
|
-
case $1.downcase
|
|
33
|
-
when "active"
|
|
34
|
-
:registered
|
|
35
|
-
when "not registered"
|
|
36
|
-
:available
|
|
37
|
-
else
|
|
38
|
-
Whois.bug!(ParserError, "Unknown status `#{$1}'.")
|
|
39
|
-
end
|
|
40
|
-
else
|
|
41
|
-
Whois.bug!(ParserError, "Unable to parse status.")
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
property_supported :available? do
|
|
46
|
-
(status == :available)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
property_supported :registered? do
|
|
50
|
-
!available?
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
property_supported :created_on do
|
|
55
|
-
if content_for_scanner =~ /Created:\s+(.+?)\n/
|
|
56
|
-
Time.parse($1)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
property_supported :updated_on do
|
|
61
|
-
if content_for_scanner =~ /Modified:\s+(.+?)\n/
|
|
62
|
-
Time.parse($1)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
property_not_supported :expires_on
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
property_supported :nameservers do
|
|
70
|
-
if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
|
|
71
|
-
$1.split("\n").map do |name|
|
|
72
|
-
Record::Nameserver.new(:name => name.strip)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
22
|
+
class WhoisGg < BaseCocca
|
|
77
23
|
end
|
|
78
24
|
|
|
79
25
|
end
|
|
@@ -67,7 +67,7 @@ module Whois
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
property_supported :admin_contacts do
|
|
70
|
-
build_contact('Administrative Contact:', Record::Contact::
|
|
70
|
+
build_contact('Administrative Contact:', Record::Contact::TYPE_ADMINISTRATIVE)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
property_supported :technical_contacts do
|
|
@@ -46,7 +46,7 @@ module Whois
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
property_supported :admin_contacts do
|
|
49
|
-
build_contact("administrative", Whois::Record::Contact::
|
|
49
|
+
build_contact("administrative", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
property_supported :technical_contacts do
|
|
@@ -14,16 +14,14 @@ module Whois
|
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.ja.net parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.ja.net server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
19
|
+
# @note This parser is just a stub and provides only a few basic methods
|
|
20
|
+
# to check for domain availability and get domain status.
|
|
21
|
+
# Please consider to contribute implementing missing methods.
|
|
22
|
+
#
|
|
23
|
+
# @see Whois::Record::Parser::Example
|
|
24
|
+
# The Example parser for the list of all available methods.
|
|
27
25
|
#
|
|
28
26
|
class WhoisJaNet < Base
|
|
29
27
|
|
|
@@ -7,73 +7,19 @@
|
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
require 'whois/record/parser/
|
|
10
|
+
require 'whois/record/parser/base_cocca'
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
module Whois
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.je parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.je server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
# Please consider to contribute implementing missing methods.
|
|
25
|
-
# See WhoisNicIt parser for an explanation of all available methods
|
|
26
|
-
# and examples.
|
|
19
|
+
# @see Whois::Record::Parser::Example
|
|
20
|
+
# The Example parser for the list of all available methods.
|
|
27
21
|
#
|
|
28
|
-
class WhoisJe <
|
|
29
|
-
|
|
30
|
-
property_supported :status do
|
|
31
|
-
if content_for_scanner =~ /Status:\s+(.+?)\n/
|
|
32
|
-
case $1.downcase
|
|
33
|
-
when "active"
|
|
34
|
-
:registered
|
|
35
|
-
when "not registered"
|
|
36
|
-
:available
|
|
37
|
-
else
|
|
38
|
-
Whois.bug!(ParserError, "Unknown status `#{$1}'.")
|
|
39
|
-
end
|
|
40
|
-
else
|
|
41
|
-
Whois.bug!(ParserError, "Unable to parse status.")
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
property_supported :available? do
|
|
46
|
-
(status == :available)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
property_supported :registered? do
|
|
50
|
-
!available?
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
property_supported :created_on do
|
|
55
|
-
if content_for_scanner =~ /Created:\s+(.+?)\n/
|
|
56
|
-
Time.parse($1)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
property_supported :updated_on do
|
|
61
|
-
if content_for_scanner =~ /Modified:\s+(.+?)\n/
|
|
62
|
-
Time.parse($1)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
property_not_supported :expires_on
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
property_supported :nameservers do
|
|
70
|
-
if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
|
|
71
|
-
$1.split("\n").map do |name|
|
|
72
|
-
Record::Nameserver.new(:name => name.strip)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
22
|
+
class WhoisJe < BaseCocca
|
|
77
23
|
end
|
|
78
24
|
|
|
79
25
|
end
|
|
@@ -63,7 +63,7 @@ module Whois
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
property_supported :admin_contacts do
|
|
66
|
-
build_contact('Administrative Contact:', Record::Contact::
|
|
66
|
+
build_contact('Administrative Contact:', Record::Contact::TYPE_ADMINISTRATIVE)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
property_supported :technical_contacts do
|
|
@@ -63,7 +63,7 @@ module Whois
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
property_supported :admin_contacts do
|
|
66
|
-
build_contact('Administrative Contact', Record::Contact::
|
|
66
|
+
build_contact('Administrative Contact', Record::Contact::TYPE_ADMINISTRATIVE)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
property_supported :technical_contacts do
|
|
@@ -14,25 +14,24 @@ module Whois
|
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.nic.am parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.nic.am server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
19
|
+
# @note This parser is just a stub and provides only a few basic methods
|
|
20
|
+
# to check for domain availability and get domain status.
|
|
21
|
+
# Please consider to contribute implementing missing methods.
|
|
22
|
+
#
|
|
23
|
+
# @see Whois::Record::Parser::Example
|
|
24
|
+
# The Example parser for the list of all available methods.
|
|
27
25
|
#
|
|
28
26
|
class WhoisNicAm < Base
|
|
29
27
|
|
|
30
28
|
property_supported :status do
|
|
31
29
|
if content_for_scanner =~ /\s+Status:\s+(.+)\n/
|
|
32
30
|
case $1.downcase
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
when "active"
|
|
32
|
+
:registered
|
|
33
|
+
else
|
|
34
|
+
Whois.bug!(ParserError, "Unknown status `#{$1}'.")
|
|
36
35
|
end
|
|
37
36
|
else
|
|
38
37
|
:available
|
|
@@ -7,59 +7,19 @@
|
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
require 'whois/record/parser/
|
|
10
|
+
require 'whois/record/parser/base_cocca'
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
module Whois
|
|
14
14
|
class Record
|
|
15
15
|
class Parser
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
# = whois.nic.as parser
|
|
19
|
-
#
|
|
20
17
|
# Parser for the whois.nic.as server.
|
|
21
18
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
# Please consider to contribute implementing missing methods.
|
|
25
|
-
# See WhoisNicIt parser for an explanation of all available methods
|
|
26
|
-
# and examples.
|
|
19
|
+
# @see Whois::Record::Parser::Example
|
|
20
|
+
# The Example parser for the list of all available methods.
|
|
27
21
|
#
|
|
28
|
-
class WhoisNicAs <
|
|
29
|
-
|
|
30
|
-
property_supported :status do
|
|
31
|
-
if available?
|
|
32
|
-
:available
|
|
33
|
-
else
|
|
34
|
-
:registered
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
property_supported :available? do
|
|
39
|
-
!!(content_for_scanner =~ /Domain Not Found/)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
property_supported :registered? do
|
|
43
|
-
!available?
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
property_not_supported :created_on
|
|
48
|
-
|
|
49
|
-
property_not_supported :updated_on
|
|
50
|
-
|
|
51
|
-
property_not_supported :expires_on
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
property_supported :nameservers do
|
|
55
|
-
if content_for_scanner =~ /Nameservers:\s((.+\n)+)\n/
|
|
56
|
-
$1.split("\n").reject { |value| value.strip.empty? }.map do |line|
|
|
57
|
-
line.strip =~ /(.+) \((.+)\)/
|
|
58
|
-
Record::Nameserver.new(:name => $1, :ipv4 => $2)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
22
|
+
class WhoisNicAs < BaseCocca
|
|
63
23
|
end
|
|
64
24
|
|
|
65
25
|
end
|