gistfile1.txt
· 1.9 KiB · Text
Bruto
function cmd::fw::list() {
local peer="" type=""
local show_nflog=true show_accept=true show_drop=true
while [[ $# -gt 0 ]]; do
case "$1" in
--peer) peer="$2"; shift 2 ;;
--type) type="$2"; shift 2 ;;
--no-nflog) show_nflog=false; shift ;;
--no-accept) show_accept=false; shift ;;
--no-drop) show_drop=false; shift ;;
*) shift ;;
esac
done
log::section "Firewall Rules (FORWARD)"
printf "\n"
if [[ -n "$peer" ]]; then
local ip
ip=$(peers::get_ip "$peer")
[[ -z "$ip" ]] && log::error "Peer not found: $peer" && return 1
iptables -L FORWARD -n -v | grep -F "$ip" | while IFS= read -r rule; do
[[ -z "$rule" ]] && continue
! $show_nflog && [[ "$rule" =~ NFLOG ]] && continue
! $show_accept && [[ "$rule" =~ ACCEPT ]] && continue
! $show_drop && [[ "$rule" =~ DROP ]] && continue
ui::firewall_rule "$rule"
done
elif [[ -n "$type" ]]; then
local subnet
subnet=$(config::subnet_for "$type")
[[ -z "$subnet" ]] && log::error "Unknown type: $type" && return 1
iptables -L FORWARD -n -v | grep -F "$subnet" | while IFS= read -r rule; do
[[ -z "$rule" ]] && continue
! $show_nflog && [[ "$rule" =~ NFLOG ]] && continue
! $show_accept && [[ "$rule" =~ ACCEPT ]] && continue
! $show_drop && [[ "$rule" =~ DROP ]] && continue
ui::firewall_rule "$rule"
done
else
iptables -L FORWARD -n -v \
| grep -v "^Chain\|^target\|^$\|ACCEPT.*0\.0\.0\.0.*0\.0\.0\.0" \
| while IFS= read -r rule; do
[[ -z "$rule" ]] && continue
! $show_nflog && [[ "$rule" =~ NFLOG ]] && continue
! $show_accept && [[ "$rule" =~ ACCEPT ]] && continue
! $show_drop && [[ "$rule" =~ DROP ]] && continue
ui::firewall_rule "$rule"
done
fi
printf "\n"
}
| 1 | function cmd::fw::list() { |
| 2 | local peer="" type="" |
| 3 | local show_nflog=true show_accept=true show_drop=true |
| 4 | |
| 5 | while [[ $# -gt 0 ]]; do |
| 6 | case "$1" in |
| 7 | --peer) peer="$2"; shift 2 ;; |
| 8 | --type) type="$2"; shift 2 ;; |
| 9 | --no-nflog) show_nflog=false; shift ;; |
| 10 | --no-accept) show_accept=false; shift ;; |
| 11 | --no-drop) show_drop=false; shift ;; |
| 12 | *) shift ;; |
| 13 | esac |
| 14 | done |
| 15 | |
| 16 | log::section "Firewall Rules (FORWARD)" |
| 17 | printf "\n" |
| 18 | |
| 19 | if [[ -n "$peer" ]]; then |
| 20 | local ip |
| 21 | ip=$(peers::get_ip "$peer") |
| 22 | [[ -z "$ip" ]] && log::error "Peer not found: $peer" && return 1 |
| 23 | iptables -L FORWARD -n -v | grep -F "$ip" | while IFS= read -r rule; do |
| 24 | [[ -z "$rule" ]] && continue |
| 25 | ! $show_nflog && [[ "$rule" =~ NFLOG ]] && continue |
| 26 | ! $show_accept && [[ "$rule" =~ ACCEPT ]] && continue |
| 27 | ! $show_drop && [[ "$rule" =~ DROP ]] && continue |
| 28 | ui::firewall_rule "$rule" |
| 29 | done |
| 30 | elif [[ -n "$type" ]]; then |
| 31 | local subnet |
| 32 | subnet=$(config::subnet_for "$type") |
| 33 | [[ -z "$subnet" ]] && log::error "Unknown type: $type" && return 1 |
| 34 | iptables -L FORWARD -n -v | grep -F "$subnet" | while IFS= read -r rule; do |
| 35 | [[ -z "$rule" ]] && continue |
| 36 | ! $show_nflog && [[ "$rule" =~ NFLOG ]] && continue |
| 37 | ! $show_accept && [[ "$rule" =~ ACCEPT ]] && continue |
| 38 | ! $show_drop && [[ "$rule" =~ DROP ]] && continue |
| 39 | ui::firewall_rule "$rule" |
| 40 | done |
| 41 | else |
| 42 | iptables -L FORWARD -n -v \ |
| 43 | | grep -v "^Chain\|^target\|^$\|ACCEPT.*0\.0\.0\.0.*0\.0\.0\.0" \ |
| 44 | | while IFS= read -r rule; do |
| 45 | [[ -z "$rule" ]] && continue |
| 46 | ! $show_nflog && [[ "$rule" =~ NFLOG ]] && continue |
| 47 | ! $show_accept && [[ "$rule" =~ ACCEPT ]] && continue |
| 48 | ! $show_drop && [[ "$rule" =~ DROP ]] && continue |
| 49 | ui::firewall_rule "$rule" |
| 50 | done |
| 51 | fi |
| 52 | |
| 53 | printf "\n" |
| 54 | } |