whois 0.2.1 → 0.3.0
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 +10 -0
- data/EXAMPLES +75 -11
- data/NOTES +9 -0
- data/README +3 -0
- data/lib/whois.rb +81 -9
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
= Whois CHANGELOG
|
2
2
|
|
3
|
+
== 0.3.0
|
4
|
+
|
5
|
+
* Add possibility construct the Whois Object with a IPAddr object
|
6
|
+
|
7
|
+
* Add the host information when you search a whois with an Ipv4.
|
8
|
+
This information is optionnal. By default it's false.
|
9
|
+
For that the host is resolv, the second arg to Whois.new must be true
|
10
|
+
|
11
|
+
* Add request whois whith a host String.
|
12
|
+
|
3
13
|
== 0.2.1
|
4
14
|
|
5
15
|
* Fix bug in gem where the data/ipv4.yaml is not load
|
data/EXAMPLES
CHANGED
@@ -1,18 +1,82 @@
|
|
1
1
|
= Whois examples
|
2
2
|
|
3
|
-
== Whois request for IP 72.14.207.99
|
3
|
+
== Whois request for IP 72.14.207.99, with IP like a string
|
4
4
|
|
5
|
-
require 'rubygems'
|
6
|
-
require 'whois'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'whois'
|
7
7
|
|
8
|
-
w = Whois::Whois.new '72.14.207.99'
|
9
|
-
w.search_whois
|
8
|
+
w = Whois::Whois.new '72.14.207.99'
|
9
|
+
w.search_whois
|
10
10
|
|
11
|
-
# All return of request
|
12
|
-
w.all
|
11
|
+
# All return of request
|
12
|
+
w.all
|
13
13
|
|
14
|
-
# The ip return with object IPAddr
|
15
|
-
w.ip
|
14
|
+
# The ip return with object IPAddr
|
15
|
+
w.ip
|
16
16
|
|
17
|
-
# The server where the request has send
|
18
|
-
w.server
|
17
|
+
# The server where the request has send
|
18
|
+
w.server
|
19
|
+
|
20
|
+
# The host of this IPv4
|
21
|
+
w.host
|
22
|
+
|
23
|
+
== Whois request for IP 72.14.207.99, with IP like a IPAddr instance
|
24
|
+
|
25
|
+
require 'rubygems'
|
26
|
+
require 'whois'
|
27
|
+
require 'ipaddr'
|
28
|
+
|
29
|
+
ip = IPAddr.new '72.17.207.99'
|
30
|
+
w = Whois::Whois.new ip
|
31
|
+
w.search_whois
|
32
|
+
|
33
|
+
# All return of request
|
34
|
+
w.all
|
35
|
+
|
36
|
+
# The ip return with object IPAddr
|
37
|
+
w.ip
|
38
|
+
|
39
|
+
# The server where the request has send
|
40
|
+
w.server
|
41
|
+
|
42
|
+
# The host of this IPv4
|
43
|
+
w.host
|
44
|
+
|
45
|
+
== Whois request for IP 72.14.207.99 with resolv host
|
46
|
+
|
47
|
+
require 'rubygems'
|
48
|
+
require 'whois'
|
49
|
+
|
50
|
+
w = Whois::Whois.new '72.14.221.147', true
|
51
|
+
w.search_whois
|
52
|
+
|
53
|
+
# All return of request
|
54
|
+
w.all
|
55
|
+
|
56
|
+
# The ip return with object IPAddr
|
57
|
+
w.ip
|
58
|
+
|
59
|
+
# The server where the request has send
|
60
|
+
w.server
|
61
|
+
|
62
|
+
# The host of this IPv4
|
63
|
+
w.host #=> fg-in-f147.google.com
|
64
|
+
|
65
|
+
== Whois request for a Host
|
66
|
+
|
67
|
+
require 'rubygems'
|
68
|
+
require 'whois'
|
69
|
+
|
70
|
+
w = Whois::Whois.new 'fg-in-f147.google.com'
|
71
|
+
|
72
|
+
# All return of request
|
73
|
+
w.all
|
74
|
+
|
75
|
+
# The ip return with object IPAddr
|
76
|
+
w.ip
|
77
|
+
|
78
|
+
# The server where the request has send
|
79
|
+
w.server
|
80
|
+
|
81
|
+
# The host of this host
|
82
|
+
w.host #=> fg-in-f147.google.com
|
data/NOTES
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
= Whois Release Notes
|
2
2
|
|
3
|
+
== 0.3.0
|
4
|
+
|
5
|
+
Now you can create a Whois class with an object IPAddr (require 'ipaddr')
|
6
|
+
|
7
|
+
You can obtains the host name for your IP when you made a request Ipv4. This
|
8
|
+
resolv must be made if you put a true in second arguments for the initialize
|
9
|
+
|
10
|
+
You can too made a request Whois with a host, now
|
11
|
+
|
3
12
|
== 0.2.1
|
4
13
|
|
5
14
|
Release for fix bugs
|
data/README
CHANGED
@@ -18,6 +18,9 @@ If you are just starting, check out the EXAMPLES[link://files/EXAMPLES.html] fil
|
|
18
18
|
|
19
19
|
Copyright (c) 2007 by Cyril Mougel (cyril.mougel@gmail.com)
|
20
20
|
|
21
|
+
If you want more information on me see my blog (http://shingara.free.fr/blog),
|
22
|
+
it's in french, because my english is not really good :)
|
23
|
+
|
21
24
|
== License
|
22
25
|
|
23
26
|
This library is distributed under the GPL. Please see the LICENSE file.
|
data/lib/whois.rb
CHANGED
@@ -6,28 +6,70 @@ require 'ipaddr'
|
|
6
6
|
require 'yaml'
|
7
7
|
require 'server/server'
|
8
8
|
|
9
|
+
# Module for manage all Whois Class
|
9
10
|
module Whois
|
10
11
|
|
12
|
+
# Base exception of Whois
|
11
13
|
class WhoisException < Exception
|
12
14
|
end
|
13
15
|
|
14
|
-
|
16
|
+
# Exception of Whois who made report a bug
|
17
|
+
class WhoisExceptionError < WhoisException
|
18
|
+
def initialize (i)
|
19
|
+
WhoisException.initialize('Report a bug with error #{i} to http://rubyforge.org/projects/whois/')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Class to get all information about Host or IP with the Whois request
|
15
24
|
class Whois
|
16
25
|
|
26
|
+
Version = '0.3.0'
|
27
|
+
|
17
28
|
attr_reader :all
|
18
29
|
attr_reader :server
|
19
30
|
attr_reader :ip
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
31
|
+
attr_reader :host
|
32
|
+
attr_accessor :host_search
|
33
|
+
|
34
|
+
# Initialize with a request. The request must be an IPv4, or a host string
|
35
|
+
#
|
36
|
+
# The first params now is :
|
37
|
+
# * a string which a Ipv4 or a host. Ipv6 not implement now
|
38
|
+
# * A IPAddr instance only Ipv4 work now, no Ipv6
|
39
|
+
#
|
40
|
+
# A second param, host_search is optionnal. By default he is false.
|
41
|
+
# If this value is true, a resolv host is made for know the host to this IPv4
|
42
|
+
def initialize(request, host_search=false)
|
43
|
+
@host_search = host_search
|
44
|
+
if request.instance_of? IPAddr
|
45
|
+
if request.ipv4?
|
46
|
+
@ip = request
|
47
|
+
@server = server_ipv4
|
48
|
+
elsif request.ipv6?
|
49
|
+
raise WhoisException.new('not implement now, only Ipv4')
|
50
|
+
else
|
51
|
+
raise WhoisExceptionError.new(1)
|
52
|
+
end
|
53
|
+
elsif Resolv::IPv4::Regex =~ request
|
24
54
|
ipv4_init request
|
25
55
|
unless self.server
|
26
56
|
raise WhoisException.new("no server found for this IPv4 : #{request}")
|
27
57
|
end
|
28
|
-
|
29
|
-
|
58
|
+
elsif Resolv::IPv6::Regex =~ request
|
59
|
+
raise WhoisException.new('Ipv6 not implement now')
|
60
|
+
else
|
61
|
+
# Test if the request is an host or not
|
62
|
+
begin
|
63
|
+
ip = Resolv.getaddress request
|
64
|
+
@ip = IPAddr.new ip
|
65
|
+
@server = server_ipv4
|
66
|
+
@host = request
|
67
|
+
rescue Resolv::ResolvError
|
68
|
+
raise WhoisException.new('host #{request} has no DNS result')
|
69
|
+
end
|
30
70
|
end
|
71
|
+
|
72
|
+
search_host self.ip.to_s
|
31
73
|
end
|
32
74
|
|
33
75
|
# Ask of whois server
|
@@ -40,7 +82,21 @@ module Whois
|
|
40
82
|
@all = ret
|
41
83
|
end
|
42
84
|
|
43
|
-
|
85
|
+
|
86
|
+
# Search the host for this IPv4, if the value host_search is true, else host = nil
|
87
|
+
def search_host
|
88
|
+
begin
|
89
|
+
if @host_search
|
90
|
+
@host = Resolv.getname self.ip.to_s
|
91
|
+
else
|
92
|
+
@host = nil
|
93
|
+
end
|
94
|
+
rescue Resolv::ResolvError
|
95
|
+
@host = nil
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
44
100
|
|
45
101
|
# Init value for a ipv4 request
|
46
102
|
def ipv4_init (ip)
|
@@ -50,7 +106,8 @@ module Whois
|
|
50
106
|
|
51
107
|
# Define the server of Whois in IPV4 list of YAML
|
52
108
|
def server_ipv4
|
53
|
-
|
109
|
+
|
110
|
+
ipv4_list = YAML::load_file(File.dirname(__FILE__) + '/data/ipv4.yaml')
|
54
111
|
# Search good Server class for this IP
|
55
112
|
ipv4_list.each do |ip, server|
|
56
113
|
ip_range = IPAddr.new ip
|
@@ -100,6 +157,10 @@ if $0 == __FILE__
|
|
100
157
|
w = Whois::Whois.new '200.14.221.147'
|
101
158
|
puts w.search_whois
|
102
159
|
|
160
|
+
a = IPAddr.new '200.14.221.147'
|
161
|
+
w = Whois::Whois.new(a)
|
162
|
+
puts w.search_whois
|
163
|
+
|
103
164
|
# ip = Resolv.getname '72.14.221.147'
|
104
165
|
# puts ip
|
105
166
|
#
|
@@ -111,5 +172,16 @@ if $0 == __FILE__
|
|
111
172
|
#
|
112
173
|
w = Whois::Whois.new 'fg-in-f147.google.com'
|
113
174
|
puts w.search_whois
|
175
|
+
|
176
|
+
w = Whois::Whois.new '72.14.221.147', true
|
177
|
+
puts w.search_whois
|
178
|
+
puts w.host
|
179
|
+
|
180
|
+
puts '#################################'
|
181
|
+
|
182
|
+
w = Whois::Whois.new '72.14.221.147'
|
183
|
+
puts w.search_whois
|
184
|
+
puts w.host
|
185
|
+
|
114
186
|
# puts w.all
|
115
187
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: whois
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-03-
|
6
|
+
version: 0.3.0
|
7
|
+
date: 2007-03-22 00:00:00 +01:00
|
8
8
|
summary: Whois provides a library for request whois server
|
9
9
|
require_paths:
|
10
10
|
- lib
|