diff --git a/omr-schedule/files/bin/omr-schedule b/omr-schedule/files/bin/omr-schedule index 5d319b6f7..846c92703 100755 --- a/omr-schedule/files/bin/omr-schedule +++ b/omr-schedule/files/bin/omr-schedule @@ -1,4 +1,6 @@ #!/bin/sh +. /lib/functions.sh +. /lib/functions/network.sh for schedule_bin in /usr/share/omr/schedule.d/*; do [ -x "$schedule_bin" ] && ( diff --git a/omr-schedule/files/usr/share/omr/schedule.d/010-services b/omr-schedule/files/usr/share/omr/schedule.d/010-services index 49282f329..d1cb77c22 100755 --- a/omr-schedule/files/usr/share/omr/schedule.d/010-services +++ b/omr-schedule/files/usr/share/omr/schedule.d/010-services @@ -137,19 +137,34 @@ restart_omrtracker() { sleep 10 } +set_lan_ips() { + config_get ip4table "$1" ip4table + config_get device "$1" device + config_get proto "$1" proto + if [ "$ip4table" = "lan" ] && [ -n "$device" ] && ([ "$proto" = "dhcp" ] || [ "$proto" = "static" ]); then + [ -z "$(uci -q get shadowsocks-libev.ss_rules.ifnames | grep $device)" ] && { + uci -q add_list shadowsocks-libev.ss_rules.ifnames="$device" + uci -q add_list shadowsocks-rust.ss_rules.ifnames="$device" + } + elif [ -n "$device" ] && [ -n "$(uci -q get shadowsocks-libev.ss_rules.ifnames | grep $device)" ]; then + uci -q del_list shadowsocks-libev.ss_rules.ifnames="$device" + uci -q del_list shadowsocks-rust.ss_rules.ifnames="$device" + fi +} config_load network config_foreach restart_omrtracker interface - -mutlipath_fix() { +config_foreach set_lan_ips interface +uci -q commit shadowsocks-libev.ss_rules +uci -q commit shadowsocks-rust.ss_rules +multipath_fix() { config_get multipath "$1" multipath [ "$multipath" != "off" ] && return interface="$(ifstatus $1 | jsonfilter -q -e '@.l3_device' | tr -d '\n')" - [ -n "$interface"] && [ -z "$(multipath $interface | grep deactivated)" ] && /etc/init.d/mptcp reload $interface 2>&1 >/dev/null + [ -n "$interface" ] && [ -z "$(multipath $interface | grep deactivated)" ] && /etc/init.d/mptcp reload $interface 2>&1 >/dev/null } config_load network config_foreach multipath_fix interface - if [ -f /etc/init.d/shadowsocks-libev ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(pgrep -f omr-tracker-ss)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then _log "Can't find omr-tracker-ss for Shadowsocks libev, restart omr-tracker..." /etc/init.d/omr-tracker restart 2>&1 >/dev/null diff --git a/omr-schedule/files/usr/share/omr/schedule.d/030-bypass b/omr-schedule/files/usr/share/omr/schedule.d/030-bypass index 19ff52437..67b86e1c2 100755 --- a/omr-schedule/files/usr/share/omr/schedule.d/030-bypass +++ b/omr-schedule/files/usr/share/omr/schedule.d/030-bypass @@ -1,9 +1,15 @@ #!/bin/sh -bypassipvs4s=$(ipset -o save list omr_dst_bypass_srv_vpn1_4) -[ -z "$bypassipvs4s" ] && bypassipv4s=$(nft -j list set inet fw4 "omr_dst_bypass_srv_vpn1_4" | jsonfilter -e @.nftables[1].set.elem[*].prefix | awk '{gsub(/"/,"",$3);gsub(/,/,"/",$3); print $3 $5}') -bypassipvs6s=$(ipset -o save list omr_dst_bypass_srv_vpn1_6) -[ -z "$bypassipvs6s" ] && bypassipv6s=$(nft -j list set inet fw4 "omr_dst_bypass_srv_vpn1_6" | jsonfilter -e @.nftables[1].set.elem[*].prefix | awk '{gsub(/"/,"",$3);gsub(/,/,"/",$3); print $3 $5}') +bypassipvs4s=$(ipset -o save list omr_dst_bypass_vpn1_4 2>/dev/null) +[ -z "$bypassipvs4s" ] && { + ipv4set=$(nft -j list set inet fw4 "omr_dst_bypass_vpn1_4" 2>/dev/null) + [ -n "$ipv4set" ] && bypassipv4s=$(echo "$ipv4set" | jsonfilter -e @.nftables[1].set.elem[*].prefix | awk '{gsub(/"/,"",$3);gsub(/,/,"/",$3); print $3 $5}') +} +bypassipvs6s=$(ipset -o save list omr_dst_bypass_vpn1_6 2>/dev/null) +[ -z "$bypassipvs6s" ] && { + ipv6set=$(nft -j list set inet fw4 "omr_dst_bypass_vpn1_6" 2>/dev/null) + [ -n "$ipv6set" ] && bypassipv6s=$(echo "$ipv6set" | jsonfilter -e @.nftables[1].set.elem[*].prefix | awk '{gsub(/"/,"",$3);gsub(/,/,"/",$3); print $3 $5}') +} #" vpnipv4md5=$(echo "${bypassipv4s}" | md5sum | awk '{print $1}' | tr -d "\n") vpnipv6md5=$(echo "${bypassipv6s}" | md5sum | awk '{print $1}' | tr -d "\n")