Files
BFR/box/scripts/net.inotify

46 lines
1.4 KiB
Bash

#!/system/bin/sh
events=$1
# monitor_dir=$2
# monitor_file=$3
[ "$events" = "w" ] && [ -f "/data/adb/box/run/box.pid" ] || exit 0
export PATH="/data/adb/magisk:/data/adb/ksu/bin:/data/adb/ap/bin:$PATH:/system/bin"
# ex: 7.1.1
buildVersion=$(getprop ro.build.version.release)
minBuildVersion="11"
IPV="iptables" # Default
IP6V="ip6tables" # Default
# ex: 7.1.1 -> 7
buildVersionMajor=${buildVersion%%.*}
if [ "$buildVersionMajor" -ge "$minBuildVersion" ]; then
IPV="iptables -w 100"
IP6V="ip6tables -w 100"
fi
iptables="${IPV}"
ip6tables="${IP6V}"
logs="/data/adb/box/run"
rules_add() {
date > "${logs}/net.log"
iptables -t mangle -F LOCAL_IP_V4
ip -4 a | busybox awk '/inet/ {print $2}' | grep -vE "^127.0.0.1" | while read -r local_ipv4 ; do
${iptables} -t mangle -A LOCAL_IP_V4 -d $local_ipv4 -j ACCEPT
rv1=$?
${iptables} -t nat -A LOCAL_IP_V4 -d $local_ipv4 -j ACCEPT
rv2=$?
( [ $rv1 = "0" ] || [ $rv2 = "0" ] ) && echo "[Info]: local ip is $local_ipv4, anti-loopback rule has been inserted" >> ${logs}/net.log 2>&1
done
ip6tables -t mangle -F LOCAL_IP_V6
ip -6 a | busybox awk '/inet6/ {print $2}' | grep -vE "^fe80|^::1|^fd00" | while read -r local_ipv6 ; do
${ip6tables} -t mangle -A LOCAL_IP_V6 -d $local_ipv6 -j ACCEPT
[ $? = "0" ] && echo "[Info]: local ip is $local_ipv6, anti-loopback rule has been inserted" >> ${logs}/net.log 2>&1
done
}
rules_add