1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-15 03:51:51 +00:00

Only flush ipset when it's not a reload

This commit is contained in:
Ycarus (Yannick Chabanois) 2019-06-14 20:42:59 +02:00
parent 5b394c608f
commit 26cf1ed8fa

View file

@ -36,7 +36,7 @@ _bypass_domain() {
if [ -n "$domain" ]; then if [ -n "$domain" ]; then
domain=$(echo $domain | sed 's:^\.::') domain=$(echo $domain | sed 's:^\.::')
#logger -t "omr-bypass" "Get IPs of $domain..." #logger -t "omr-bypass" "Get IPs of $domain..."
if [ -z $BOOT ]; then if [ -z $RELOAD ]; then
resolve=$(dig a +timeout=3 +nocmd +noall +answer $domain | awk '{print $5}') resolve=$(dig a +timeout=3 +nocmd +noall +answer $domain | awk '{print $5}')
for ip in $resolve; do for ip in $resolve; do
_bypass_ip $ip $intf _bypass_ip $ip $intf
@ -185,30 +185,32 @@ _intf_rule() {
[ -z "$count" ] && return [ -z "$count" ] && return
[ -z "$intf" ] && return [ -z "$intf" ] && return
[ "$(echo $1 | grep _dev)" != "" ] && return [ "$(echo $1 | grep _dev)" != "" ] && return
ipset -q flush omr_dst_bypass_$intf > /dev/null 2>&1 [ -z "$RELOAD" ] && {
ipset -q flush omr6_dst_bypass_$intf > /dev/null 2>&1 ipset -q flush omr_dst_bypass_$intf > /dev/null 2>&1
ipset -q --exist restore <<-EOF ipset -q flush omr6_dst_bypass_$intf > /dev/null 2>&1
create omr_dst_bypass_$intf hash:net hashsize 64 ipset -q --exist restore <<-EOF
create omr6_dst_bypass_$intf hash:net family inet6 hashsize 64 create omr_dst_bypass_$intf hash:net hashsize 64
EOF create omr6_dst_bypass_$intf hash:net family inet6 hashsize 64
if [ "$(uci -q get openmptcprouter.settings.uci_rules)" = "1" ]; then
uci -q batch <<-EOF >/dev/null
delete network.${1}_fw_rule=rule
set network.${1}_fw_rule=rule
set network.${1}_fw_rule.priority=1
set network.${1}_fw_rule.mark=0x539${count}
set network.${1}_fw_rule.lookup=${count}
delete network.${1}_fw_rule6=rule6
set network.${1}_fw_rule6=rule6
set network.${1}_fw_rule6.priority=1
set network.${1}_fw_rule6.mark=0x6539${count}
set network.${1}_fw_rule6.lookup=${count}
commit network
EOF EOF
else if [ "$(uci -q get openmptcprouter.settings.uci_rules)" = "1" ]; then
ip rule add prio 1 fwmark 0x539$count lookup $count pref 1 > /dev/null 2>&1 uci -q batch <<-EOF >/dev/null
ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1 delete network.${1}_fw_rule=rule
fi set network.${1}_fw_rule=rule
set network.${1}_fw_rule.priority=1
set network.${1}_fw_rule.mark=0x539${count}
set network.${1}_fw_rule.lookup=${count}
delete network.${1}_fw_rule6=rule6
set network.${1}_fw_rule6=rule6
set network.${1}_fw_rule6.priority=1
set network.${1}_fw_rule6.mark=0x6539${count}
set network.${1}_fw_rule6.lookup=${count}
commit network
EOF
else
ip rule add prio 1 fwmark 0x539$count lookup $count pref 1 > /dev/null 2>&1
ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1
fi
}
if [ "$(iptables -w 40 -t mangle -L | grep omr_dst_bypass_$intf)" = "" ]; then if [ "$(iptables -w 40 -t mangle -L | grep omr_dst_bypass_$intf)" = "" ]; then
iptables-restore --wait=60 --noflush <<-EOF iptables-restore --wait=60 --noflush <<-EOF
*mangle *mangle
@ -284,12 +286,14 @@ boot() {
start_service() { start_service() {
#local count #local count
logger -t "omr-bypass" "Starting OMR-ByPass..." logger -t "omr-bypass" "Starting OMR-ByPass..."
ipset -q flush omr_dst_bypass_all > /dev/null 2>&1 [ -z "$RELOAD" ] && {
ipset -q flush omr6_dst_bypass_all > /dev/null 2>&1 ipset -q flush omr_dst_bypass_all > /dev/null 2>&1
ipset -q --exist restore <<-EOF ipset -q flush omr6_dst_bypass_all > /dev/null 2>&1
create omr_dst_bypass_all hash:net hashsize 64 ipset -q --exist restore <<-EOF
create omr6_dst_bypass_all hash:net family inet6 hashsize 64 create omr_dst_bypass_all hash:net hashsize 64
EOF create omr6_dst_bypass_all hash:net family inet6 hashsize 64
EOF
}
iptables-save --counters | grep -v omr-bypass | iptables-restore --counters iptables-save --counters | grep -v omr-bypass | iptables-restore --counters
iptables-restore --wait=60 --noflush <<-EOF iptables-restore --wait=60 --noflush <<-EOF
@ -398,7 +402,8 @@ start_service() {
config_load omr-bypass config_load omr-bypass
config_foreach _bypass_proto dpis config_foreach _bypass_proto dpis
/etc/init.d/dnsmasq restart [ -z "$RELOAD" ] && /etc/init.d/dnsmasq restart
[ -n "$RELOAD" ] && /etc/init.d/dnsmasq restart
logger -t "omr-bypass" "OMR-ByPass is running" logger -t "omr-bypass" "OMR-ByPass is running"
} }
@ -420,5 +425,6 @@ service_triggers() {
reload_service() { reload_service() {
[ "$( ipset -n list | grep omr_ )" = "" ] && return 0 [ "$( ipset -n list | grep omr_ )" = "" ] && return 0
RELOAD=1
start start
} }