Utoljára aktív 2 months ago

Revízió 3518806436e15feb3bece9bde303f91f75ac517e

gistfile1.txt Eredeti
1function 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}