From b482cd1dbd059230e6a2d6b9567f05c4ce6af067 Mon Sep 17 00:00:00 2001 From: Ycarus Date: Tue, 24 Jul 2018 14:26:04 +0200 Subject: [PATCH] Add server route for all wans --- .../share/omr/post-tracking.d/post-tracking | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index 36e2999c3..793e79b34 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -35,22 +35,22 @@ set_route() { set_ss_route() { local server_ip upstreams nginxip - local metric $2 + local metric=$2 [ -z "$metric" ] && metric=1 config_get server_ip $1 server if [ "$server_ip" = "127.0.0.1" ]; then upstreams=$(uci -q get nginx-ha.ShadowSocks.upstreams | sed -e "s/' '/%/" -e 's/ /_/g' -e "s/'//g" -e 's/%/ /') for up in $upstreams; do - _log "up : $up" + _log "up: $up - metric: $metric" nginxip=$(echo $up | cut -d: -f1) - if [ "$nginxip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE | grep $nginxip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then + if [ "$nginxip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $nginxip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then _log "Set server $nginxip route via $OMR_TRACKER_DEVICE" ip route replace $nginxip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric fi done else - if [ "$server_ip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE | grep $server_ip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then - _log "Set server $server_ip route via $OMR_TRACKER_DEVICE" + if [ "$server_ip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $server_ip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then + _log "Set server $server_ip route via $OMR_TRACKER_DEVICE metric $metric" ip route replace $server_ip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric fi fi @@ -58,7 +58,7 @@ set_ss_route() { del_ss_route() { local server_ip upstreams nginxip - local metric $2 + local metric=$2 [ -z "$metric" ] && metric=1 config_get server_ip $1 server if [ "$server_ip" = "127.0.0.1" ]; then @@ -66,13 +66,13 @@ del_ss_route() { for up in $upstreams; do _log "down : $up" nginxip=$(echo $up | cut -d: -f1) - if [ "$nginxip" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE | grep $nginxip)" != "" ]; then + if [ "$nginxip" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $nginxip)" != "" ]; then _log "Remove server $nginxip route via $OMR_TRACKER_DEVICE" ip route delete $nginxip dev $OMR_TRACKER_DEVICE metric $metric fi done else - if [ "$server_ip" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE | grep $server_ip)" != "" ]; then + if [ "$server_ip" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $server_ip)" != "" ]; then _log "Remove server $server_ip route via $OMR_TRACKER_DEVICE" ip route delete $server_ip dev $OMR_TRACKER_DEVICE metric $metric fi @@ -151,9 +151,11 @@ if [ "$multipath_config" = "master" ]; then fi multipath_config="on" else - local metric=$(ip rule show | grep $OMR_TRACKER_DEVICE_GATEWAY | awk '{print $5}') - config_load shadowsocks-libev - config_foreach set_ss_route server $metric + local metric=$(ip rule show | grep "$OMR_TRACKER_DEVICE_IP" | awk '{print $5}') + [ -n "$metric" ] && { + config_load shadowsocks-libev + config_foreach set_ss_route server $metric + } fi if [ "$(uci -q get omr-bypass.defaults.ifname)" = "$OMR_TRACKER_DEVICE" ] && [ "$(ip route show table 991337 | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337