unspam 0.0.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f524665f5d4131c5e6d0696462bc4aaec71efd4
4
- data.tar.gz: 645eafa5e1b6c66fc91f17199c6780a7004083af
3
+ metadata.gz: c3af9375e8a756b3389903f1fa2c8c8108fd8e10
4
+ data.tar.gz: 61e660aa192baa1a9bf338371ad063d4586c0517
5
5
  SHA512:
6
- metadata.gz: b58da993c169a7b52dc86947d1a78af1e9f1614f9027129d75cddf7442c60f0ebf88571ba5431c7a8bf0590c88f80bc2713389d4a4877e948cba0929b06fb555
7
- data.tar.gz: 56dbfb6e4caa5c638d6c98ba7714565c771bea63e5df051208e609f3f1add2992bc373cd9e3f075e2b9ad957b21990467f6db69a6b7c280db9d61e7ce619e2d8
6
+ metadata.gz: 749981ed9fc33f20ca341b9f8034f96b901f9f83e42ee8fd71db85b50d7b42d4c6acc676e054ebfcdf88a69e919781759aeb1eac0da0c1cb78d189a86801e079
7
+ data.tar.gz: 4aed52af696f1e2a153128f2db90a9a7f490695d373241bb7a22d5e922732b64ca611f138219faba914d97636fcb51d0218ddd5d91d6bcb1f0a3e328b332f6a4
data/README.md CHANGED
@@ -1,29 +1,83 @@
1
1
  # Unspam
2
2
 
3
- TODO: Write a gem description
3
+ Ultra simple tool to create postfix-compatible IP-blocklists based on AS-Numbers or IP-addresses. This is a very brutal way and should be limited to known spam providers.
4
4
 
5
5
  ## Installation
6
+
7
+ Install Ruby 1.9.3+
8
+ then:
6
9
 
7
- Add this line to your application's Gemfile:
10
+ $ gem install unspam
8
11
 
9
- gem 'unspam'
12
+ ## Usage/Example
10
13
 
11
- And then execute:
14
+ So you received another "Casino"-spam from e.g.
12
15
 
13
- $ bundle
16
+ ```
17
+ Received: from ab19c8d9.dutxng.net (171.25.200.217.static.clcksthrough.com [171.25.200.217]) by …
18
+ ```
14
19
 
15
- Or install it yourself as:
20
+ After some research you come to the conclusion, that the ISP behind 171.25.200.217 looks like a spam hoster that sent you spam mails for years and don't react on abuse notifications. It's time to let it go!
16
21
 
17
- $ gem install unspam
18
22
 
19
- ## Usage
23
+ ```shell
24
+ $ unspam nets 171.25.200.217 REJECT
25
+ 171.25.200.0/23 REJECT
26
+ 178.20.96.0/21 REJECT
27
+ 185.51.232.0/22 REJECT
28
+ 185.57.88.0/22 REJECT
29
+ 188.64.40.0/22 REJECT
30
+ 188.64.44.0/23 REJECT
31
+ 188.64.46.0/23 REJECT
32
+ 193.104.98.0/24 REJECT
33
+ 193.105.250.0/24 REJECT
34
+ 193.22.255.0/24 REJECT
35
+ 193.25.114.0/23 REJECT
36
+ 195.130.215.0/24 REJECT
37
+ 195.225.148.0/22 REJECT
38
+ 195.5.120.0/23 REJECT
39
+ 195.82.152.0/23 REJECT
40
+ 2a00:5300:0:1::/64 REJECT
41
+ 2a00:5300:0:2::/64 REJECT
42
+ 2a00:5300:0:3::/64 REJECT
43
+ 2a00:5300::/32 REJECT
44
+ 2a00:fa40::/32 REJECT
45
+ 5.44.100.0/22 REJECT
46
+ 5.44.108.0/22 REJECT
47
+ 5.44.96.0/22 REJECT
48
+ 81.88.16.0/21 REJECT
49
+ 81.88.24.0/22 REJECT
50
+ 81.88.28.0/22 REJECT
51
+ 89.22.96.0/19 REJECT
52
+ 91.203.128.0/22 REJECT
53
+ 91.203.212.0/22 REJECT
54
+ 91.206.142.0/23 REJECT
55
+ 91.207.94.0/23 REJECT
56
+ 91.226.88.0/22 REJECT
57
+ 91.227.246.0/23 REJECT
58
+ 91.235.208.0/22 REJECT
59
+ ```
60
+
61
+ All announed prefixes of that spam ISP will be looked up using the [RIPE.net RESTful looking glass](https://stat.ripe.net/docs/data_api). Your optional message will appear right behind the net so you can easily paste/add this to your postfix client_checks file or wrap some shell commands around it.
62
+
63
+ You can use an IP-Address or AS-number to lookup the result.
64
+
65
+ e.g.
66
+
67
+ ```shell
68
+ $ unspam net AS31342
69
+ ```
70
+
71
+ will produce the identical result.
72
+
73
+ ## Tricks
20
74
 
21
- TODO: Write usage instructions here
75
+ To see all announced IP-networks of Amazon AWS, DigitalOcean and Hetzner, try:
22
76
 
23
- ## Contributing
77
+ ```shell
78
+ $ unspam nets $( dig a +short amazonaws.com | head -n1 )
79
+ $ unspam nets $( dig a +short digitalocean.com | head -n1 )
80
+ $ unspam nets $( dig a +short hetzner.de | head -n1 )
81
+ ```
24
82
 
25
- 1. Fork it ( https://github.com/[my-github-username]/unspam/fork )
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create a new Pull Request
83
+ Enjoy!
data/lib/unspam/cli.rb CHANGED
@@ -2,6 +2,7 @@ require 'thor'
2
2
  require 'json'
3
3
  require 'httparty'
4
4
  require 'ipaddr'
5
+ require 'netaddr'
5
6
 
6
7
  module Unspam
7
8
  class CLI < Thor
@@ -37,10 +38,15 @@ module Unspam
37
38
  end
38
39
 
39
40
  def lookup_by_asn(asn)
40
- response = HTTParty.get "https://stat.ripe.net/data/announced-prefixes/data.json?resource=#{asn}&min_peers_seeing=1"
41
+ response = HTTParty.get "https://stat.ripe.net/data/announced-prefixes/data.json?resource=#{asn}&min_peers_seeing=2"
41
42
  result = JSON.parse(response.body)
42
43
 
43
- result['data']['prefixes'].map { |h| h['prefix'] }.sort.each do |prefix|
44
+ prefixes = Array.new
45
+ result['data']['prefixes'].map { |h| h['prefix'] }.each do |prefix|
46
+ prefixes.push(prefix)
47
+ end
48
+
49
+ NetAddr.merge(prefixes.map{ |ip| NetAddr::CIDR.create(ip) }, :Short => true).each do |prefix|
44
50
  printf("%-25s%5s\n", prefix, @msg)
45
51
  end
46
52
  end
@@ -1,3 +1,3 @@
1
1
  module Unspam
2
- VERSION = '0.0.2'
2
+ VERSION = '0.1.0'
3
3
  end
data/unspam.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'thor'
22
22
  spec.add_dependency 'httparty'
23
+ spec.add_dependency 'netaddr'
23
24
 
24
25
  spec.add_development_dependency 'bundler', '~> 1.6'
25
26
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unspam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roland Moriz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-03 00:00:00.000000000 Z
11
+ date: 2015-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: netaddr
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -105,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
119
  version: '0'
106
120
  requirements: []
107
121
  rubyforge_project:
108
- rubygems_version: 2.2.2
122
+ rubygems_version: 2.4.5
109
123
  signing_key:
110
124
  specification_version: 4
111
125
  summary: returns IP prefixes by ASN.