dnsbl-client 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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