dnsbl-client 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +24 -0
- data/bin/dnsbl-client +26 -0
- data/lib/dnsbl-client.rb +1 -0
- data/lib/dnsbl-client/dnsbl-client.rb +83 -0
- data/lib/dnsbl-client/dnsbl.yaml +207 -0
- data/test/helper.rb +18 -0
- data/test/test_dnsbl-client.rb +14 -0
- metadata +157 -0
- metadata.gz.sig +0 -0
data.tar.gz.sig
ADDED
Binary file
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Chris Lee
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= dnsbl-client
|
2
|
+
|
3
|
+
This library queries DNS Blacklists for listings. Currently this only does IP lookups, but the next version will handle domains.
|
4
|
+
|
5
|
+
require "dnsbl-client"
|
6
|
+
c = DNSBL::Client.new
|
7
|
+
c.lookup("203.150.14.85")
|
8
|
+
=> [#<struct DNSBL::DNSBLResult dnsbl="UCEPROTECT1", query="85.14.150.203.dnsbl-1.uceprotect.net", result="127.0.0.2", meaning="Blacklisted", timing=0.0247988700866699>, #<struct DNSBL::DNSBLResult dnsbl="BARRACUDA", query="85.14.150.203.b.barracudacentral.org", result="127.0.0.2", meaning="Listed", timing=0.0266849994659424>]
|
9
|
+
|
10
|
+
== Contributing to dnsbl-client
|
11
|
+
|
12
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
13
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
14
|
+
* Fork the project
|
15
|
+
* Start a feature/bugfix branch
|
16
|
+
* Commit and push until you are happy with your contribution
|
17
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
18
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
19
|
+
|
20
|
+
== Copyright
|
21
|
+
|
22
|
+
Copyright (c) 2011 Chris Lee. See LICENSE.txt for
|
23
|
+
further details.
|
24
|
+
|
data/bin/dnsbl-client
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'dnsbl-client'
|
3
|
+
|
4
|
+
c = DNSBL::Client.new
|
5
|
+
if ARGV.length > 0
|
6
|
+
c.lookup(ARGV).each do |res|
|
7
|
+
sep = ""
|
8
|
+
res.members.each do |member|
|
9
|
+
print sep
|
10
|
+
print res[member]
|
11
|
+
sep = "\t"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
else
|
15
|
+
$stdin.each_line do |ip|
|
16
|
+
ip.chomp!
|
17
|
+
c.lookup(ip).each do |res|
|
18
|
+
sep = ""
|
19
|
+
res.members.each do |member|
|
20
|
+
print sep
|
21
|
+
print res[member]
|
22
|
+
sep = "\t"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/dnsbl-client.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'dnsbl-client/dnsbl-client'
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# DESCRIPTION: is a module that queries dnsbls. The configuration is in a YAML file.
|
2
|
+
require 'resolv'
|
3
|
+
require 'socket'
|
4
|
+
require 'thread'
|
5
|
+
require 'yaml'
|
6
|
+
|
7
|
+
module DNSBL
|
8
|
+
class DNSBLResult < Struct.new(:dnsbl,:query,:result,:meaning,:timing); end
|
9
|
+
class Client
|
10
|
+
def initialize(configfile = File.dirname(__FILE__)+"/dnsbl.yaml")
|
11
|
+
@dnsbls = YAML.load(File.open(configfile).read)
|
12
|
+
nameservers = Resolv::DNS::Config.new.nameserver_port
|
13
|
+
sock = UDPSocket.new
|
14
|
+
sock.connect(nameservers[0][0],nameservers[0][1])
|
15
|
+
@sockets = [sock]
|
16
|
+
@socket_index = 0
|
17
|
+
end
|
18
|
+
def add_dnsbl(name,domain,type='ip',codes={"0"=>"OK","127.0.0.2"=>"Blacklisted"})
|
19
|
+
@dnsbls[name] = codes
|
20
|
+
@dnsbls[name]['domain'] = domain
|
21
|
+
@dnsbls[name]['type'] = type
|
22
|
+
end
|
23
|
+
def dnsbls
|
24
|
+
@dnsbls.keys
|
25
|
+
end
|
26
|
+
def _encode_query(ip,domain)
|
27
|
+
revip = ip.split(/\./).reverse.join(".")
|
28
|
+
lookup = "#{revip}.#{domain}"
|
29
|
+
txid = lookup.sum
|
30
|
+
message = Resolv::DNS::Message.new(txid)
|
31
|
+
message.rd = 1
|
32
|
+
message.add_question(lookup,Resolv::DNS::Resource::IN::A)
|
33
|
+
message.encode
|
34
|
+
end
|
35
|
+
def _decode_response(buf)
|
36
|
+
reply = Resolv::DNS::Message.decode(buf)
|
37
|
+
results = []
|
38
|
+
reply.each_answer do |name,ttl,data|
|
39
|
+
if name.to_s =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(.+)$/
|
40
|
+
ip = [$4,$3,$2,$1].join(".")
|
41
|
+
domain = $5
|
42
|
+
@dnsbls.each do |dnsblname,config|
|
43
|
+
if domain == config['domain']
|
44
|
+
meaning = config[data.address.to_s] || data.address.to_s
|
45
|
+
results << DNSBLResult.new(dnsblname,name.to_s,data.address.to_s,meaning,Time.now.to_f - @starttime)
|
46
|
+
break
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
results
|
52
|
+
end
|
53
|
+
def lookup(ip)
|
54
|
+
ips = ip
|
55
|
+
if ip.is_a? String
|
56
|
+
ips = [ip]
|
57
|
+
end
|
58
|
+
results = []
|
59
|
+
ips.each do |ip|
|
60
|
+
sent = 0
|
61
|
+
@starttime = Time.now.to_f
|
62
|
+
@dnsbls.each do |name,config|
|
63
|
+
next unless config['type'] == 'ip'
|
64
|
+
msg = _encode_query(ip,config['domain'])
|
65
|
+
@sockets[@socket_index].send(msg,0)
|
66
|
+
@socket_index += 1
|
67
|
+
@socket_index %= @sockets.length
|
68
|
+
sent += 1
|
69
|
+
end
|
70
|
+
while sent > 0
|
71
|
+
r,_,_ = IO.select(@sockets,nil,nil,1.5)
|
72
|
+
break unless r
|
73
|
+
r.each do |s|
|
74
|
+
response = _decode_response(s.recv(4096))
|
75
|
+
results += response
|
76
|
+
sent -= 1
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
results
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,207 @@
|
|
1
|
+
---
|
2
|
+
VIRBL:
|
3
|
+
domain: virbl.dnsbl.bit.nl
|
4
|
+
type: ip
|
5
|
+
"0": OK
|
6
|
+
127.0.0.2: List of malware or phishing email sources
|
7
|
+
SPAMHAUS:
|
8
|
+
127.0.0.3: Illegal 3rd party exploits, including proxies, worms and trojan exploits
|
9
|
+
127.0.0.4: Illegal 3rd party exploits, including proxies, worms and trojan exploits
|
10
|
+
127.0.0.5: Illegal 3rd party exploits, including proxies, worms and trojan exploits
|
11
|
+
127.0.0.6: Illegal 3rd party exploits, including proxies, worms and trojan exploits
|
12
|
+
domain: zen.spamhaus.org
|
13
|
+
type: ip
|
14
|
+
"0": OK
|
15
|
+
127.0.0.2: Direct UBE sources, verified spam services and ROKSO spammers
|
16
|
+
127.0.0.10: ISP Maintained Policy Block List
|
17
|
+
127.0.0.11: SpamHaus Maintained Policy Block List
|
18
|
+
URIBL:
|
19
|
+
127.0.0.4: Address found in UBE/UCE, and probably honour opt-out requests
|
20
|
+
domain: multi.uribl.com
|
21
|
+
type: ip
|
22
|
+
"0": OK
|
23
|
+
127.0.0.8: Address not listed on black and are either very young (domain age via whois), or use whois privacy features to protect their identity.
|
24
|
+
127.0.0.2: Address belonging to and used by spammers
|
25
|
+
SURBL:
|
26
|
+
127.0.0.64: jwSpamSpy + Prolocation data source
|
27
|
+
127.0.0.32: AbuseButler spamvertised sites
|
28
|
+
127.0.0.4: sa-blacklist and other sources
|
29
|
+
domain: multi.surbl.org
|
30
|
+
type: ip
|
31
|
+
"0": OK
|
32
|
+
127.0.0.8: Phishing data source
|
33
|
+
127.0.0.16: Outblaze spamvertised sites
|
34
|
+
127.0.0.2: SpamCop message-body URI domains
|
35
|
+
NJABL:
|
36
|
+
127.0.0.3: Dial-up/dynamic IP range
|
37
|
+
127.0.0.4: Spam source
|
38
|
+
127.0.0.5: Multi-stage open relays
|
39
|
+
domain: dnsbl.njabl.org
|
40
|
+
type: ip
|
41
|
+
"0": OK
|
42
|
+
127.0.0.8: Insecure CGI web server, possible spam source
|
43
|
+
127.0.0.9: Open proxy servers
|
44
|
+
127.0.0.2: Open relay
|
45
|
+
SPAMCOP:
|
46
|
+
domain: bl.spamcop.net
|
47
|
+
type: ip
|
48
|
+
"0": OK
|
49
|
+
127.0.0.2: Spam source
|
50
|
+
SORBS:
|
51
|
+
127.0.0.3: List of Open SOCKS Proxy Servers
|
52
|
+
127.0.0.10: List of Dial Up Users
|
53
|
+
127.0.0.11: List of domain names where the A or MX records point to bad address space
|
54
|
+
127.0.0.4: List of Misc Open Proxy Servers
|
55
|
+
127.0.0.12: List of domain names where the owners have indicated no mail should ever be sent with these domains
|
56
|
+
127.0.0.5: List of Open SMTP Relays
|
57
|
+
127.0.0.6: List of Spam Sources
|
58
|
+
domain: dnsbl.sorbs.net
|
59
|
+
127.0.0.7: List of web (WWW) server which have spammer abused vulnerabilities (e.g. FormMail scripts)
|
60
|
+
type: ip
|
61
|
+
"0": OK
|
62
|
+
127.0.0.8: List of List of hosts demanding they are never tested by SORBS
|
63
|
+
127.0.0.9: List of Botnet/DDoS Zombies
|
64
|
+
127.0.0.2: List of Open HTTP Proxy Servers
|
65
|
+
AHBL:
|
66
|
+
127.0.0.20: Blog/Wiki/Comment Spammer
|
67
|
+
127.0.0.3: Open Proxy
|
68
|
+
127.0.0.10: Shoot On Sight
|
69
|
+
127.0.0.11: Non-RFC Compliant (missing postmaster or abuse)
|
70
|
+
127.0.0.4: Spam Source
|
71
|
+
127.0.0.12: Does not properly handle 5xx errors
|
72
|
+
127.0.0.5: Provisional Spam Source Listing block (will be removed if spam stops)
|
73
|
+
127.0.0.127: Other
|
74
|
+
127.0.0.13: Other Non-RFC Compliant
|
75
|
+
127.0.0.6: Formmail Spam
|
76
|
+
domain: dnsbl.ahbl.org
|
77
|
+
127.0.0.14: Compromised System => DDoS
|
78
|
+
127.0.0.7: Spam Supporter
|
79
|
+
type: ip
|
80
|
+
"0": OK
|
81
|
+
127.0.0.15: Compromised System => Relay
|
82
|
+
127.0.0.8: Spam Supporter (indirect)
|
83
|
+
127.0.0.16: Compromised System => Autorooter/Scanner
|
84
|
+
127.0.0.9: End User (non mail system)
|
85
|
+
127.0.0.17: Compromised System => Worm or mass mailing virus
|
86
|
+
127.0.0.18: Compromised System => Other virus
|
87
|
+
127.0.0.19: Open Proxy
|
88
|
+
127.0.0.2: Open Relay
|
89
|
+
DRONEBL:
|
90
|
+
domain: dnsbl.dronebl.org
|
91
|
+
type: ip
|
92
|
+
"0": OK
|
93
|
+
127.0.0.1: Host listed in DroneBL
|
94
|
+
127.0.0.2: Sample
|
95
|
+
127.0.0.3: IRC Drone
|
96
|
+
127.0.0.5: Bottler
|
97
|
+
127.0.0.6: Unknown spambot or drone
|
98
|
+
127.0.0.7: DDOS Drone
|
99
|
+
127.0.0.8: SOCKS Proxy
|
100
|
+
127.0.0.9: HTTP Proxy
|
101
|
+
127.0.0.10: ProxyChain
|
102
|
+
127.0.0.13: Brute force attackers
|
103
|
+
127.0.0.14: Open Wingate Proxy
|
104
|
+
127.0.0.15: Compromised router / gateway
|
105
|
+
127.0.0.255: Unknown
|
106
|
+
BARRACUDA:
|
107
|
+
domain: b.barracudacentral.org
|
108
|
+
type: ip
|
109
|
+
"0": OK
|
110
|
+
127.0.0.2: Listed
|
111
|
+
DRONE_ABUSE_CH:
|
112
|
+
domain: drone.abuse.ch
|
113
|
+
type: ip
|
114
|
+
"0": OK
|
115
|
+
127.0.0.2: Spam related FastFlux Bot
|
116
|
+
127.0.0.3: Malware related FastFlux Bot
|
117
|
+
127.0.0.4: Phish related FastFlux Bot
|
118
|
+
127.0.0.5: Scam related FastFlux Bot
|
119
|
+
HTTPBL_ABUSE_CH:
|
120
|
+
domain: httpbl.abuse.ch
|
121
|
+
type: ip
|
122
|
+
"0": OK
|
123
|
+
127.0.0.2: Hacking activities
|
124
|
+
127.0.0.3: Hijacked server automated scanning drone
|
125
|
+
127.0.0.4: Referrer spam
|
126
|
+
SPAM_ABUSE_CH:
|
127
|
+
domain: spam.abuse.ch
|
128
|
+
type: ip
|
129
|
+
0: OK
|
130
|
+
127.0.0.1: Sends spam to spamtrap
|
131
|
+
MAILSHELL:
|
132
|
+
domain: dnsbl.mailshell.net
|
133
|
+
type: ip
|
134
|
+
0: OK
|
135
|
+
127.0.0.2: Blacklisted
|
136
|
+
127.0.0.188: Blacklisted
|
137
|
+
127.0.0.190: Blacklisted
|
138
|
+
CBL:
|
139
|
+
domain: cbl.abuseat.org
|
140
|
+
type: ip
|
141
|
+
0: OK
|
142
|
+
127.0.0.2: Blacklisted
|
143
|
+
RHSBL:
|
144
|
+
domain: rhsbl.ahbl.org
|
145
|
+
type: domain
|
146
|
+
0: OK
|
147
|
+
127.0.0.2: Blacklisted
|
148
|
+
FIVETENSG:
|
149
|
+
domain: blackholes.five-ten-sg.com
|
150
|
+
type: ip
|
151
|
+
127.0.0.2: Spam
|
152
|
+
127.0.0.3: Dialup
|
153
|
+
127.0.0.4: Bulk
|
154
|
+
127.0.0.5: Multistage
|
155
|
+
127.0.0.6: Singlestage
|
156
|
+
127.0.0.7: Spam-support
|
157
|
+
127.0.0.8: Webform
|
158
|
+
127.0.0.9: Misc
|
159
|
+
127.0.0.10: klez
|
160
|
+
127.0.0.11: tcpa
|
161
|
+
127.0.0.12: free
|
162
|
+
127.0.0.13: cr
|
163
|
+
INPS:
|
164
|
+
domain: dnsbl.inps.de
|
165
|
+
type: ip
|
166
|
+
127.0.0.2: Blacklisted
|
167
|
+
MANITU:
|
168
|
+
domain: ix.dnsbl.manitu.net
|
169
|
+
type: ip
|
170
|
+
127.0.0.2: Blacklisted
|
171
|
+
NOMOREFUN:
|
172
|
+
domain: no-more-funn.moensted.dk
|
173
|
+
type: ip
|
174
|
+
127.0.0.2: Direct spam sources
|
175
|
+
127.0.0.3: Dynamic IP or generic rDNS.
|
176
|
+
127.0.0.4: Bulk mailers
|
177
|
+
127.0.0.5: Multi stage open relay
|
178
|
+
127.0.0.6: single stage open relay
|
179
|
+
127.0.0.7: Ignoring complaints of spamming by customers
|
180
|
+
127.0.0.8: Please update your formmail.pl script
|
181
|
+
127.0.0.9: See http://moensted.dk/spam/no-more-funn/?addr=$
|
182
|
+
127.0.0.10: posible open proxies
|
183
|
+
127.0.0.11: Please stop testing our servers
|
184
|
+
SPAMCANNIBAL:
|
185
|
+
domain: bl.spamcannibal.org
|
186
|
+
type: ip
|
187
|
+
127.0.0.2: Blacklisted
|
188
|
+
UCEPROTECT1:
|
189
|
+
domain: dnsbl-1.uceprotect.net
|
190
|
+
type: ip
|
191
|
+
127.0.0.2: Blacklisted
|
192
|
+
UCEPROTECT2:
|
193
|
+
domain: dnsbl-2.uceprotect.net
|
194
|
+
type: ip
|
195
|
+
127.0.0.2: Blacklisted
|
196
|
+
UCEPROTECT3:
|
197
|
+
domain: dnsbl-3.uceprotect.net
|
198
|
+
type: ip
|
199
|
+
127.0.0.2: Blacklisted
|
200
|
+
WHITELIST:
|
201
|
+
domain: ips.whitelisted.org
|
202
|
+
type: ip
|
203
|
+
127.0.0.2: Whitelisted
|
204
|
+
BACKSCATTERER:
|
205
|
+
domains: ips.backscatterer.org
|
206
|
+
type: ip
|
207
|
+
127.0.0.2: Backscatterer
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'dnsbl-client'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestDnsblClient < Test::Unit::TestCase
|
4
|
+
should "return no hits for 127.0.0.255" do
|
5
|
+
c = DNSBL::Client.new
|
6
|
+
res = c.lookup("127.0.0.255")
|
7
|
+
assert_equal(0,res.length)
|
8
|
+
end
|
9
|
+
should "return all lists for 127.0.0.2" do
|
10
|
+
c = DNSBL::Client.new
|
11
|
+
res = c.lookup("127.0.0.2")
|
12
|
+
assert(res.length >= c.dnsbls.length)
|
13
|
+
end
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dnsbl-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Chris Lee
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain:
|
17
|
+
- |
|
18
|
+
-----BEGIN CERTIFICATE-----
|
19
|
+
MIIDYjCCAkqgAwIBAgIBADANBgkqhkiG9w0BAQUFADBXMREwDwYDVQQDDAhydWJ5
|
20
|
+
Z2VtczEYMBYGCgmSJomT8ixkARkWCGNocmlzbGVlMRMwEQYKCZImiZPyLGQBGRYD
|
21
|
+
ZGhzMRMwEQYKCZImiZPyLGQBGRYDb3JnMB4XDTExMDIyNzE1MzAxOVoXDTEyMDIy
|
22
|
+
NzE1MzAxOVowVzERMA8GA1UEAwwIcnVieWdlbXMxGDAWBgoJkiaJk/IsZAEZFghj
|
23
|
+
aHJpc2xlZTETMBEGCgmSJomT8ixkARkWA2RoczETMBEGCgmSJomT8ixkARkWA29y
|
24
|
+
ZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNM1Hjs6q58sf7Jp64A
|
25
|
+
vEY2cnRWDdFpD8UWpwaJK5kgSHOVgs+0mtszn+YlYjmx8kpmuYpyU4g9mNMImMQe
|
26
|
+
ow8pVsL4QBBK/1Ozgdxrsptk3IiTozMYA+g2I/+WvZSEDu9uHkKe8pvMBEMrg7RJ
|
27
|
+
IN7+jWaPnSzg3DbFwxwOdi+QRw33DjK7oFWcOaaBqWTUpI4epdi/c/FE1I6UWULJ
|
28
|
+
ZF/Uso0Sc2Pp/YuVhuMHGrUbn7zrWWo76nnK4DTLfXFDbZF5lIXT1w6BtIiN6Ho9
|
29
|
+
Rdr/W6663hYUo3WMsUSa3I5+PJXEBKmGHIZ2TNFnoFIRHha2fmm1HC9+BTaKwcO9
|
30
|
+
PLcCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQURzsNkZo2rv86Ftc+hVww
|
31
|
+
RNICMrwwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQBRRw/iNA/PdnvW
|
32
|
+
OBoNCSr/IiHOGZqMHgPJwyWs68FhThnLc2EyIkuLTQf98ms1/D3p0XX9JsxazvKT
|
33
|
+
W/in8Mm/R2fkVziSdzqChtw/4Z4bW3c+RF7TgX6SP5cKxNAfKmAPuItcs2Y+7bdS
|
34
|
+
hr/FktVtT2iAmISRnlEbdaTpfl6N2ZWNT83khV6iOs5xRkX/+0e+GgAv9mE6nqr1
|
35
|
+
AkuDXMhposxcnFZUrZ3UtMPEe/JnyP7Vv6pvr3qtZm8FidFZU91+rX/fwdyBU8RP
|
36
|
+
/5l8uLWXXNt1wEbtu4N1I66LwTK2iRrQZE8XtlgZGbxYDFUkiurq3OafF2YwRs6W
|
37
|
+
6yhklP75
|
38
|
+
-----END CERTIFICATE-----
|
39
|
+
|
40
|
+
date: 2011-03-14 00:00:00 -04:00
|
41
|
+
default_executable:
|
42
|
+
dependencies:
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
hash: 3
|
50
|
+
segments:
|
51
|
+
- 0
|
52
|
+
version: "0"
|
53
|
+
requirement: *id001
|
54
|
+
prerelease: false
|
55
|
+
name: shoulda
|
56
|
+
type: :development
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ~>
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 23
|
64
|
+
segments:
|
65
|
+
- 1
|
66
|
+
- 0
|
67
|
+
- 0
|
68
|
+
version: 1.0.0
|
69
|
+
requirement: *id002
|
70
|
+
prerelease: false
|
71
|
+
name: bundler
|
72
|
+
type: :development
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ~>
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
hash: 7
|
80
|
+
segments:
|
81
|
+
- 1
|
82
|
+
- 5
|
83
|
+
- 2
|
84
|
+
version: 1.5.2
|
85
|
+
requirement: *id003
|
86
|
+
prerelease: false
|
87
|
+
name: jeweler
|
88
|
+
type: :development
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
hash: 3
|
96
|
+
segments:
|
97
|
+
- 0
|
98
|
+
version: "0"
|
99
|
+
requirement: *id004
|
100
|
+
prerelease: false
|
101
|
+
name: rcov
|
102
|
+
type: :development
|
103
|
+
description: simple interface to lookup blacklists results
|
104
|
+
email: rubygems@chrislee.dhs.org
|
105
|
+
executables: []
|
106
|
+
|
107
|
+
extensions: []
|
108
|
+
|
109
|
+
extra_rdoc_files:
|
110
|
+
- LICENSE.txt
|
111
|
+
- README.rdoc
|
112
|
+
files:
|
113
|
+
- bin/dnsbl-client
|
114
|
+
- lib/dnsbl-client.rb
|
115
|
+
- lib/dnsbl-client/dnsbl-client.rb
|
116
|
+
- lib/dnsbl-client/dnsbl.yaml
|
117
|
+
- LICENSE.txt
|
118
|
+
- README.rdoc
|
119
|
+
- test/helper.rb
|
120
|
+
- test/test_dnsbl-client.rb
|
121
|
+
has_rdoc: true
|
122
|
+
homepage: http://github.com/chrislee35/dnsbl-client
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options: []
|
127
|
+
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
hash: 3
|
136
|
+
segments:
|
137
|
+
- 0
|
138
|
+
version: "0"
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
none: false
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
hash: 3
|
145
|
+
segments:
|
146
|
+
- 0
|
147
|
+
version: "0"
|
148
|
+
requirements: []
|
149
|
+
|
150
|
+
rubyforge_project:
|
151
|
+
rubygems_version: 1.6.1
|
152
|
+
signing_key:
|
153
|
+
specification_version: 3
|
154
|
+
summary: queries various DNS Blacklists
|
155
|
+
test_files:
|
156
|
+
- test/helper.rb
|
157
|
+
- test/test_dnsbl-client.rb
|
metadata.gz.sig
ADDED
Binary file
|