dnsbl-client 0.4.0 → 1.0.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.
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'dnsbl/client/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "dnsbl-client"
8
+ spec.version = DNSBL::Client::VERSION
9
+ spec.authors = ["chrislee35"]
10
+ spec.email = ["rubygems@chrislee.dhs.org"]
11
+ spec.description = %q{simple interface to lookup blacklists results}
12
+ spec.summary = %q{queries various DNS Blacklists}
13
+ spec.homepage = "http://github.com/chrislee35/dnsbl-client"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+
24
+ spec.signing_key = "#{File.dirname(__FILE__)}/../gem-private_key.pem"
25
+ spec.cert_chain = ["#{File.dirname(__FILE__)}/../gem-public_cert.pem"]
26
+ end
@@ -1,3 +1,5 @@
1
+ require "dnsbl/client/version"
2
+
1
3
  # DESCRIPTION: is a module that queries dnsbls. The configuration is in a YAML file.
2
4
  require 'resolv'
3
5
  require 'socket'
@@ -33,9 +35,9 @@ module DNSBL
33
35
  # initialize a new DNSBL::Client object
34
36
  # the config file automatically points to a YAML file containing the list of DNSBLs and their return codes
35
37
  # the two-level-tlds file lists most of the two level tlds, needed for hostname to domain normalization
36
- def initialize(config = YAML.load(File.open(File.dirname(__FILE__)+"/dnsbl.yaml").read),
37
- two_level_tldfile = File.dirname(__FILE__)+"/two-level-tlds",
38
- three_level_tldfile = File.dirname(__FILE__)+"/three-level-tlds")
38
+ def initialize(config = YAML.load(File.open(File.expand_path('../../../data', __FILE__)+"/dnsbl.yaml").read),
39
+ two_level_tldfile = File.expand_path('../../../data', __FILE__)+"/two-level-tlds",
40
+ three_level_tldfile = File.expand_path('../../../data', __FILE__)+"/three-level-tlds")
39
41
  @dnsbls = config
40
42
  @two_level_tld = []
41
43
  @three_level_tld = []
@@ -56,6 +58,20 @@ module DNSBL
56
58
  @socket_index = 0
57
59
  end
58
60
 
61
+ def nameservers=(ns=Resolv::DNS::Config.new.nameservers)
62
+ @sockets.each do |s|
63
+ s.close
64
+ end
65
+ @sockets = []
66
+ ns.each do |ip,port|
67
+ sock = UDPSocket.new
68
+ sock.connect(ip,port)
69
+ @sockets << sock
70
+ break # let's just the first nameserver in this version of the library
71
+ end
72
+ @socket_index = 0
73
+ end
74
+
59
75
  # Converts a hostname to the domain: e.g., www.google.com => google.com, science.somewhere.co.uk => somewhere.co.uk
60
76
  def normalize(domain)
61
77
  # strip off the protocol (\w{1,20}://), the URI (/), parameters (?), port number (:), and username (.*@)
@@ -0,0 +1,5 @@
1
+ module DNSBL
2
+ class Client
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.expand_path('../../lib/dnsbl/client.rb', __FILE__)
@@ -0,0 +1,195 @@
1
+ unless Kernel.respond_to?(:require_relative)
2
+ module Kernel
3
+ def require_relative(path)
4
+ require File.join(File.dirname(caller[0]), path.to_str)
5
+ end
6
+ end
7
+ end
8
+
9
+ require_relative 'helper'
10
+
11
+ $nameservers = [['4.2.2.2',53]]
12
+
13
+ class TestDNSBLClient < Test::Unit::TestCase
14
+ def test_return_no_hits_for_127_0_0_255
15
+ c = DNSBL::Client.new
16
+ c.nameservers = $nameservers
17
+ res = c.lookup("127.0.0.255")
18
+ assert_equal(0,res.length)
19
+ end
20
+ def test_return_all_lists_for_127_0_0_2
21
+ c = DNSBL::Client.new
22
+ c.nameservers = $nameservers
23
+ res = c.lookup("127.0.0.2")
24
+ assert(res.length >= c.dnsbls.length)
25
+ end
26
+ def test_return_results_for_bad_domains
27
+ c = DNSBL::Client.new
28
+ c.nameservers = $nameservers
29
+ res = c.lookup("pfizer.viagra.aqybasej.gurdoctor.com")
30
+ assert(res.length >= 0)
31
+ end
32
+ def test_interpret_project_honeypot_results
33
+ assert_not_nil(ENV['PHPAPIKEY'], "Project Honeypot API Key Required. Please set PHPAPIKEY.")
34
+ apikey = ENV['PHPAPIKEY']
35
+ config = YAML.load("---
36
+ PROJECTHONEYPOT:
37
+ domain: dnsbl.httpbl.org
38
+ type: ip
39
+ apikey: #{apikey}
40
+ decoder: phpot_decoder")
41
+ c = DNSBL::Client.new(config)
42
+ c.nameservers = $nameservers
43
+ res = c.lookup("127.0.0.1")
44
+ assert_equal(0,res.length)
45
+ res = c.lookup("127.1.1.0")
46
+ assert_equal(1,res.length)
47
+ assert_equal("#{apikey}.0.1.1.127.dnsbl.httpbl.org",res[0].query)
48
+ assert_equal("127.1.1.0",res[0].result)
49
+ assert_equal("type=search engine,engine=AltaVista",res[0].meaning)
50
+ res = c.lookup("127.1.1.1")
51
+ assert_equal(1,res.length)
52
+ assert_equal("#{apikey}.1.1.1.127",res[0].item)
53
+ assert_equal("#{apikey}.1.1.1.127.dnsbl.httpbl.org",res[0].query)
54
+ assert_equal("127.1.1.1",res[0].result)
55
+ assert_equal("days=1,score=1,type=suspicious",res[0].meaning)
56
+ res = c.lookup("127.1.1.2")
57
+ assert_equal(1,res.length)
58
+ assert_equal("#{apikey}.2.1.1.127",res[0].item)
59
+ assert_equal("#{apikey}.2.1.1.127.dnsbl.httpbl.org",res[0].query)
60
+ assert_equal("127.1.1.2",res[0].result)
61
+ assert_equal("days=1,score=1,type=harvester",res[0].meaning)
62
+ res = c.lookup("127.1.1.3")
63
+ assert_equal(1,res.length)
64
+ assert_equal("#{apikey}.3.1.1.127",res[0].item)
65
+ assert_equal("#{apikey}.3.1.1.127.dnsbl.httpbl.org",res[0].query)
66
+ assert_equal("127.1.1.3",res[0].result)
67
+ assert_equal("days=1,score=1,type=suspicious,harvester",res[0].meaning)
68
+ res = c.lookup("127.1.1.4")
69
+ assert_equal(1,res.length)
70
+ assert_equal("#{apikey}.4.1.1.127",res[0].item)
71
+ assert_equal("#{apikey}.4.1.1.127.dnsbl.httpbl.org",res[0].query)
72
+ assert_equal("127.1.1.4",res[0].result)
73
+ assert_equal("days=1,score=1,type=comment spammer",res[0].meaning)
74
+ res = c.lookup("127.1.1.5")
75
+ assert_equal(1,res.length)
76
+ assert_equal("#{apikey}.5.1.1.127",res[0].item)
77
+ assert_equal("#{apikey}.5.1.1.127.dnsbl.httpbl.org",res[0].query)
78
+ assert_equal("127.1.1.5",res[0].result)
79
+ assert_equal("days=1,score=1,type=suspicious,comment spammer",res[0].meaning)
80
+ res = c.lookup("127.1.1.6")
81
+ assert_equal(1,res.length)
82
+ assert_equal("#{apikey}.6.1.1.127",res[0].item)
83
+ assert_equal("#{apikey}.6.1.1.127.dnsbl.httpbl.org",res[0].query)
84
+ assert_equal("127.1.1.6",res[0].result)
85
+ assert_equal("days=1,score=1,type=harvester,comment spammer",res[0].meaning)
86
+ res = c.lookup("127.1.1.7")
87
+ assert_equal(1,res.length)
88
+ assert_equal("#{apikey}.7.1.1.127",res[0].item)
89
+ assert_equal("#{apikey}.7.1.1.127.dnsbl.httpbl.org",res[0].query)
90
+ assert_equal("127.1.1.7",res[0].result)
91
+ assert_equal("days=1,score=1,type=suspicious,harvester,comment spammer",res[0].meaning)
92
+ res = c.lookup("127.1.10.1")
93
+ assert_equal(1,res.length)
94
+ assert_equal("#{apikey}.1.10.1.127",res[0].item)
95
+ assert_equal("#{apikey}.1.10.1.127.dnsbl.httpbl.org",res[0].query)
96
+ assert_equal("127.1.10.1",res[0].result)
97
+ assert_equal("days=1,score=10,type=suspicious",res[0].meaning)
98
+ res = c.lookup("127.1.20.1")
99
+ assert_equal(1,res.length)
100
+ assert_equal("#{apikey}.1.20.1.127",res[0].item)
101
+ assert_equal("#{apikey}.1.20.1.127.dnsbl.httpbl.org",res[0].query)
102
+ assert_equal("127.1.20.1",res[0].result)
103
+ assert_equal("days=1,score=20,type=suspicious",res[0].meaning)
104
+ res = c.lookup("127.1.40.1")
105
+ assert_equal(1,res.length)
106
+ assert_equal("#{apikey}.1.40.1.127",res[0].item)
107
+ assert_equal("#{apikey}.1.40.1.127.dnsbl.httpbl.org",res[0].query)
108
+ assert_equal("127.1.40.1",res[0].result)
109
+ assert_equal("days=1,score=40,type=suspicious",res[0].meaning)
110
+ res = c.lookup("127.1.80.1")
111
+ assert_equal(1,res.length)
112
+ assert_equal("#{apikey}.1.80.1.127",res[0].item)
113
+ assert_equal("#{apikey}.1.80.1.127.dnsbl.httpbl.org",res[0].query)
114
+ assert_equal("127.1.80.1",res[0].result)
115
+ assert_equal("days=1,score=80,type=suspicious",res[0].meaning)
116
+ res = c.lookup("127.10.1.1")
117
+ assert_equal(1,res.length)
118
+ assert_equal("#{apikey}.1.1.10.127",res[0].item)
119
+ assert_equal("#{apikey}.1.1.10.127.dnsbl.httpbl.org",res[0].query)
120
+ assert_equal("127.10.1.1",res[0].result)
121
+ assert_equal("days=10,score=1,type=suspicious",res[0].meaning)
122
+ res = c.lookup("127.20.1.1")
123
+ assert_equal(1,res.length)
124
+ assert_equal("#{apikey}.1.1.20.127",res[0].item)
125
+ assert_equal("#{apikey}.1.1.20.127.dnsbl.httpbl.org",res[0].query)
126
+ assert_equal("127.20.1.1",res[0].result)
127
+ assert_equal("days=20,score=1,type=suspicious",res[0].meaning)
128
+ res = c.lookup("127.40.1.1")
129
+ assert_equal(1,res.length)
130
+ assert_equal("#{apikey}.1.1.40.127",res[0].item)
131
+ assert_equal("#{apikey}.1.1.40.127.dnsbl.httpbl.org",res[0].query)
132
+ assert_equal("127.40.1.1",res[0].result)
133
+ assert_equal("days=40,score=1,type=suspicious",res[0].meaning)
134
+ res = c.lookup("127.80.1.1")
135
+ assert_equal(1,res.length)
136
+ assert_equal("#{apikey}.1.1.80.127",res[0].item)
137
+ assert_equal("#{apikey}.1.1.80.127.dnsbl.httpbl.org",res[0].query)
138
+ assert_equal("127.80.1.1", res[0].result)
139
+ assert_equal("days=80,score=1,type=suspicious",res[0].meaning)
140
+ res = c.__phpot_decoder("127.0.0.0")
141
+ assert_equal("type=search engine,engine=undocumented",res)
142
+ res = c.__phpot_decoder("127.0.1.0")
143
+ assert_equal("type=search engine,engine=AltaVista",res)
144
+ res = c.__phpot_decoder("127.0.2.0")
145
+ assert_equal("type=search engine,engine=Ask",res)
146
+ res = c.__phpot_decoder("127.0.3.0")
147
+ assert_equal("type=search engine,engine=Baidu",res)
148
+ res = c.__phpot_decoder("127.0.4.0")
149
+ assert_equal("type=search engine,engine=Excite",res)
150
+ res = c.__phpot_decoder("127.0.5.0")
151
+ assert_equal("type=search engine,engine=Google",res)
152
+ res = c.__phpot_decoder("127.0.6.0")
153
+ assert_equal("type=search engine,engine=Looksmart",res)
154
+ res = c.__phpot_decoder("127.0.7.0")
155
+ assert_equal("type=search engine,engine=Lycos",res)
156
+ res = c.__phpot_decoder("127.0.8.0")
157
+ assert_equal("type=search engine,engine=MSN",res)
158
+ res = c.__phpot_decoder("127.0.9.0")
159
+ assert_equal("type=search engine,engine=Yahoo",res)
160
+ res = c.__phpot_decoder("127.0.10.0")
161
+ assert_equal("type=search engine,engine=Cuil",res)
162
+ res = c.__phpot_decoder("127.0.11.0")
163
+ assert_equal("type=search engine,engine=InfoSeek",res)
164
+ res = c.__phpot_decoder("127.0.12.0")
165
+ assert_equal("type=search engine,engine=Miscellaneous",res)
166
+ end
167
+
168
+ def test_normalize_domains_to_two_levels_if_it_s_neither_in_two_level_nor_three_level_list
169
+ c = DNSBL::Client.new
170
+ c.nameservers = $nameservers
171
+
172
+ assert_equal("example.org", c.normalize("example.org"))
173
+ assert_equal("example.org", c.normalize("www.example.org"))
174
+ assert_equal("example.org", c.normalize("foo.bar.baz.example.org"))
175
+ end
176
+
177
+ def test_normaize_domains_to_three_levels_if_it_s_in_two_level_list
178
+ c = DNSBL::Client.new
179
+ c.nameservers = $nameservers
180
+
181
+ assert_equal("example.co.uk", c.normalize("example.co.uk"))
182
+ assert_equal("example.co.uk", c.normalize("www.example.co.uk"))
183
+ assert_equal("example.co.uk", c.normalize("foo.bar.baz.example.co.uk"))
184
+ assert_equal("example.blogspot.com", c.normalize("example.blogspot.com"))
185
+ end
186
+
187
+ def test_normalize_domains_to_four_levels_if_it_s_in_three_level_list
188
+ c = DNSBL::Client.new
189
+ c.nameservers = $nameservers
190
+
191
+ assert_equal("example.act.edu.au", c.normalize("example.act.edu.au"))
192
+ assert_equal("example.act.edu.au", c.normalize("www.example.act.edu.au"))
193
+ assert_equal("example.act.edu.au", c.normalize("foo.bar.example.act.edu.au"))
194
+ end
195
+ end
metadata CHANGED
@@ -1,156 +1,130 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dnsbl-client
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 4
8
- - 0
9
- version: 0.4.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - Chris Lee
7
+ authors:
8
+ - chrislee35
13
9
  autorequire:
14
10
  bindir: bin
15
- cert_chain:
16
- - |
17
- -----BEGIN CERTIFICATE-----
18
- MIIDYjCCAkqgAwIBAgIBADANBgkqhkiG9w0BAQUFADBXMREwDwYDVQQDDAhydWJ5
19
- Z2VtczEYMBYGCgmSJomT8ixkARkWCGNocmlzbGVlMRMwEQYKCZImiZPyLGQBGRYD
20
- ZGhzMRMwEQYKCZImiZPyLGQBGRYDb3JnMB4XDTExMDIyNzE1MzAxOVoXDTEyMDIy
21
- NzE1MzAxOVowVzERMA8GA1UEAwwIcnVieWdlbXMxGDAWBgoJkiaJk/IsZAEZFghj
22
- aHJpc2xlZTETMBEGCgmSJomT8ixkARkWA2RoczETMBEGCgmSJomT8ixkARkWA29y
23
- ZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNM1Hjs6q58sf7Jp64A
24
- vEY2cnRWDdFpD8UWpwaJK5kgSHOVgs+0mtszn+YlYjmx8kpmuYpyU4g9mNMImMQe
25
- ow8pVsL4QBBK/1Ozgdxrsptk3IiTozMYA+g2I/+WvZSEDu9uHkKe8pvMBEMrg7RJ
26
- IN7+jWaPnSzg3DbFwxwOdi+QRw33DjK7oFWcOaaBqWTUpI4epdi/c/FE1I6UWULJ
27
- ZF/Uso0Sc2Pp/YuVhuMHGrUbn7zrWWo76nnK4DTLfXFDbZF5lIXT1w6BtIiN6Ho9
28
- Rdr/W6663hYUo3WMsUSa3I5+PJXEBKmGHIZ2TNFnoFIRHha2fmm1HC9+BTaKwcO9
29
- PLcCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQURzsNkZo2rv86Ftc+hVww
30
- RNICMrwwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQBRRw/iNA/PdnvW
31
- OBoNCSr/IiHOGZqMHgPJwyWs68FhThnLc2EyIkuLTQf98ms1/D3p0XX9JsxazvKT
32
- W/in8Mm/R2fkVziSdzqChtw/4Z4bW3c+RF7TgX6SP5cKxNAfKmAPuItcs2Y+7bdS
33
- hr/FktVtT2iAmISRnlEbdaTpfl6N2ZWNT83khV6iOs5xRkX/+0e+GgAv9mE6nqr1
34
- AkuDXMhposxcnFZUrZ3UtMPEe/JnyP7Vv6pvr3qtZm8FidFZU91+rX/fwdyBU8RP
35
- /5l8uLWXXNt1wEbtu4N1I66LwTK2iRrQZE8XtlgZGbxYDFUkiurq3OafF2YwRs6W
36
- 6yhklP75
37
- -----END CERTIFICATE-----
38
-
39
- date: 2012-09-28 00:00:00 -04:00
40
- default_executable: dnsbl-client
41
- dependencies:
42
- - !ruby/object:Gem::Dependency
43
- prerelease: false
44
- type: :development
45
- name: shoulda
46
- version_requirements: &id001 !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- segments:
51
- - 0
52
- version: "0"
53
- requirement: *id001
54
- - !ruby/object:Gem::Dependency
55
- prerelease: false
56
- type: :development
57
- name: rdoc
58
- version_requirements: &id002 !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ~>
61
- - !ruby/object:Gem::Version
62
- segments:
63
- - 3
64
- - 12
65
- version: "3.12"
66
- requirement: *id002
67
- - !ruby/object:Gem::Dependency
68
- prerelease: false
69
- type: :development
11
+ cert_chain:
12
+ - !binary |-
13
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURZakNDQWtxZ0F3SUJB
14
+ Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJYTVJFd0R3WURWUVFEREFoeWRX
15
+ SjUKWjJWdGN6RVlNQllHQ2dtU0pvbVQ4aXhrQVJrV0NHTm9jbWx6YkdWbE1S
16
+ TXdFUVlLQ1pJbWlaUHlMR1FCR1JZRApaR2h6TVJNd0VRWUtDWkltaVpQeUxH
17
+ UUJHUllEYjNKbk1CNFhEVEV6TURVeU1qRXlOVGswTjFvWERURTBNRFV5Ck1q
18
+ RXlOVGswTjFvd1Z6RVJNQThHQTFVRUF3d0ljblZpZVdkbGJYTXhHREFXQmdv
19
+ SmtpYUprL0lzWkFFWkZnaGoKYUhKcGMyeGxaVEVUTUJFR0NnbVNKb21UOGl4
20
+ a0FSa1dBMlJvY3pFVE1CRUdDZ21TSm9tVDhpeGtBUmtXQTI5eQpaekNDQVNJ
21
+ d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOY1ByeDhC
22
+ WmlXSVI5eFdXRzhJCnRxUjUzOHRTMXQrVUo0RlpGbCsxdnJ0VTlUaXVXWDNW
23
+ ajM3VHdVcGEyZkZremlLMG41S3VwVlRoeUVoY2VtNW0KT0dSanZnclJGYldR
24
+ SlNTc2NJS09wd3FVUkhWS1JwVjlnVnovSG56azhTK3hvdFVSMUJ1bzNVZ3Ir
25
+ STFqSGV3RApDZ3IreSt6Z1pidGp0SHNKdHN1dWprT2NQaEVqalVpbmo2OEw5
26
+ Rno5QmRlSlF0K0lhY2p3QXpVTGl4NmpXQ2h0ClVjK2crMHo4RXNyeWNhMkc2
27
+ STFHc3JnWDZXSHc4ZHlreVFEVDlkQ3RTMmZsQ093U0MxUjBLNVQveEhXNTRm
28
+ KzUKd2N3OG1tNTNLTE5lK3RtZ1ZDNlpIeU1FK3FKc0JuUDZ1eEYwYVRFbkdB
29
+ L2pEQlFEaFFOVEYwWlAvYWJ6eVRzTAp6alVDQXdFQUFhTTVNRGN3Q1FZRFZS
30
+ MFRCQUl3QURBTEJnTlZIUThFQkFNQ0JMQXdIUVlEVlIwT0JCWUVGTzh3Cith
31
+ ZVA3VDZrVkpibENnNmV1c09JSTlEZk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJ
32
+ QkFRQkNReVJKTFhzQm8yRnkKOFc2ZS9XNFJlbVFScmxBdzlESzVPNlU3MUp0
33
+ ZWRWb2Iyb3ErT2Irem1TK1BpZkUyK0wrM1JpSjJINlZUbE96aQp4K0EwNjFN
34
+ VVhoR3JhcVZxNEoyRkM4a3Q0RVF5d0FEMFAwVGE1R1UyNENHU0YwOFkzR2tK
35
+ eTFTYTRYcVRDMllDCm81MXM3SlArdGtDQ3RwVllTZHpKaFRsbGllUkFXQnBH
36
+ VjFkdGFvZVVLRTZ0WVBNQmtvc3hTUmNWR2N6ay9TYzMKN2VRQ3BleFl5OUps
37
+ VUJJOXUzQnFJWTlFK2wrTVNuOGloWFNQbXlLMERncmhhQ3Urdm9hU0ZWT1g2
38
+ WStCNXFibwpqTFhNUXUyWmdJU1l3WE5qTmJHVkhlaHV0ODJVN1U5b2lIb1dj
39
+ ck9HYXphUlVtR085VFhQK2FKTEgwZ3cyZGNLCkFmTWdsWFBpCi0tLS0tRU5E
40
+ IENFUlRJRklDQVRFLS0tLS0K
41
+ date: 2013-06-02 00:00:00.000000000 Z
42
+ dependencies:
43
+ - !ruby/object:Gem::Dependency
70
44
  name: bundler
71
- version_requirements: &id003 !ruby/object:Gem::Requirement
72
- requirements:
45
+ requirement: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
73
48
  - - ~>
74
- - !ruby/object:Gem::Version
75
- segments:
76
- - 1
77
- - 1
78
- - 5
79
- version: 1.1.5
80
- requirement: *id003
81
- - !ruby/object:Gem::Dependency
82
- prerelease: false
49
+ - !ruby/object:Gem::Version
50
+ version: '1.3'
83
51
  type: :development
84
- name: jeweler
85
- version_requirements: &id004 !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 1
91
- - 8
92
- - 4
93
- version: 1.8.4
94
- requirement: *id004
95
- - !ruby/object:Gem::Dependency
96
52
  prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ version: '1.3'
59
+ - !ruby/object:Gem::Dependency
60
+ name: rake
61
+ requirement: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
97
67
  type: :development
98
- name: rcov
99
- version_requirements: &id005 !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- segments:
104
- - 0
105
- version: "0"
106
- requirement: *id005
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
107
75
  description: simple interface to lookup blacklists results
108
- email: rubygems@chrislee.dhs.org
109
- executables:
76
+ email:
77
+ - rubygems@chrislee.dhs.org
78
+ executables:
110
79
  - dnsbl-client
111
80
  extensions: []
112
-
113
- extra_rdoc_files:
81
+ extra_rdoc_files: []
82
+ files:
83
+ - .gitignore
84
+ - Gemfile
114
85
  - LICENSE.txt
115
- - README.rdoc
116
- files:
86
+ - README.md
87
+ - Rakefile
117
88
  - bin/dnsbl-client
118
- - lib/dnsbl-client.rb
119
- - lib/dnsbl-client/dnsbl-client.rb
120
- - lib/dnsbl-client/dnsbl.yaml
121
- - lib/dnsbl-client/three-level-tlds
122
- - lib/dnsbl-client/two-level-tlds
123
- - LICENSE.txt
124
- - README.rdoc
125
- has_rdoc: true
89
+ - data/dnsbl.yaml
90
+ - data/three-level-tlds
91
+ - data/two-level-tlds
92
+ - dnsbl-client.gemspec
93
+ - lib/dnsbl/client.rb
94
+ - lib/dnsbl/client/version.rb
95
+ - test/helper.rb
96
+ - test/test_dnsbl-client.rb
126
97
  homepage: http://github.com/chrislee35/dnsbl-client
127
- licenses:
98
+ licenses:
128
99
  - MIT
129
100
  post_install_message:
130
101
  rdoc_options: []
131
-
132
- require_paths:
102
+ require_paths:
133
103
  - lib
134
- required_ruby_version: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- segments:
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ segments:
139
111
  - 0
140
- version: "0"
141
- required_rubygems_version: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- segments:
112
+ hash: -1644679635728058987
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ segments:
146
120
  - 0
147
- version: "0"
121
+ hash: -1644679635728058987
148
122
  requirements: []
149
-
150
123
  rubyforge_project:
151
- rubygems_version: 1.3.6
124
+ rubygems_version: 1.8.25
152
125
  signing_key:
153
126
  specification_version: 3
154
127
  summary: queries various DNS Blacklists
155
- test_files: []
156
-
128
+ test_files:
129
+ - test/helper.rb
130
+ - test/test_dnsbl-client.rb