gistfile1.txt
· 1.9 KiB · Text
Bruto
function cmd::inspect::_blocks_info() {
local name="${1:-}"
block::has_file "$name" || return 0
local blocked_direct
blocked_direct=$(block::is_blocked_direct "$name")
local blocked_groups
blocked_groups=$(block::get_groups "$name")
local rules_output
rules_output=$(block::get_rules "$name")
# Skip if truly empty
if [[ "$blocked_direct" != "true" ]] && \
ui::empty "$blocked_groups" && \
ui::empty "$rules_output"; then
block::cleanup "$name" # clean up stale empty file
return 0
fi
# Count rules for header
local rule_count=0
while IFS= read -r line; do
[[ -n "$line" ]] && (( rule_count++ )) || true
done <<< "$rules_output"
# Build header like firewall: Blocks (+N)
local header_counts=""
[[ "$rule_count" -gt 0 ]] && header_counts=" (${rule_count})"
[[ "$blocked_direct" == "true" || -n "$blocked_groups" ]] && \
header_counts="${header_counts} 🚫"
cmd::inspect::_section "Blocks${header_counts}"
printf "\n"
[[ "$blocked_direct" == "true" ]] && \
printf " \033[1;31m🚫\033[0m blocked directly\n"
[[ -n "$blocked_groups" ]] && \
printf " \033[1;31m🚫\033[0m blocked by groups: %s\n" "$blocked_groups"
block::format_rules "$name"
return 0
}
function cmd::inspect::_firewall_info() {
local name="${1:-}"
local ip
ip=$(peers::get_ip "$name")
local total=0 accepts=0 drops=0
local rules_output=()
while IFS= read -r line; do
[[ -z "$line" ]] && continue
(( total++ )) || true
[[ "$line" =~ ACCEPT ]] && (( accepts++ )) || true
[[ "$line" =~ DROP ]] && (( drops++ )) || true
rules_output+=("$line")
done < <(fw::forward_rules_for_ip "$ip" | grep -v NFLOG)
ui::empty "${rules_output[*]}" && return 0
printf "\n \033[0;37m── Firewall (%s %s) \033[0m%s\n\n" \
"$(color::green "+${accepts}")" \
"$(color::red "-${drops}")" \
"$(printf '\033[0;37m─%.0s' {1..28})"
fw::list_peer_rules "$ip" false
return 0
}
| 1 | function cmd::inspect::_blocks_info() { |
| 2 | local name="${1:-}" |
| 3 | block::has_file "$name" || return 0 |
| 4 | |
| 5 | local blocked_direct |
| 6 | blocked_direct=$(block::is_blocked_direct "$name") |
| 7 | |
| 8 | local blocked_groups |
| 9 | blocked_groups=$(block::get_groups "$name") |
| 10 | |
| 11 | local rules_output |
| 12 | rules_output=$(block::get_rules "$name") |
| 13 | |
| 14 | # Skip if truly empty |
| 15 | if [[ "$blocked_direct" != "true" ]] && \ |
| 16 | ui::empty "$blocked_groups" && \ |
| 17 | ui::empty "$rules_output"; then |
| 18 | block::cleanup "$name" # clean up stale empty file |
| 19 | return 0 |
| 20 | fi |
| 21 | |
| 22 | # Count rules for header |
| 23 | local rule_count=0 |
| 24 | while IFS= read -r line; do |
| 25 | [[ -n "$line" ]] && (( rule_count++ )) || true |
| 26 | done <<< "$rules_output" |
| 27 | |
| 28 | # Build header like firewall: Blocks (+N) |
| 29 | local header_counts="" |
| 30 | [[ "$rule_count" -gt 0 ]] && header_counts=" (${rule_count})" |
| 31 | [[ "$blocked_direct" == "true" || -n "$blocked_groups" ]] && \ |
| 32 | header_counts="${header_counts} 🚫" |
| 33 | |
| 34 | cmd::inspect::_section "Blocks${header_counts}" |
| 35 | printf "\n" |
| 36 | |
| 37 | [[ "$blocked_direct" == "true" ]] && \ |
| 38 | printf " \033[1;31m🚫\033[0m blocked directly\n" |
| 39 | [[ -n "$blocked_groups" ]] && \ |
| 40 | printf " \033[1;31m🚫\033[0m blocked by groups: %s\n" "$blocked_groups" |
| 41 | |
| 42 | block::format_rules "$name" |
| 43 | return 0 |
| 44 | } |
| 45 | function cmd::inspect::_firewall_info() { |
| 46 | local name="${1:-}" |
| 47 | local ip |
| 48 | ip=$(peers::get_ip "$name") |
| 49 | |
| 50 | local total=0 accepts=0 drops=0 |
| 51 | local rules_output=() |
| 52 | while IFS= read -r line; do |
| 53 | [[ -z "$line" ]] && continue |
| 54 | (( total++ )) || true |
| 55 | [[ "$line" =~ ACCEPT ]] && (( accepts++ )) || true |
| 56 | [[ "$line" =~ DROP ]] && (( drops++ )) || true |
| 57 | rules_output+=("$line") |
| 58 | done < <(fw::forward_rules_for_ip "$ip" | grep -v NFLOG) |
| 59 | |
| 60 | ui::empty "${rules_output[*]}" && return 0 |
| 61 | |
| 62 | printf "\n \033[0;37m── Firewall (%s %s) \033[0m%s\n\n" \ |
| 63 | "$(color::green "+${accepts}")" \ |
| 64 | "$(color::red "-${drops}")" \ |
| 65 | "$(printf '\033[0;37m─%.0s' {1..28})" |
| 66 | |
| 67 | fw::list_peer_rules "$ip" false |
| 68 | |
| 69 | return 0 |
| 70 | } |