mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-13 02:51:50 +00:00
Divide post-tracking script in 3 smaller scripts and move script to omr-tracker package
This commit is contained in:
parent
68277b56e0
commit
ab87b5f536
6 changed files with 314 additions and 270 deletions
14
omr-tracker/files/usr/share/omr/post-tracking.d/001-initialize
Executable file
14
omr-tracker/files/usr/share/omr/post-tracking.d/001-initialize
Executable file
|
@ -0,0 +1,14 @@
|
|||
|
||||
# Set default multipath status
|
||||
[ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
|
||||
[ "$OMR_TRACKER_INTERFACE" = "omr6in4" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$OMR_TRACKER_INTERFACE" != "omr6in4" ]; then
|
||||
metric="$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)"
|
||||
if [ -z "$metric" ] || ([ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -z "$(ip route show table $metric | grep $OMR_TRACKER_DEVICE)" ]) || ([ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -z "$(ip -6 route show table 6${metric} | grep $OMR_TRACKER_DEVICE)" ]); then
|
||||
_log "Routes not correctly set for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE table $metric) with IPs $OMR_TRACKER_DEVICE_IP $OMR_TRACKER_DEVICE_IP6"
|
||||
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE"
|
||||
/etc/init.d/omr-tracker restart
|
||||
exit 0
|
||||
fi
|
||||
fi
|
292
omr-tracker/files/usr/share/omr/post-tracking.d/002-error
Executable file
292
omr-tracker/files/usr/share/omr/post-tracking.d/002-error
Executable file
|
@ -0,0 +1,292 @@
|
|||
|
||||
|
||||
. /lib/functions/network.sh
|
||||
|
||||
default_gw=$(ip route get 1.1.1.1 | grep via | awk '{print $3}')
|
||||
default_gw6=$(ip -6 route get 2606:4700:4700::1111 | grep via | awk '{print $3}')
|
||||
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
|
||||
# An interface in error will never be used in MPTCP
|
||||
if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || ([ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$interface_up" != "true" ]); then
|
||||
#interface_autostart=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["autostart"]')
|
||||
#interface_available=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["available"]')
|
||||
#interface_pending=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["pending"]')
|
||||
#interface_error=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["errors"][0].code')
|
||||
|
||||
#if [ "$interface_available" = "true" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]) && [ "$interface_error" != "MM_PINCODE_REQUIRED" ] && [ "$interface_error" != "MM_FAILED_REASON_SIM_MISSING" ]; then
|
||||
#if [ "$interface_available" = "true" ] && [ "$interface_up" = "false" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]); then
|
||||
# _log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart interface"
|
||||
# _log "Set $OMR_TRACKER_INTERFACE down"
|
||||
# ifdown $OMR_TRACKER_INTERFACE
|
||||
# sleep 5
|
||||
# _log "Set $OMR_TRACKER_INTERFACE up"
|
||||
# ifup $OMR_TRACKER_INTERFACE
|
||||
# sleep 30
|
||||
#if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] && [ "$interface_up" = "false" ] && [ "$interface_available" = "false" ] && [ "$interface_pending" = "false" ] && [ "$interface_autostart" = "true" ]; then
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ]; then
|
||||
modemfind="0"
|
||||
device="$(uci -q get network.$OMR_TRACKER_INTERFACE.device)"
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
[ -n "$device" ] && MODEM_STATUS="$(timeout 3 mmcli -m $device -K)"
|
||||
modem=$device
|
||||
if [ -n "$MODEM_STATUS" ]; then
|
||||
modemfind="1"
|
||||
mm_state=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.state")
|
||||
if [ "$mm_state" = "failed" ]; then
|
||||
mm_state_failed=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.state-failed-reason")
|
||||
if [ "$mm_state_failed" = "unknown-capabilities" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE in failed state in ModemManager, reset modem..."
|
||||
/usr/bin/mmcli -m ${modem} -r 2>&1 >/dev/null
|
||||
sleep 30
|
||||
elif false && [ "$mm_state_failed" = "sim-missing" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE in failed state in ModemManager, reset modem..."
|
||||
/usr/bin/mmcli -m ${modem} -r 2>&1 >/dev/null
|
||||
#_log "Interface $OMR_TRACKER_INTERFACE in failed state sim-missing in ModemManager, reset modem..."
|
||||
#mm_primary_port=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.primary-port")
|
||||
#mbimcli -p -d /dev/$mm_primary_port --ms-device-reset 2>&1 >/dev/null
|
||||
fi
|
||||
elif [ "$mm_state" = "connected" ] || [ "$mm_state" = "enabled" ]; then
|
||||
_log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart interface"
|
||||
_log "Set $OMR_TRACKER_INTERFACE down"
|
||||
ifdown $OMR_TRACKER_INTERFACE
|
||||
sleep 5
|
||||
_log "Set $OMR_TRACKER_INTERFACE up"
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
sleep 30
|
||||
elif [ "$mm_state" = "disabled" ]; then
|
||||
# [ -n "$(echo $modeminfo | grep 'modem.3gpp.registration-state ' | grep home)" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) disabled, set it up"
|
||||
/usr/bin/mmcli -m ${modem} -e 2>&1 >/dev/null
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
sleep 30
|
||||
elif [ "$mm_state" = "registered" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) registered, set it up"
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
sleep 30
|
||||
elif [ "$mm_state" = "locked" ]; then
|
||||
mm_unlock_required=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.unlock-required")
|
||||
mm_generic_sim=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.sim")
|
||||
#mm_primary_port=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.primary-port")
|
||||
#mm_drivers=$(modemmanager_get_multivalue_field "${MODEM_STATUS}" "modem.generic.drivers")
|
||||
mm_unlock_retries=$(modemmanager_get_multivalue_field "${MODEM_STATUS}" "modem.generic.unlock-retries" | awk '{print substr($2,2,length($2)-2)}')
|
||||
if [ "$mm_unlock_required" = "sim-pin" ]; then
|
||||
# Sometimes PIN is not correctly sent to modem
|
||||
if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode)" ]; then
|
||||
if [ "$mm_unlock_retries" -gt "1" ] && [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode)" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) locked, set PIN"
|
||||
mmcli -a -m ${modem} -i $mm_generic_sim --pin=$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode) 2>&1 >/dev/null
|
||||
sleep 20
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
fi
|
||||
fi
|
||||
elif [ "$mm_unlock_required" = "sim-puk" ] && [ "$mm_unlock_retries" -gt "1" ] && [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pukcode)" ] && [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode)" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) locked, set PUK"
|
||||
mmcli -i $mm_generic_sim --puk=$(uci -q get network.$OMR_TRACKER_INTERFACE.pukcode) --pin=$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode) 2>&1 >/dev/null
|
||||
sleep 30
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ "$modemfind" = "0" ]; then
|
||||
#_log "Can't find $OMR_TRACKER_INTERFACE in ModemManager, rescan modem..."
|
||||
#/usr/bin/mmcli -S 2>&1 >/dev/null
|
||||
#_log "Can't find $OMR_TRACKER_INTERFACE in ModemManager, restart modemmanager..."
|
||||
_log "Can't find $OMR_TRACKER_INTERFACE in ModemManager"
|
||||
#/etc/init.d/modemmanager restart
|
||||
sleep 30
|
||||
fi
|
||||
fi
|
||||
#elif [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] && [ "$interface_available" = "false" ]; then
|
||||
# for modem in $(timeout 3 mmcli -L | awk -F/ '{ print $6}' | awk '{print $1}'); do
|
||||
# if [ -n "$(timeout 2 mmcli -m $modem -K | grep $OMR_TRACKER_DEVICE)" ]; then
|
||||
# modem_device=$(timeout 2 mmcli -m $modem -K | grep 'modem.generic.device ' | awk '{print $3}')
|
||||
# [ -n "$modem_device" ] && modem_interface=$(uci -q show network | grep $modem_device | awk -F. '{print $2}')
|
||||
# [ -n "$modem_interface" ] && {
|
||||
# _log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart associed interface $modem_interface"
|
||||
# ifdown $modem_interface
|
||||
# sleep 5
|
||||
# ifup $modem_interface
|
||||
# sleep 30
|
||||
# }
|
||||
# fi
|
||||
# done
|
||||
#fi
|
||||
|
||||
# This part must be done after modems restart because we have no idea when modems will be ready again... (another solution would be to check ModemManager status)
|
||||
if [ "$OMR_TRACKER_PREV_STATUS" = "$OMR_TRACKER_STATUS" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get the current multipath status
|
||||
multipath_status="off"
|
||||
# [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
|
||||
# [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
|
||||
if [ -e "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
||||
case "$(multipath "$OMR_TRACKER_DEVICE")" in
|
||||
*default*) multipath_status="on" ;;
|
||||
*backup*) multipath_status="backup" ;;
|
||||
*handover*) multipath_status="handover" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ "$multipath_status" != "off" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ]); then
|
||||
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
|
||||
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched off (interface up status: $interface_up - Tracker status: $OMR_TRACKER_STATUS)"
|
||||
else
|
||||
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched off because $OMR_TRACKER_STATUS_MSG"
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='down'
|
||||
fi
|
||||
#if [ "$(sysctl -n net.mptcp.mptcp_enabled | tr -d '\n')" = "1" ]; then
|
||||
# multipath "$OMR_TRACKER_DEVICE" off > /dev/null 2>&1
|
||||
#fi
|
||||
if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_DEVICE_IP6" ]; then
|
||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set down > /dev/null 2>&1
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ] && [ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ]; then
|
||||
VPN_BASE_INTF="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.baseintf)"
|
||||
VPN_BASE_INTF_IP=$(ubus call network.interface.$VPN_BASE_INTF status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
||||
if [ -n "$VPN_BASE_INTF" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set openvpn.$VPN_BASE_INTF.local=$VPN_BASE_INTF_IP
|
||||
commit openvpn
|
||||
EOF
|
||||
fi
|
||||
[ -z "VPN_BASE_INTF" ] && VPN_BASE_INTF="omr"
|
||||
/etc/init.d/openvpn restart $VPN_BASE_INTF 2>&1 >/dev/null
|
||||
fi
|
||||
config_load openmptcprouter
|
||||
config_foreach del_server_route server
|
||||
config_foreach del_server_route6 server
|
||||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ] || [ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Default gw: $default_gw - Set routes (current: $(ip r) )"
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New routes $(ip r)"
|
||||
elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE "no"
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no"
|
||||
elif [ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$(ip r show table 991337 | grep "$OMR_TRACKER_DEVICE ")" ]; then
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE "no"
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no"
|
||||
fi
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set balancing route (current: $(ip r) )"
|
||||
config_foreach set_server_all_routes server
|
||||
config_foreach set_server_all_routes6 server
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set balancing route done (new: $(ip r) )"
|
||||
fi
|
||||
fi
|
||||
|
||||
mail_alert=""
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)"
|
||||
fi
|
||||
[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
|
||||
[ "$mail_alert" = "1" ] && [ -n "$(uci -q get mail.default.to)" ] && {
|
||||
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
|
||||
if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then
|
||||
mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)"
|
||||
mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||
mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)"
|
||||
mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
|
||||
else
|
||||
echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is down\n\nConnection failure of $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to)
|
||||
fi
|
||||
}
|
||||
script_alert_down=""
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
script_alert_down="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.script_alert_down)"
|
||||
fi
|
||||
[ -n "$script_alert_down" ] && eval $script_alert_down
|
||||
|
||||
restart_down=""
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
restart_down="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.restart_down)"
|
||||
fi
|
||||
[ -z "$restart_down" ] && restart_down="$(uci -q get omr-tracker.defaults.restart_down)"
|
||||
[ "$restart_down" = "1" ] && {
|
||||
_log "Restart $OMR_TRACKER_INTERFACE"
|
||||
ifdown $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
|
||||
sleep 5
|
||||
ifup $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
|
||||
}
|
||||
|
||||
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] || [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ]; then
|
||||
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
|
||||
_log "$OMR_TRACKER_INTERFACE down"
|
||||
else
|
||||
_log "$OMR_TRACKER_INTERFACE down because $OMR_TRACKER_STATUS_MSG"
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
|
||||
else
|
||||
_log "Default gateway disabled, no default gateway set"
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "up" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi1.mode)" = "tcp_and_udp" ] && [ "$(uci -q get shadowsocks-libev.sss0.obfs)" != "1" ]; then
|
||||
_log "Tunnel down use ShadowSocks for UDP"
|
||||
uci -q set shadowsocks-libev.ss_rules.redir_udp='hi1'
|
||||
if /etc/init.d/shadowsocks-libev rules_exist ; then
|
||||
/etc/init.d/shadowsocks-libev rules_down 2>&1 >/dev/null
|
||||
/etc/init.d/shadowsocks-libev rules_up 2>&1 >/dev/null
|
||||
fi
|
||||
fi
|
||||
if [ "$(uci -q get dsvpn.vpn.enable)" = "1" ]; then
|
||||
_log "DSVPN down, restart it"
|
||||
/etc/init.d/dsvpn restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get mlvpn.general.enable)" = "1" ]; then
|
||||
_log "MLVPN down, restart it"
|
||||
/etc/init.d/mlvpn restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get glorytun.vpn.enable)" = "1" ]; then
|
||||
_log "Glorytun VPN down, restart it"
|
||||
/etc/init.d/glorytun restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get glorytun-udp.vpn.enable)" = "1" ]; then
|
||||
_log "Glorytun UDP VPN down, restart it"
|
||||
/etc/init.d/glorytun-udp restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get openvpn.omr.enabled)" = "1" ]; then
|
||||
_log "OpenVPN down, restart it"
|
||||
/etc/init.d/openvpn restart omr 2>&1 >/dev/null
|
||||
fi
|
||||
config_load openmptcprouter
|
||||
config_foreach disable_pihole server
|
||||
#if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then
|
||||
if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
|
||||
config_foreach set_server_default_route server
|
||||
config_foreach set_server_default_route6 server
|
||||
fi
|
||||
fi
|
||||
dns_flush
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.lc
|
||||
fi
|
||||
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
|
||||
#ubus call network reload
|
||||
|
||||
# Set a little sleep after an interface error
|
||||
# if [ -n "$RANDOM" ]; then
|
||||
# sleep `expr $RANDOM % 100`
|
||||
# else
|
||||
# sleep `awk 'BEGIN{srand();print int(rand()*20)}'`
|
||||
# fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
SETROUTE=false
|
||||
|
||||
. /lib/functions/network.sh
|
||||
|
@ -705,6 +709,7 @@ dns_flush() {
|
|||
# sleep `awk 'BEGIN{srand();print int(rand()*9)}'`
|
||||
#fi
|
||||
|
||||
|
||||
# Get the current multipath status
|
||||
multipath_status="off"
|
||||
[ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
|
||||
|
@ -717,12 +722,14 @@ if [ -e "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
|||
esac
|
||||
fi
|
||||
|
||||
|
||||
#default_gw=$(ip route show default | awk '/default/ {print $3}')
|
||||
#default_gw6=$(ip -6 route show default | awk '/default/ {print $3}')
|
||||
default_gw=$(ip route get 1.1.1.1 | grep via | awk '{print $3}')
|
||||
default_gw6=$(ip -6 route get 2606:4700:4700::1111 | grep via | awk '{print $3}')
|
||||
#current_interface_gw=$(uci -q get "network.$OMR_TRACKER_INTERFACE.gateway")
|
||||
|
||||
|
||||
initcwrwnd=""
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
|
||||
|
@ -736,276 +743,6 @@ if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$OMR_TR
|
|||
fi
|
||||
fi
|
||||
|
||||
# An interface in error will never be used in MPTCP
|
||||
if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || ([ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$interface_up" != "true" ]); then
|
||||
#interface_autostart=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["autostart"]')
|
||||
#interface_available=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["available"]')
|
||||
#interface_pending=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["pending"]')
|
||||
#interface_error=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["errors"][0].code')
|
||||
|
||||
#if [ "$interface_available" = "true" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]) && [ "$interface_error" != "MM_PINCODE_REQUIRED" ] && [ "$interface_error" != "MM_FAILED_REASON_SIM_MISSING" ]; then
|
||||
#if [ "$interface_available" = "true" ] && [ "$interface_up" = "false" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]); then
|
||||
# _log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart interface"
|
||||
# _log "Set $OMR_TRACKER_INTERFACE down"
|
||||
# ifdown $OMR_TRACKER_INTERFACE
|
||||
# sleep 5
|
||||
# _log "Set $OMR_TRACKER_INTERFACE up"
|
||||
# ifup $OMR_TRACKER_INTERFACE
|
||||
# sleep 30
|
||||
#if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] && [ "$interface_up" = "false" ] && [ "$interface_available" = "false" ] && [ "$interface_pending" = "false" ] && [ "$interface_autostart" = "true" ]; then
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ]; then
|
||||
modemfind="0"
|
||||
device="$(uci -q get network.$OMR_TRACKER_INTERFACE.device)"
|
||||
. /usr/share/ModemManager/modemmanager.common
|
||||
[ -n "$device" ] && MODEM_STATUS="$(timeout 3 mmcli -m $device -K)"
|
||||
modem=$device
|
||||
if [ -n "$MODEM_STATUS" ]; then
|
||||
modemfind="1"
|
||||
mm_state=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.state")
|
||||
if [ "$mm_state" = "failed" ]; then
|
||||
mm_state_failed=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.state-failed-reason")
|
||||
if [ "$mm_state_failed" = "unknown-capabilities" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE in failed state in ModemManager, reset modem..."
|
||||
/usr/bin/mmcli -m ${modem} -r 2>&1 >/dev/null
|
||||
sleep 30
|
||||
elif false && [ "$mm_state_failed" = "sim-missing" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE in failed state in ModemManager, reset modem..."
|
||||
/usr/bin/mmcli -m ${modem} -r 2>&1 >/dev/null
|
||||
#_log "Interface $OMR_TRACKER_INTERFACE in failed state sim-missing in ModemManager, reset modem..."
|
||||
#mm_primary_port=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.primary-port")
|
||||
#mbimcli -p -d /dev/$mm_primary_port --ms-device-reset 2>&1 >/dev/null
|
||||
fi
|
||||
elif [ "$mm_state" = "connected" ] || [ "$mm_state" = "enabled" ]; then
|
||||
_log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart interface"
|
||||
_log "Set $OMR_TRACKER_INTERFACE down"
|
||||
ifdown $OMR_TRACKER_INTERFACE
|
||||
sleep 5
|
||||
_log "Set $OMR_TRACKER_INTERFACE up"
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
sleep 30
|
||||
elif [ "$mm_state" = "disabled" ]; then
|
||||
# [ -n "$(echo $modeminfo | grep 'modem.3gpp.registration-state ' | grep home)" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) disabled, set it up"
|
||||
/usr/bin/mmcli -m ${modem} -e 2>&1 >/dev/null
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
sleep 30
|
||||
elif [ "$mm_state" = "registered" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) registered, set it up"
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
sleep 30
|
||||
elif [ "$mm_state" = "locked" ]; then
|
||||
mm_unlock_required=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.unlock-required")
|
||||
mm_generic_sim=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.sim")
|
||||
#mm_primary_port=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.primary-port")
|
||||
#mm_drivers=$(modemmanager_get_multivalue_field "${MODEM_STATUS}" "modem.generic.drivers")
|
||||
mm_unlock_retries=$(modemmanager_get_multivalue_field "${MODEM_STATUS}" "modem.generic.unlock-retries" | awk '{print substr($2,2,length($2)-2)}')
|
||||
if [ "$mm_unlock_required" = "sim-pin" ]; then
|
||||
# Sometimes PIN is not correctly sent to modem
|
||||
if [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode)" ]; then
|
||||
if [ "$mm_unlock_retries" -gt "1" ] && [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode)" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) locked, set PIN"
|
||||
mmcli -a -m ${modem} -i $mm_generic_sim --pin=$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode) 2>&1 >/dev/null
|
||||
sleep 20
|
||||
ifup $OMR_TRACKER_INTERFACE
|
||||
fi
|
||||
fi
|
||||
elif [ "$mm_unlock_required" = "sim-puk" ] && [ "$mm_unlock_retries" -gt "1" ] && [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pukcode)" ] && [ -n "$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode)" ]; then
|
||||
_log "Interface $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) locked, set PUK"
|
||||
mmcli -i $mm_generic_sim --puk=$(uci -q get network.$OMR_TRACKER_INTERFACE.pukcode) --pin=$(uci -q get network.$OMR_TRACKER_INTERFACE.pincode) 2>&1 >/dev/null
|
||||
sleep 30
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ "$modemfind" = "0" ]; then
|
||||
#_log "Can't find $OMR_TRACKER_INTERFACE in ModemManager, rescan modem..."
|
||||
#/usr/bin/mmcli -S 2>&1 >/dev/null
|
||||
#_log "Can't find $OMR_TRACKER_INTERFACE in ModemManager, restart modemmanager..."
|
||||
_log "Can't find $OMR_TRACKER_INTERFACE in ModemManager"
|
||||
#/etc/init.d/modemmanager restart
|
||||
sleep 30
|
||||
fi
|
||||
fi
|
||||
#elif [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] && [ "$interface_available" = "false" ]; then
|
||||
# for modem in $(timeout 3 mmcli -L | awk -F/ '{ print $6}' | awk '{print $1}'); do
|
||||
# if [ -n "$(timeout 2 mmcli -m $modem -K | grep $OMR_TRACKER_DEVICE)" ]; then
|
||||
# modem_device=$(timeout 2 mmcli -m $modem -K | grep 'modem.generic.device ' | awk '{print $3}')
|
||||
# [ -n "$modem_device" ] && modem_interface=$(uci -q show network | grep $modem_device | awk -F. '{print $2}')
|
||||
# [ -n "$modem_interface" ] && {
|
||||
# _log "No answer from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart associed interface $modem_interface"
|
||||
# ifdown $modem_interface
|
||||
# sleep 5
|
||||
# ifup $modem_interface
|
||||
# sleep 30
|
||||
# }
|
||||
# fi
|
||||
# done
|
||||
#fi
|
||||
|
||||
# This part must be done after modems restart because we have no idea when modems will be ready again... (another solution would be to check ModemManager status)
|
||||
if [ "$OMR_TRACKER_PREV_STATUS" = "$OMR_TRACKER_STATUS" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$multipath_status" != "off" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ]); then
|
||||
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
|
||||
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched off (interface up status: $interface_up - Tracker status: $OMR_TRACKER_STATUS)"
|
||||
else
|
||||
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched off because $OMR_TRACKER_STATUS_MSG"
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='down'
|
||||
fi
|
||||
#if [ "$(sysctl -n net.mptcp.mptcp_enabled | tr -d '\n')" = "1" ]; then
|
||||
# multipath "$OMR_TRACKER_DEVICE" off > /dev/null 2>&1
|
||||
#fi
|
||||
if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
|
||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_DEVICE_IP6" ]; then
|
||||
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set down > /dev/null 2>&1
|
||||
fi
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ] && [ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ]; then
|
||||
VPN_BASE_INTF="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.baseintf)"
|
||||
VPN_BASE_INTF_IP=$(ubus call network.interface.$VPN_BASE_INTF status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
||||
if [ -n "$VPN_BASE_INTF" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set openvpn.$VPN_BASE_INTF.local=$VPN_BASE_INTF_IP
|
||||
commit openvpn
|
||||
EOF
|
||||
fi
|
||||
[ -z "VPN_BASE_INTF" ] && VPN_BASE_INTF="omr"
|
||||
/etc/init.d/openvpn restart $VPN_BASE_INTF 2>&1 >/dev/null
|
||||
fi
|
||||
config_load openmptcprouter
|
||||
config_foreach del_server_route server
|
||||
config_foreach del_server_route6 server
|
||||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
if ([ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ] || [ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Default gw: $default_gw - Set routes (current: $(ip r) )"
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New routes $(ip r)"
|
||||
elif [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath)" = "master" ]; then
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE "no"
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no"
|
||||
elif [ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$(ip r show table 991337 | grep "$OMR_TRACKER_DEVICE ")" ]; then
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE "no"
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE "no"
|
||||
fi
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set balancing route (current: $(ip r) )"
|
||||
config_foreach set_server_all_routes server
|
||||
config_foreach set_server_all_routes6 server
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set balancing route done (new: $(ip r) )"
|
||||
fi
|
||||
fi
|
||||
|
||||
mail_alert=""
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)"
|
||||
fi
|
||||
[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
|
||||
[ "$mail_alert" = "1" ] && [ -n "$(uci -q get mail.default.to)" ] && {
|
||||
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
|
||||
if [ "$(uci -q get omr-tracker.defaults.mail_down_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_down_message)" != "" ]; then
|
||||
mail_subject="$(uci -q get omr-tracker.defaults.mail_down_subject)"
|
||||
mail_subject=`echo $mail_subject | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||
mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)"
|
||||
mail_message=`echo $mail_message | sed -e "s/%SYSNAME%/$OMR_SYSNAME/g" -e "s/%INTERFACE%/$OMR_TRACKER_INTERFACE/g" -e "s/%DEVICE%/$OMR_TRACKER_DEVICE/g" -e "s/%MESSAGE%/$OMR_TRACKER_STATUS_MSG/g"`
|
||||
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
|
||||
else
|
||||
echo -e "Subject: $OMR_SYSNAME: $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is down\n\nConnection failure of $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) detected. The reason is \"$OMR_TRACKER_STATUS_MSG\"." | sendmail $(uci -q get mail.default.to)
|
||||
fi
|
||||
}
|
||||
script_alert_down=""
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
script_alert_down="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.script_alert_down)"
|
||||
fi
|
||||
[ -n "$script_alert_down" ] && eval $script_alert_down
|
||||
|
||||
restart_down=""
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
restart_down="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.restart_down)"
|
||||
fi
|
||||
[ -z "$restart_down" ] && restart_down="$(uci -q get omr-tracker.defaults.restart_down)"
|
||||
[ "$restart_down" = "1" ] && {
|
||||
_log "Restart $OMR_TRACKER_INTERFACE"
|
||||
ifdown $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
|
||||
sleep 5
|
||||
ifup $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
|
||||
}
|
||||
|
||||
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] || [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ]; then
|
||||
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
|
||||
_log "$OMR_TRACKER_INTERFACE down"
|
||||
else
|
||||
_log "$OMR_TRACKER_INTERFACE down because $OMR_TRACKER_STATUS_MSG"
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
|
||||
config_load network
|
||||
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
|
||||
else
|
||||
_log "Default gateway disabled, no default gateway set"
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.shadowsocks)" = "up" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "" ] && [ "$(uci -q get shadowsocks-libev.hi1.mode)" = "tcp_and_udp" ] && [ "$(uci -q get shadowsocks-libev.sss0.obfs)" != "1" ]; then
|
||||
_log "Tunnel down use ShadowSocks for UDP"
|
||||
uci -q set shadowsocks-libev.ss_rules.redir_udp='hi1'
|
||||
if /etc/init.d/shadowsocks-libev rules_exist ; then
|
||||
/etc/init.d/shadowsocks-libev rules_down 2>&1 >/dev/null
|
||||
/etc/init.d/shadowsocks-libev rules_up 2>&1 >/dev/null
|
||||
fi
|
||||
fi
|
||||
if [ "$(uci -q get dsvpn.vpn.enable)" = "1" ]; then
|
||||
_log "DSVPN down, restart it"
|
||||
/etc/init.d/dsvpn restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get mlvpn.general.enable)" = "1" ]; then
|
||||
_log "MLVPN down, restart it"
|
||||
/etc/init.d/mlvpn restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get glorytun.vpn.enable)" = "1" ]; then
|
||||
_log "Glorytun VPN down, restart it"
|
||||
/etc/init.d/glorytun restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get glorytun-udp.vpn.enable)" = "1" ]; then
|
||||
_log "Glorytun UDP VPN down, restart it"
|
||||
/etc/init.d/glorytun-udp restart 2>&1 >/dev/null
|
||||
fi
|
||||
if [ "$(uci -q get openvpn.omr.enabled)" = "1" ]; then
|
||||
_log "OpenVPN down, restart it"
|
||||
/etc/init.d/openvpn restart omr 2>&1 >/dev/null
|
||||
fi
|
||||
config_load openmptcprouter
|
||||
config_foreach disable_pihole server
|
||||
#if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then
|
||||
if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
|
||||
config_foreach set_server_default_route server
|
||||
config_foreach set_server_default_route6 server
|
||||
fi
|
||||
fi
|
||||
dns_flush
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.lc
|
||||
fi
|
||||
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
|
||||
#ubus call network reload
|
||||
|
||||
# Set a little sleep after an interface error
|
||||
# if [ -n "$RANDOM" ]; then
|
||||
# sleep `expr $RANDOM % 100`
|
||||
# else
|
||||
# sleep `awk 'BEGIN{srand();print int(rand()*20)}'`
|
||||
# fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] || [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ]; then
|
||||
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ -n "$(uci -q get shadowsocks-libev.sss0)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi1" ]; then
|
||||
|
@ -1029,6 +766,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om
|
|||
|
||||
# Set VPN MTU
|
||||
if [ -n "$OMR_TRACKER_LATENCY" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]); then
|
||||
_log "Set VPN MTU"
|
||||
local serverip=$(uci -q get shadowsocks-libev.sss0.server)
|
||||
[ -z "$serverip" ] && serverip=$(uci -q get shadowsocks-rust.sss0.server)
|
||||
[ -z "$serverip" ] && serverip=$(uci -q get v2ray.omrout.s_vless_address)
|
Loading…
Reference in a new issue