Zuletzt aktiv 2 months ago

nuno hat die Gist bearbeitet 2 months ago. Zu Änderung gehen

1 file changed, 43 insertions

gistfile1.txt(Datei erstellt)

@@ -0,0 +1,43 @@
1 + function cmd::rule::list() {
2 + local rules_dir
3 + rules_dir="$(ctx::rules)"
4 +
5 + local rules=("${rules_dir}"/*.rule)
6 + if [[ ! -f "${rules[0]}" ]]; then
7 + log::wg "No rules configured"
8 + return 0
9 + fi
10 +
11 + log::section "Firewall Rules"
12 +
13 + printf "\n %-20s %-35s %-8s %-8s %s\n" \
14 + "NAME" "DESCRIPTION" "ALLOWS" "BLOCKS" "PEERS"
15 + printf " %s\n" "$(printf '─%.0s' {1..80})"
16 +
17 + for rule_file in "${rules_dir}"/*.rule; do
18 + [[ -f "$rule_file" ]] || continue
19 +
20 + local name desc blocks peer_count
21 + name=$(json::get "$rule_file" "name")
22 + desc=$(json::get "$rule_file" "desc")
23 +
24 + local n_allows n_block_ips n_block_ports blocks
25 + n_allows=$(json::get "$rule_file" "allow_ips" | wc -l)
26 + n_block_ips=$(json::get "$rule_file" "block_ips" | wc -l)
27 + n_block_ports=$(json::get "$rule_file" "block_ports" | wc -l)
28 + # wc -l returns 0 for empty, so this is safe
29 + blocks=$(( n_block_ips + n_block_ports ))
30 +
31 + # Count assigned peers
32 + peer_count=$(peers::with_rule "$name" | grep -c . || echo 0)
33 +
34 + printf " %-20s %-35s %-8s %-8s %s\n" \
35 + "$name" \
36 + "${desc:-—}" \
37 + "${n_allows}" \
38 + "${blocks}" \
39 + "${peer_count} peers"
40 + done
41 +
42 + printf "\n"
43 + }
Neuer Älter