op-packages/luci-app-trojan-server/root/usr/share/trojan_server/firewall.include
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

40 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
count=$(iptables -n -L INPUT 2>/dev/null | grep -c "TROJAN-SERVER")
if [ -n "$count" ]; then
until [ "$count" = 0 ]
do
rules=$(iptables -n -L INPUT --line-num 2>/dev/null | grep "TROJAN-SERVER" | awk '{print $1}')
for rule in $rules
do
iptables -D INPUT $rule 2>/dev/null
break
done
count=$(expr $count - 1)
done
fi
iptables -F TROJAN-SERVER 2>/dev/null && iptables -X TROJAN-SERVER 2>/dev/null
enable=$(uci -q get trojan_server.@global[0].enable)
if [ $enable -eq 1 ]; then
iptables -N TROJAN-SERVER
iptables -I INPUT -j TROJAN-SERVER
count=$(uci show trojan_server | grep "@user" | sed -n '$p' | cut -d '[' -f 2 | cut -d ']' -f 1)
[ -n "$count" ] && [ "$count" -ge 0 ] && {
u_get() {
local ret=$(uci -q get trojan_server.@user[$1].$2)
echo ${ret:=$3}
}
for i in $(seq 0 $count); do
enable=$(u_get $i enable 0)
[ $enable -eq 0 ] && continue
remarks=$(u_get $i remarks)
port=$(u_get $i port)
iptables -A TROJAN-SERVER -p tcp --dport $port -m comment --comment "$remarks" -j ACCEPT
iptables -A TROJAN-SERVER -p udp --dport $port -m comment --comment "$remarks" -j ACCEPT
done
}
fi