31 lines
621 B
Bash
Executable File
31 lines
621 B
Bash
Executable File
#!/bin/bash
|
|
|
|
stop() {
|
|
# Flush iptables (Code from archlinux)
|
|
iptables=ip$1tables
|
|
if ! type -p "$iptables" &>/dev/null; then
|
|
echo "error: invalid argument"
|
|
exit 1
|
|
fi
|
|
|
|
while read -r table; do
|
|
tables+=("/usr/share/iptables/empty-$table.rules")
|
|
done <"/proc/net/ip$1_tables_names"
|
|
|
|
if (( ${#tables[*]} )); then
|
|
cat "${tables[@]}" | "$iptables-restore"
|
|
fi
|
|
|
|
# Clear the trap
|
|
trap - SIGINT SIGTERM
|
|
kill -- -$(pgrep iptables.sh)
|
|
}
|
|
|
|
/usr/sbin/iptables-restore /etc/iptables/iptables.rules
|
|
|
|
# Run stop function when SIGINT or SIGTERM signals are caught
|
|
trap "stop $1" SIGINT SIGTERM
|
|
sleep infinity
|
|
|
|
|