blocklistshow 1.1 → 1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/unblock.rb +99 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d59160b951cd30f78713bb78065b2891114950c9a425f78cd9118c4703c91360
|
4
|
+
data.tar.gz: 370a9a88615ff07b03f5742278578bb369ad689a23e6e4f8f464699d3a374d2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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-
|
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
|