wmap 2.7.2 → 2.7.6
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 +4 -4
- data/README.md +10 -16
- data/bin/refresh +5 -5
- data/lib/wmap.rb +1 -1
- data/lib/wmap/site_tracker.rb +1 -4
- data/lib/wmap/{wp_tracker.rb → site_tracker/wp_tracker.rb} +41 -4
- data/lib/wmap/url_crawler.rb +1 -1
- data/version.txt +2 -2
- data/wmap.gemspec +2 -2
- metadata +4 -59
- data/ruby_whois_patches/base_cocca2.rb +0 -149
- data/ruby_whois_patches/kero.yachay.pe.rb +0 -120
- data/ruby_whois_patches/whois.PublicDomainRegistry.com.rb +0 -124
- data/ruby_whois_patches/whois.above.com.rb +0 -61
- data/ruby_whois_patches/whois.adamsnames.tc.rb +0 -107
- data/ruby_whois_patches/whois.aeda.net.ae.rb +0 -105
- data/ruby_whois_patches/whois.ai.rb +0 -112
- data/ruby_whois_patches/whois.arnes.si.rb +0 -121
- data/ruby_whois_patches/whois.ascio.com.rb +0 -91
- data/ruby_whois_patches/whois.cnnic.cn.rb +0 -123
- data/ruby_whois_patches/whois.corporatedomains.com.rb +0 -67
- data/ruby_whois_patches/whois.crsnic.net.rb +0 -108
- data/ruby_whois_patches/whois.denic.de.rb +0 -174
- data/ruby_whois_patches/whois.dk-hostmaster.dk.rb +0 -120
- data/ruby_whois_patches/whois.dns.be.rb +0 -134
- data/ruby_whois_patches/whois.dns.lu.rb +0 -129
- data/ruby_whois_patches/whois.dns.pl.rb +0 -150
- data/ruby_whois_patches/whois.dns.pt.rb +0 -119
- data/ruby_whois_patches/whois.domain.kg.rb +0 -126
- data/ruby_whois_patches/whois.domainregistry.my.rb +0 -123
- data/ruby_whois_patches/whois.domreg.lt.rb +0 -110
- data/ruby_whois_patches/whois.dot.tk.rb +0 -140
- data/ruby_whois_patches/whois.hkirc.hk.rb +0 -121
- data/ruby_whois_patches/whois.isnic.is.rb +0 -130
- data/ruby_whois_patches/whois.je.rb +0 -119
- data/ruby_whois_patches/whois.jprs.jp.rb +0 -137
- data/ruby_whois_patches/whois.kenic.or.ke.rb +0 -140
- data/ruby_whois_patches/whois.markmonitor.com.rb +0 -118
- data/ruby_whois_patches/whois.melbourneit.com.rb +0 -58
- data/ruby_whois_patches/whois.nic.as.rb +0 -96
- data/ruby_whois_patches/whois.nic.at.rb +0 -109
- data/ruby_whois_patches/whois.nic.ch.rb +0 -141
- data/ruby_whois_patches/whois.nic.cl.rb +0 -117
- data/ruby_whois_patches/whois.nic.ec.rb +0 -157
- data/ruby_whois_patches/whois.nic.im.rb +0 -120
- data/ruby_whois_patches/whois.nic.it.rb +0 -170
- data/ruby_whois_patches/whois.nic.lv.rb +0 -116
- data/ruby_whois_patches/whois.nic.ly.rb +0 -127
- data/ruby_whois_patches/whois.nic.mu.rb +0 -27
- data/ruby_whois_patches/whois.nic.mx.rb +0 -123
- data/ruby_whois_patches/whois.nic.net.sa.rb +0 -111
- data/ruby_whois_patches/whois.nic.or.kr.rb +0 -101
- data/ruby_whois_patches/whois.nic.tel.rb +0 -129
- data/ruby_whois_patches/whois.nic.tr.rb +0 -133
- data/ruby_whois_patches/whois.nic.us.rb +0 -129
- data/ruby_whois_patches/whois.nic.ve.rb +0 -135
- data/ruby_whois_patches/whois.norid.no.rb +0 -127
- data/ruby_whois_patches/whois.pandi.or.id.rb +0 -118
- data/ruby_whois_patches/whois.psi-usa.info.rb +0 -63
- data/ruby_whois_patches/whois.registro.br.rb +0 -109
- data/ruby_whois_patches/whois.registrygate.com.rb +0 -55
- data/ruby_whois_patches/whois.rrpproxy.net.rb +0 -61
- data/ruby_whois_patches/whois.sgnic.sg.rb +0 -130
- data/ruby_whois_patches/whois.srs.net.nz.rb +0 -166
- data/ruby_whois_patches/whois.tucows.com.rb +0 -70
- data/ruby_whois_patches/whois.twnic.net.tw.rb +0 -133
@@ -1,63 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Ruby Whois
|
3
|
-
#
|
4
|
-
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
-
#++
|
8
|
-
|
9
|
-
require 'whois/record/parser/base'
|
10
|
-
|
11
|
-
module Whois
|
12
|
-
class Record
|
13
|
-
class Parser
|
14
|
-
|
15
|
-
# Parser for the whois.psi-usa.info server, added by Yang Li 02/10/2013.
|
16
|
-
class WhoisPsiUsaInfo < Base
|
17
|
-
|
18
|
-
property_supported :admin_contacts do
|
19
|
-
build_contact("\\[admin\-c\\]", Whois::Record::Contact::TYPE_ADMIN)
|
20
|
-
end
|
21
|
-
|
22
|
-
property_supported :registrant_contacts do
|
23
|
-
build_contact("\\[owner\-c\\]", Whois::Record::Contact::TYPE_REGISTRANT)
|
24
|
-
end
|
25
|
-
|
26
|
-
property_supported :technical_contacts do
|
27
|
-
build_contact("\\[tech\-c\\]", Whois::Record::Contact::TYPE_TECHNICAL)
|
28
|
-
end
|
29
|
-
|
30
|
-
property_supported :billing_contacts do
|
31
|
-
build_contact("\\[zone\-c\\]", Whois::Record::Contact::TYPE_BILLING)
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def build_contact(element, type)
|
37
|
-
reg=Record::Contact.new(:type => type)
|
38
|
-
content_for_scanner.scan(/^#{element}(.+?):\s+(.+?)\n/).map do |entry|
|
39
|
-
reg["id"]=entry[1] if entry[0] =~ /handle/i
|
40
|
-
if entry[0] =~ /(fname|lname)/i
|
41
|
-
if reg["name"].nil?
|
42
|
-
reg["name"]=entry[1]
|
43
|
-
else
|
44
|
-
reg["name"]=reg["name"]+" "+entry[1]
|
45
|
-
end
|
46
|
-
end
|
47
|
-
reg["organization"]=entry[1] if entry[0]=~ /org/i
|
48
|
-
reg["address"]=entry[1] if entry[0]=~ /address/i
|
49
|
-
reg["city"]= entry[1] if entry[0]=~ /city/i
|
50
|
-
reg["zip"]=entry[1] if entry[0]=~ /pcode/i
|
51
|
-
reg["state"]=entry[1] if entry[0]=~ /state/i
|
52
|
-
reg["country_code"]=entry[1] if entry[0]=~ /country/i
|
53
|
-
reg["phone"]=entry[1] if entry[0]=~ /phone/i
|
54
|
-
reg["fax"]=entry[1] if entry[0]=~ /fax/i
|
55
|
-
reg["email"]=entry[1] if entry[0]=~ /email/i
|
56
|
-
end
|
57
|
-
return reg
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Ruby Whois
|
3
|
-
#
|
4
|
-
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
-
#++
|
8
|
-
|
9
|
-
|
10
|
-
require 'whois/record/parser/base'
|
11
|
-
|
12
|
-
|
13
|
-
module Whois
|
14
|
-
class Record
|
15
|
-
class Parser
|
16
|
-
|
17
|
-
#
|
18
|
-
# = whois.registro.br parser
|
19
|
-
#
|
20
|
-
# Parser for the whois.registro.br server.
|
21
|
-
#
|
22
|
-
# NOTE: This parser is just a stub and provides only a few basic methods
|
23
|
-
# to check for domain availability and get domain status.
|
24
|
-
# Please consider to contribute implementing missing methods.
|
25
|
-
# See WhoisNicIt parser for an explanation of all available methods
|
26
|
-
# and examples.
|
27
|
-
#
|
28
|
-
class WhoisRegistroBr < Base
|
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 =~ /No match for domain/)
|
40
|
-
end
|
41
|
-
|
42
|
-
property_supported :registered? do
|
43
|
-
!available?
|
44
|
-
end
|
45
|
-
|
46
|
-
property_supported :created_on do
|
47
|
-
if content_for_scanner =~ /created:\s+(.+?)(\s+#.+)?\n/
|
48
|
-
Time.parse($1)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
property_supported :updated_on do
|
53
|
-
if content_for_scanner =~ /changed:\s+(.+?)\n/
|
54
|
-
Time.parse($1)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
property_supported :expires_on do
|
59
|
-
if content_for_scanner =~ /expires:\s+(.+?)\n/
|
60
|
-
Time.parse($1)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
property_supported :nameservers do
|
65
|
-
content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |line|
|
66
|
-
name, ipv4 = line.strip.split(" ")
|
67
|
-
Record::Nameserver.new(:name => name, :ipv4 => ipv4)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
# The following methods are implemented by Yang Li on 03/04/2013
|
72
|
-
# ----------------------------------------------------------------------------
|
73
|
-
property_supported :domain do
|
74
|
-
return build_node("domain",content_for_scanner)
|
75
|
-
end
|
76
|
-
|
77
|
-
property_not_supported :domain_id
|
78
|
-
|
79
|
-
property_not_supported :registrar
|
80
|
-
|
81
|
-
property_supported :registrant_contacts do
|
82
|
-
build_contact("Registrant", Whois::Record::Contact::TYPE_REGISTRANT)
|
83
|
-
end
|
84
|
-
|
85
|
-
property_not_supported :admin_contacts
|
86
|
-
|
87
|
-
property_not_supported :technical_contacts
|
88
|
-
|
89
|
-
property_not_supported :billing_contacts
|
90
|
-
|
91
|
-
private
|
92
|
-
|
93
|
-
def build_contact(element, type)
|
94
|
-
reg=Record::Contact.new(:type => type)
|
95
|
-
reg["name"]=build_node("owner", content_for_scanner)
|
96
|
-
reg["organization"]=build_node("owner", content_for_scanner)
|
97
|
-
return reg
|
98
|
-
end
|
99
|
-
|
100
|
-
def build_node(element,context)
|
101
|
-
return $1.strip if context =~ /^#{element}:(.+)\n/i
|
102
|
-
end
|
103
|
-
# ----------------------------------------------------------------------------
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Ruby Whois
|
3
|
-
#
|
4
|
-
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
-
#++
|
8
|
-
|
9
|
-
require 'whois/record/parser/base'
|
10
|
-
|
11
|
-
module Whois
|
12
|
-
class Record
|
13
|
-
class Parser
|
14
|
-
|
15
|
-
# Parser for the whois.registrygate.com server, added by Yang Li 02/10/2013.
|
16
|
-
class WhoisRegistrygateCom < Base
|
17
|
-
|
18
|
-
property_supported :admin_contacts do
|
19
|
-
build_contact("admin-", Whois::Record::Contact::TYPE_ADMIN)
|
20
|
-
end
|
21
|
-
|
22
|
-
property_supported :registrant_contacts do
|
23
|
-
build_contact("owner-", Whois::Record::Contact::TYPE_REGISTRANT)
|
24
|
-
end
|
25
|
-
|
26
|
-
property_supported :technical_contacts do
|
27
|
-
build_contact("tech-", Whois::Record::Contact::TYPE_TECHNICAL)
|
28
|
-
end
|
29
|
-
|
30
|
-
property_not_supported :billing_contacts
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def build_contact(element, type)
|
35
|
-
reg=Record::Contact.new(:type => type)
|
36
|
-
content_for_scanner.scan(/^(#{element}.*):\s+(.+)\n/).map do |entry|
|
37
|
-
reg["id"]=entry[1] if entry[0] =~ /id/i
|
38
|
-
reg["name"]=entry[1] if entry[0] =~ /name/i
|
39
|
-
reg["organization"]=entry[1] if entry[0]=~ /org/i
|
40
|
-
reg["address"]=entry[1] if entry[0]=~ /address/i
|
41
|
-
reg["city"]= entry[1] if entry[0]=~ /city/i
|
42
|
-
reg["zip"]=entry[1] if entry[0]=~ /pcode/i
|
43
|
-
reg["state"]=entry[1] if entry[0]=~ /state/i
|
44
|
-
reg["country_code"]=entry[1] if entry[0]=~ /country/i
|
45
|
-
reg["phone"]=entry[1] if entry[0]=~ /phone/i
|
46
|
-
reg["fax"]=entry[1] if entry[0]=~ /fax/i
|
47
|
-
reg["email"]=entry[1] if entry[0]=~ /email/i
|
48
|
-
end
|
49
|
-
return reg
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Ruby Whois
|
3
|
-
#
|
4
|
-
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
-
#++
|
8
|
-
|
9
|
-
require 'whois/record/parser/base'
|
10
|
-
|
11
|
-
module Whois
|
12
|
-
class Record
|
13
|
-
class Parser
|
14
|
-
|
15
|
-
# Parser for the whois.rrpproxy.net server, added by Yang Li 02/10/2013.
|
16
|
-
class WhoisRrpproxyNet < Base
|
17
|
-
|
18
|
-
property_supported :admin_contacts do
|
19
|
-
build_contact("admin-", Whois::Record::Contact::TYPE_ADMIN)
|
20
|
-
end
|
21
|
-
|
22
|
-
property_supported :registrant_contacts do
|
23
|
-
build_contact("owner-", Whois::Record::Contact::TYPE_REGISTRANT)
|
24
|
-
end
|
25
|
-
|
26
|
-
property_supported :technical_contacts do
|
27
|
-
build_contact("tech-", Whois::Record::Contact::TYPE_TECHNICAL)
|
28
|
-
end
|
29
|
-
|
30
|
-
property_not_supported :billing_contacts
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def build_contact(element, type)
|
35
|
-
reg=Record::Contact.new(:type => type)
|
36
|
-
content_for_scanner.scan(/^(#{element}.*):\s*(.+)\n/).map do |entry|
|
37
|
-
reg["id"]=entry[1] if entry[0] =~ /contact/i
|
38
|
-
if entry[0] =~ /(fname|lname)/i
|
39
|
-
if reg["name"].nil?
|
40
|
-
reg["name"]=entry[1]
|
41
|
-
else
|
42
|
-
reg["name"]=reg["name"]+" "+entry[1]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
reg["organization"]=entry[1] if entry[0]=~ /organization/i
|
46
|
-
reg["address"]=entry[1] if entry[0]=~ /street/i
|
47
|
-
reg["city"]= entry[1] if entry[0]=~ /city/i
|
48
|
-
reg["zip"]=entry[1] if entry[0]=~ /zip/i
|
49
|
-
reg["state"]=entry[1] if entry[0]=~ /state/i
|
50
|
-
reg["country_code"]=entry[1] if entry[0]=~ /country/i
|
51
|
-
reg["phone"]=entry[1] if entry[0]=~ /phone/i
|
52
|
-
reg["fax"]=entry[1] if entry[0]=~ /fax/i
|
53
|
-
reg["email"]=entry[1] if entry[0]=~ /email/i
|
54
|
-
end
|
55
|
-
return reg
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,130 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Ruby Whois
|
3
|
-
#
|
4
|
-
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
-
#++
|
8
|
-
|
9
|
-
|
10
|
-
require 'whois/record/parser/base'
|
11
|
-
|
12
|
-
|
13
|
-
module Whois
|
14
|
-
class Record
|
15
|
-
class Parser
|
16
|
-
|
17
|
-
#
|
18
|
-
# = whois.sgnic.sg parser
|
19
|
-
#
|
20
|
-
# Parser for the whois.sgnic.sg server.
|
21
|
-
#
|
22
|
-
# NOTE: This parser is just a stub and provides only a few basic methods
|
23
|
-
# to check for domain availability and get domain status.
|
24
|
-
# Please consider to contribute implementing missing methods.
|
25
|
-
# See WhoisNicIt parser for an explanation of all available methods
|
26
|
-
# and examples.
|
27
|
-
#
|
28
|
-
class WhoisSgnicSg < Base
|
29
|
-
|
30
|
-
property_supported :status do
|
31
|
-
content_for_scanner.scan(/^\s+Domain Status:\s+(.+?)\n/).flatten
|
32
|
-
end
|
33
|
-
|
34
|
-
property_supported :available? do
|
35
|
-
!!(content_for_scanner.strip == "Domain Not Found")
|
36
|
-
end
|
37
|
-
|
38
|
-
property_supported :registered? do
|
39
|
-
!available?
|
40
|
-
end
|
41
|
-
|
42
|
-
|
43
|
-
property_supported :created_on do
|
44
|
-
if content_for_scanner =~ /^\s+Creation Date:\s+(.*)\n/
|
45
|
-
Time.parse($1)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# This method is modified by Yang on 01/15/2013
|
50
|
-
property_supported :updated_on do
|
51
|
-
if content_for_scanner =~ /^\s+Modified Date:\s+(.*)\n/
|
52
|
-
Time.parse($1)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
property_supported :expires_on do
|
57
|
-
if content_for_scanner =~ /^\s+Expiration Date:\s+(.*)\n/
|
58
|
-
Time.parse($1)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
property_supported :nameservers do
|
63
|
-
if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
|
64
|
-
values = case value = $1.downcase
|
65
|
-
# schema-1
|
66
|
-
when /^(?:\s+([\w.-]+)\n){2,}/
|
67
|
-
value.scan(/\s+([\w.-]+)\n/).map do |match|
|
68
|
-
{ :name => match[0] }
|
69
|
-
end
|
70
|
-
when /^(?:\s+([\w.-]+)\s+\((.+)\)\n){2,}/
|
71
|
-
value.scan(/\s+([\w.-]+)\s+\((.+)\)\n/).map do |match|
|
72
|
-
{ :name => match[0], :ipv4 => match[1] }
|
73
|
-
end
|
74
|
-
# schema-2
|
75
|
-
when /^(?:\s+([\w.-]+)){2,}/
|
76
|
-
value.strip.split(/\s+/).map do |name|
|
77
|
-
{ :name => name }
|
78
|
-
end
|
79
|
-
else
|
80
|
-
Whois.bug!(ParserError, "Unknown nameservers format `#{value}'")
|
81
|
-
end
|
82
|
-
|
83
|
-
values.map do |params|
|
84
|
-
Record::Nameserver.new(params)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
# The following methods are implemented by Yang on 1/15/2013
|
90
|
-
# ----------------------------------------------------------------------------
|
91
|
-
property_supported :domain do
|
92
|
-
return $1 if content_for_scanner =~ /Domain Name:\s+(.*)\s+\n/i
|
93
|
-
end
|
94
|
-
|
95
|
-
property_not_supported :domain_id
|
96
|
-
|
97
|
-
property_supported :registrar do
|
98
|
-
return $1 if content_for_scanner =~ /Registrar:\s+(.*)\s+\n/i
|
99
|
-
end
|
100
|
-
|
101
|
-
property_supported :admin_contacts do
|
102
|
-
build_contact("Administrative Contact", Whois::Record::Contact::TYPE_ADMIN)
|
103
|
-
end
|
104
|
-
|
105
|
-
property_supported :registrant_contacts do
|
106
|
-
build_contact("Registrant", Whois::Record::Contact::TYPE_REGISTRANT)
|
107
|
-
end
|
108
|
-
|
109
|
-
property_supported :technical_contacts do
|
110
|
-
build_contact("Technical Contact", Whois::Record::Contact::TYPE_TECHNICAL)
|
111
|
-
end
|
112
|
-
|
113
|
-
private
|
114
|
-
|
115
|
-
def build_contact(element, type)
|
116
|
-
reg=Record::Contact.new(:type => type)
|
117
|
-
values=$1 if content_for_scanner =~ /#{element}:\n\s*\n((.+\n)+)\n/
|
118
|
-
values.scan(/^\s+(.+):\s*(.+)\s*\n/).map do |entry|
|
119
|
-
reg["name"]=entry[1] if entry[0] =~ /Name/i
|
120
|
-
reg["email"]=entry[1] if entry[0]=~ /Email/i
|
121
|
-
end
|
122
|
-
return reg
|
123
|
-
end
|
124
|
-
# ----------------------------------------------------------------------------
|
125
|
-
|
126
|
-
end
|
127
|
-
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
@@ -1,166 +0,0 @@
|
|
1
|
-
#--
|
2
|
-
# Ruby Whois
|
3
|
-
#
|
4
|
-
# An intelligent pure Ruby WHOIS client and parser.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
-
#++
|
8
|
-
|
9
|
-
|
10
|
-
require 'whois/record/parser/base'
|
11
|
-
|
12
|
-
|
13
|
-
module Whois
|
14
|
-
class Record
|
15
|
-
class Parser
|
16
|
-
|
17
|
-
# Parser for the whois.srs.net.nz server.
|
18
|
-
#
|
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.
|
25
|
-
#
|
26
|
-
class WhoisSrsNetNz < Base
|
27
|
-
|
28
|
-
# @see http://dnc.org.nz/content/srs-whois-spec-1.0.html
|
29
|
-
property_supported :status do
|
30
|
-
if content_for_scanner =~ /query_status:\s(.+)\n/
|
31
|
-
case (s = $1.downcase)
|
32
|
-
when "200 active"
|
33
|
-
:registered
|
34
|
-
# The domain is no longer active but is in the period prior
|
35
|
-
# to being released for general registrations
|
36
|
-
when "210 pendingrelease"
|
37
|
-
:redemption
|
38
|
-
when "220 available"
|
39
|
-
:available
|
40
|
-
when "404 request denied"
|
41
|
-
:error
|
42
|
-
when /invalid characters/
|
43
|
-
:invalid
|
44
|
-
else
|
45
|
-
Whois.bug!(ParserError, "Unknown status `#{s}'.")
|
46
|
-
end
|
47
|
-
else
|
48
|
-
Whois.bug!(ParserError, "Unable to parse status.")
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
property_supported :available? do
|
53
|
-
status == :available
|
54
|
-
end
|
55
|
-
|
56
|
-
property_supported :registered? do
|
57
|
-
status == :registered || status == :redemption
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
property_supported :created_on do
|
62
|
-
if content_for_scanner =~ /domain_dateregistered:\s(.+)\n/
|
63
|
-
Time.parse($1)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
property_supported :updated_on do
|
68
|
-
if content_for_scanner =~ /domain_datelastmodified:\s(.+)\n/
|
69
|
-
Time.parse($1)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
property_supported :expires_on do
|
74
|
-
if content_for_scanner =~ /domain_datebilleduntil:\s(.+)\n/
|
75
|
-
Time.parse($1)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
property_supported :nameservers do
|
80
|
-
content_for_scanner.scan(/ns_name_[\d]+:\s(.+)\n/).flatten.map do |name|
|
81
|
-
Record::Nameserver.new(:name => name)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# Checks whether the response has been throttled.
|
86
|
-
#
|
87
|
-
# @return [Boolean]
|
88
|
-
#
|
89
|
-
# @example
|
90
|
-
# query_status: 440 Request Denied
|
91
|
-
#
|
92
|
-
def response_throttled?
|
93
|
-
cached_properties_fetch(:response_throttled?) do
|
94
|
-
!!(content_for_scanner =~ /^query_status: 440 Request Denied/)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
# NEWPROPERTY
|
99
|
-
def valid?
|
100
|
-
cached_properties_fetch(:valid?) do
|
101
|
-
!invalid?
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
# NEWPROPERTY
|
106
|
-
def invalid?
|
107
|
-
cached_properties_fetch(:invalid?) do
|
108
|
-
status == :invalid
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
# The following methods are implemented by Yang Li on 01/24/2013
|
113
|
-
# ----------------------------------------------------------------------------
|
114
|
-
property_supported :domain do
|
115
|
-
return $1 if content_for_scanner =~ /domain_name:\s+(.*)\n/i
|
116
|
-
end
|
117
|
-
|
118
|
-
property_not_supported :domain_id
|
119
|
-
|
120
|
-
property_supported :registrar do
|
121
|
-
reg=Record::Registrar.new
|
122
|
-
content_for_scanner.scan(/^registrar_(.+):\s+(.+)\n/).map do |entry|
|
123
|
-
reg["name"] = entry[1] if entry[0] =~ /name/i
|
124
|
-
reg["organization"] = entry[1] if entry[0] =~ /name/i
|
125
|
-
reg["id"] = entry[1] if entry[0] =~ /phone/i
|
126
|
-
reg["url"] = entry[1] if entry[0] =~ /email/i
|
127
|
-
end
|
128
|
-
return reg
|
129
|
-
end
|
130
|
-
|
131
|
-
property_supported :registrant_contacts do
|
132
|
-
build_contact("registrant_", Whois::Record::Contact::TYPE_REGISTRANT)
|
133
|
-
end
|
134
|
-
|
135
|
-
property_supported :admin_contacts do
|
136
|
-
build_contact("admin_", Whois::Record::Contact::TYPE_ADMIN)
|
137
|
-
end
|
138
|
-
|
139
|
-
property_supported :technical_contacts do
|
140
|
-
build_contact("technical_", Whois::Record::Contact::TYPE_TECHNICAL)
|
141
|
-
end
|
142
|
-
|
143
|
-
property_not_supported :billing_contacts
|
144
|
-
|
145
|
-
private
|
146
|
-
|
147
|
-
def build_contact(element, type)
|
148
|
-
reg=Record::Contact.new(:type => type)
|
149
|
-
content_for_scanner.scan(/^#{element}(.+):\s+(.+)\n/).map do |entry|
|
150
|
-
reg["name"]=entry[1] if entry[0] =~ /name/i
|
151
|
-
reg["organization"]=entry[1] if entry[0]=~ /name/i
|
152
|
-
reg["address"]=entry[1] if entry[0]=~ /address1/i
|
153
|
-
reg["city"]= entry[1] if entry[0]=~ /city/i
|
154
|
-
reg["country"]=entry[1] if entry[0]=~ /country/i
|
155
|
-
reg["phone"]=entry[1] if entry[0]=~ /phone/i
|
156
|
-
reg["fax"]=entry[1] if entry[0]=~ /fax/i
|
157
|
-
reg["email"]=entry[1] if entry[0]=~ /email/i
|
158
|
-
end
|
159
|
-
return reg
|
160
|
-
end
|
161
|
-
# ----------------------------------------------------------------------------
|
162
|
-
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|