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

Fix WAN failover

This commit is contained in:
Ycarus 2018-12-27 17:48:45 +01:00
parent 60b64f3160
commit ec183af72c

View file

@ -40,8 +40,6 @@ set_route() {
set network.default_fw_route.table=991337 set network.default_fw_route.table=991337
commit network.default_fw_route commit network.default_fw_route
EOF EOF
config_load openmptcprouter
config_foreach set_server_default_route server
#SETROUTE=true #SETROUTE=true
fi fi
fi fi
@ -51,7 +49,8 @@ set_server_default_route() {
local server=$1 local server=$1
local serverip local serverip
config_get serverip $server ip config_get serverip $server ip
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then
_log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY" _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set network.server_${server}_default_route=route set network.server_${server}_default_route=route
@ -62,7 +61,7 @@ set_server_default_route() {
set network.server_${server}_default_route.metric=1 set network.server_${server}_default_route.metric=1
commit network.server_${server}_default_route commit network.server_${server}_default_route
EOF EOF
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_INTERFACE metric 1 ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1
fi fi
} }
@ -72,7 +71,12 @@ set_server_route() {
config_get serverip $server ip config_get serverip $server ip
local metric=$2 local metric=$2
[ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric) [ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
[ -z "$interface_if" ] && interface_if=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
multipath_current_config=$(multipath $interface_if | grep deactivated)
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then
_log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric" _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set network.server_${server}_${OMR_TRACKER_INTERFACE}_route=route set network.server_${server}_${OMR_TRACKER_INTERFACE}_route=route
@ -101,6 +105,18 @@ set_server_route() {
fi fi
} }
del_server_route() {
local server=$1
local serverip
config_get serverip $server ip
_log "Delete $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY"
uci -q batch <<-EOF >/dev/null
delete network.server_${server}_${OMR_TRACKER_INTERFACE}_route
commit network
EOF
ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
}
dns_flush() { dns_flush() {
unbound-control flush-negative >/dev/null 2>&1 unbound-control flush-negative >/dev/null 2>&1
unbound-control flush-bogus >/dev/null 2>&1 unbound-control flush-bogus >/dev/null 2>&1
@ -146,17 +162,9 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then
if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
glorytun-udp path $OMR_TRACKER_DEVICE_IP dev tun0 down > /dev/null 2>&1 glorytun-udp path $OMR_TRACKER_DEVICE_IP dev tun0 down > /dev/null 2>&1
fi fi
config_load shadowsocks-libev
#if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
# local metric=$(ip rule show | grep "$OMR_TRACKER_DEVICE_IP" | grep -m 1 "$OMR_TRACKER_DEVICE" | grep -om1 'lookup [[:digit:]]' | awk '{print $2}')
# ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1
# config_foreach del_ss_route server $metric
#else
# if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1 ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
# fi config_load openmptcprouter
# config_foreach del_ss_route server off config_foreach del_server_route server
#fi
} }
if [ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then if [ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then