blocklistshow 1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/unblock.rb +99 -0
  3. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e81f6d181936fd047ceca1e81ba0f8ae9089ab94083afdd81691f3174510b65b
4
- data.tar.gz: 8bb3478a87de213a5db44a19fd00b689662c9f36791642846acdb20b0bad8831
3
+ metadata.gz: d59160b951cd30f78713bb78065b2891114950c9a425f78cd9118c4703c91360
4
+ data.tar.gz: 370a9a88615ff07b03f5742278578bb369ad689a23e6e4f8f464699d3a374d2b
5
5
  SHA512:
6
- metadata.gz: d897b281d6a46addf76372889640e8ea2bc73aee86b8673fdaae1bc66512868d7b4db06f589bc6c4cdcc698b9cc2b72b6f0763a5cc3ecc1b5ef5deaa611adfb0
7
- data.tar.gz: a1cfc381e812c65101ee0244b9db1bb1ff94e86e99cf17ffe3dbb61518b2daabb0939f74d8a3ae58b2b056b82d48e19b6416d75fdd83a51711db184d40af7518
6
+ metadata.gz: 5afef2dd7e33c4cc6e1ab5f4b5a5cad207b80a4dbce31b1f940f8477b46ea43d92b083670e2d059af40ec7a5e1e951907a60f9a03f85a7f86ffa1b7e5724a34a
7
+ data.tar.gz: 57100a4f6132e6b0182ef9995a7a712514cd0972ce52b7c0298dd9cfd64f5481fd2790a5b2d3022c15abdf9940dd59dd02a0e135ab94e8404fde0be1c786344d
data/bin/unblock.rb ADDED
@@ -0,0 +1,99 @@
1
+ #!/usr/local/bin/ruby
2
+
3
+ BDB_FILE = '/var/db/blacklistd.db'.freeze
4
+ LOCAL_BDB_FILE_MODE = 0o0600
5
+ LOCAL_BDB_OPTIONS = { 'set_pagesize' => 1024, 'set_cachesize' => 32 * 1024 }.freeze
6
+
7
+ require 'ipaddr'
8
+ require 'bdb1'
9
+
10
+ # /usr/src/contrib/blacklist/bin/conf.h
11
+ # struct conf {
12
+ # struct sockaddr_storage c_ss;
13
+ # int c_lmask;
14
+ # int c_port;
15
+ # int c_proto;
16
+ # int c_family;
17
+ # int c_uid;
18
+ # int c_nfail;
19
+ # char c_name[128];
20
+ # int c_rmask;
21
+ # int c_duration;
22
+ # };
23
+
24
+ # /usr/src/contrib/blacklist/bin/state.h
25
+ # struct dbinfo {
26
+ # int count;
27
+ # time_t last;
28
+ # char id[64];
29
+ # };
30
+
31
+ # /usr/include/sys/_sockaddr_storage.h
32
+ # struct sockaddr_storage {
33
+ # unsigned char ss_len; /* address length */
34
+ # sa_family_t ss_family; /* address family */
35
+ # char __ss_pad1[_SS_PAD1SIZE];
36
+ # __int64_t __ss_align; /* force desired struct alignment */
37
+ # char __ss_pad2[_SS_PAD2SIZE];
38
+ # };
39
+
40
+ def decode_ip( key, afamily )
41
+ case afamily
42
+ when 2
43
+ off = 4
44
+ key[ off .. ].unpack( 'C4' ).join( '.' )
45
+ when 28
46
+ off = 8
47
+ IPAddr::IN6FORMAT % key[ off .. ].unpack( 'n8' )
48
+ else
49
+ raise IPAddr::AddressFamilyError, 'unsupported address family'
50
+ end
51
+ end
52
+
53
+ def ip_from_key( key )
54
+ # puts "size: #{key.size}"
55
+
56
+ # len = key.unpack1( 'C' )
57
+ # puts "len: #{len}"
58
+
59
+ af = key[ 1 .. 1 ].unpack1( 'C' )
60
+ # puts "af: #{af}"
61
+
62
+ ip = decode_ip( key, af )
63
+ # puts "ip: #{ip}"
64
+
65
+ IPAddr.new( ip )
66
+ end
67
+
68
+ def search_db( dbh, list )
69
+ found = []
70
+ dbh.each_key do |key|
71
+ # pp key, val
72
+ ip2 = ip_from_key( key ).to_s
73
+ next unless list.include?( ip2 )
74
+
75
+ puts "ip2: #{ip2}"
76
+ found.push( key )
77
+ end
78
+ found
79
+ end
80
+
81
+ def remove_db( dbh, found )
82
+ removed = 0
83
+ found.each do |key|
84
+ dbh.delete( key )
85
+ removed += 1
86
+ end
87
+ puts "removed: #{removed}"
88
+ dbh.sync
89
+ dbh.close
90
+ end
91
+
92
+ dbh = BDB1::Hash.open( BDB_FILE,
93
+ BDB1::WRITE | BDB1::CREATE,
94
+ LOCAL_BDB_FILE_MODE,
95
+ LOCAL_BDB_OPTIONS )
96
+ found = search_db( dbh, ARGV )
97
+ remove_db( dbh, found )
98
+
99
+ # eof
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blocklistshow
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.1'
4
+ version: '1.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dirk Meyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-27 00:00:00.000000000 Z
11
+ date: 2023-09-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Display of data from blocklistd on FreeBSD with country codes and reverse
14
14
  DNS.
@@ -16,6 +16,7 @@ email:
16
16
  executables:
17
17
  - blocklist.rb
18
18
  - geodb-lookup.rb
19
+ - unblock.rb
19
20
  extensions: []
20
21
  extra_rdoc_files:
21
22
  - LICENSE.txt
@@ -28,6 +29,7 @@ files:
28
29
  - README.md
29
30
  - bin/blocklist.rb
30
31
  - bin/geodb-lookup.rb
32
+ - bin/unblock.rb
31
33
  homepage: https://rubygems.org/gems/blocklistshow
32
34
  licenses:
33
35
  - MIT