2018-01-23 14:35:00 +00:00
SETROUTE=false
2021-01-16 07:14:09 +00:00
2021-07-04 05:20:55 +00:00
. /lib/functions/network.sh
2021-08-01 06:28:11 +00:00
find_network_device() {
local device="${1}"
local device_section=""
check_device() {
local cfg="${1}"
local device="${2}"
local type name
config_get name "${cfg}" name
[ "${name}" = "${device}" ] && device_section="${cfg}"
}
2022-01-12 17:23:34 +00:00
if [ ! -z "$device" ]; then
config_load network
config_foreach check_device device "$(uci -q network.${device}.device)"
fi
2021-08-01 06:28:11 +00:00
echo "${device_section}"
}
2018-01-23 14:35:00 +00:00
set_route() {
2020-05-14 19:14:42 +00:00
local multipath_config_route interface_gw interface_if
2018-01-23 14:35:00 +00:00
INTERFACE=$1
2018-02-20 12:48:12 +00:00
PREVINTERFACE=$2
2020-08-21 08:09:28 +00:00
SETDEFAULT=$3
[ -z "$SETDEFAULT" ] && SETDEFAULT="yes"
2022-01-12 17:23:34 +00:00
[ -z "$INTERFACE" ] && return
2020-05-14 19:14:42 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $INTERFACE
2020-09-02 08:07:24 +00:00
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
2021-07-04 05:20:55 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2018-07-23 20:31:43 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.device)
2019-03-28 20:35:05 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
2021-02-15 18:55:07 +00:00
[ -n "$(echo $interface_if | grep '@')" ] && interface_if=$(ifstatus "${INTERFACE}" | jsonfilter -q -e '@["device"]')
2019-11-13 18:22:08 +00:00
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
2020-09-02 08:07:24 +00:00
if [ "$multipath_config_route" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2018-05-29 16:03:50 +00:00
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
if [ -z "$interface_gw" ]; then
2019-01-11 17:10:22 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
2018-03-06 07:20:59 +00:00
fi
2018-05-29 16:03:50 +00:00
if [ -z "$interface_gw" ]; then
2019-01-11 17:10:22 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
2018-03-06 07:20:59 +00:00
fi
2018-07-23 15:37:37 +00:00
if [ -z "$interface_gw" ]; then
2019-01-11 17:10:22 +00:00
interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
2018-07-23 15:37:37 +00:00
fi
2020-02-25 13:20:30 +00:00
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then
2021-12-06 18:36:33 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && [ "$SETDEFAULT" = "yes" ] && _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if"
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && [ "$SETDEFAULT" != "yes" ] && _log "$PREVINTERFACE down. Replace default in table 991337 route by $interface_gw dev $interface_if"
2023-02-25 14:21:56 +00:00
[ "$SETDEFAULT" = "yes" ] && [ "$(uci -q openmptcprouter.settings.defaultgw)" != "0" ] && ip route replace default scope global metric 1 via $interface_gw dev $interface_if initcwnd 10 initrwnd 10 2>&1 >/dev/null
ip route replace default via $interface_gw dev $interface_if table 991337 initcwnd 10 initrwnd 10 2>&1 >/dev/null && SETROUTE=true
2018-02-22 11:03:37 +00:00
fi
2018-01-23 14:35:00 +00:00
fi
}
2021-01-16 07:14:09 +00:00
set_route6() {
local multipath_config_route interface_gw interface_if
INTERFACE=$1
PREVINTERFACE=$2
SETDEFAULT=$3
[ -z "$SETDEFAULT" ] && SETDEFAULT="yes"
2022-01-12 17:23:34 +00:00
[ -z "$INTERFACE" ] && return
2021-01-16 07:14:09 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $INTERFACE
2021-01-16 07:14:09 +00:00
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
2021-07-04 05:20:55 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-01-16 07:14:09 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.device)
2021-01-16 07:14:09 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
2021-02-15 18:55:07 +00:00
[ -n "$(echo $interface_if | grep '@')" ] && interface_if=$(ifstatus "$INTERFACE" | jsonfilter -q -e '@["device"]')
2021-01-16 07:14:09 +00:00
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
if [ "$multipath_config_route" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
fi
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
fi
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
fi
2021-01-18 16:22:27 +00:00
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep ':')" ]; then
2021-01-16 07:14:09 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "$PREVINTERFACE down. Replace default route by $interface_gw dev $interface_if"
2022-06-24 16:12:43 +00:00
[ "$SETDEFAULT" = "yes" ] && [ "$(uci -q openmptcprouter.settings.defaultgw)" != "0" ] && ip -6 route replace default scope metric 1 global nexthop via $interface_gw dev $interface_if 2>&1 >/dev/null
2021-03-18 14:49:16 +00:00
ip -6 route replace default via $interface_gw dev $interface_if table 991337 2>&1 >/dev/null && SETROUTE=true
2021-01-16 07:14:09 +00:00
fi
fi
}
2018-12-21 14:38:45 +00:00
set_server_default_route() {
local server=$1
2021-01-21 17:59:55 +00:00
server_route() {
local serverip multipath_config_route
serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
2022-01-12 17:23:34 +00:00
[ -z "$OMR_TRACKER_INTERFACE" ] && return
2021-01-21 17:59:55 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
2021-04-12 08:42:01 +00:00
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ]; then
2021-01-21 17:59:55 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY"
if [ "$(ip r show $serverip | grep nexthop)" != "" ]; then
ip r delete $serverip >/dev/null 2>&1
fi
2023-02-25 14:21:56 +00:00
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric 1 initcwnd 10 initrwnd 10 2>&1 >/dev/null
2021-01-21 17:59:55 +00:00
fi
}
config_list_foreach $server ip server_route
2018-03-19 15:19:24 +00:00
}
2021-01-16 07:14:09 +00:00
set_server_default_route6() {
local server=$1
2021-01-21 17:59:55 +00:00
server_route() {
local serverip multipath_config_route
serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
2022-01-12 17:23:34 +00:00
[ -z "$OMR_TRACKER_INTERFACE" ] && return
2021-01-21 17:59:55 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
2021-04-12 08:42:01 +00:00
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric 1 | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ]; then
2021-01-21 17:59:55 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route via $OMR_TRACKER_DEVICE_GATEWAY6"
if [ "$(ip -6 r show $serverip | grep nexthop)" != "" ]; then
ip -6 r delete $serverip >/dev/null 2>&1
fi
2021-03-18 14:49:16 +00:00
ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric 1 2>&1 >/dev/null
2021-01-21 17:59:55 +00:00
fi
}
config_list_foreach $server ip server_route
2021-01-16 07:14:09 +00:00
}
2020-02-28 18:51:17 +00:00
delete_server_default_route() {
local server=$1
2021-01-21 17:59:55 +00:00
delete_route() {
local serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
if [ "$serverip" != "" ] && [ "$(ip route show $serverip metric 1)" != "" ]; then
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route"
2021-03-18 14:49:16 +00:00
[ -n "$(ip route show $serverip metric 1)" ] && ip route del $serverip metric 1 >/dev/null 2>&1
2021-01-21 17:59:55 +00:00
fi
}
config_list_foreach $server ip delete_route
2020-02-28 18:51:17 +00:00
}
2021-01-16 07:14:09 +00:00
delete_server_default_route6() {
local server=$1
2021-01-21 17:59:55 +00:00
delete_route() {
local serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
if [ "$serverip" != "" ] && [ "$(ip -6 route show $serverip metric 1)" != "" ]; then
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Delete server ($serverip) default route"
2021-03-18 14:49:16 +00:00
[ -n "$(ip -6 route show $serverip metric 1)" ] && ip -6 route del $serverip metric 1 >/dev/null 2>&1
2021-01-21 17:59:55 +00:00
fi
}
config_list_foreach $server ip delete_route
2021-01-16 07:14:09 +00:00
}
2019-07-24 17:58:58 +00:00
set_routes_intf() {
2020-05-14 19:14:42 +00:00
local multipath_config_route
2019-07-24 17:58:58 +00:00
local INTERFACE=$1
2022-01-12 17:23:34 +00:00
[ -z "$INTERFACE" ] && return
2020-05-14 19:14:42 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $INTERFACE
[ -z "$interface_if" ] && interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2019-07-24 17:58:58 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.device)
2019-07-24 17:58:58 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
2021-02-15 18:55:07 +00:00
[ -n "$(echo $interface_if | grep '@')" ] && ifname=$(ifstatus "$INTERFACE" | jsonfilter -q -e '@["device"]')
2020-09-02 08:07:24 +00:00
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
2019-11-13 18:22:08 +00:00
#multipath_current_config=$(multipath $interface_if | grep 'deactivated')
2019-11-17 07:55:15 +00:00
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
2021-04-28 11:06:59 +00:00
interface_vpn=$(uci -q get openmptcprouter.$INTERFACE.vpn || echo "0")
2021-05-17 10:29:08 +00:00
if ([ "$interface_vpn" = "0" ] || [ "$(uci -q get openmptcprouter.settings.allmptcpovervpn)" = "0" ]) && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_if" != "" ] && [ "$interface_up" = "true" ]; then
2019-07-24 17:58:58 +00:00
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
fi
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
fi
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
fi
2021-04-12 08:42:01 +00:00
#if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$serverip" ] && [ "$(ip route show $serverip | grep $interface_if)" = "" ]; then
2021-02-04 10:10:37 +00:00
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -z "$(echo $interface_gw | grep :)" ]; then
2020-05-29 20:01:29 +00:00
if [ "$multipath_config_route" = "master" ]; then
2023-06-21 07:55:51 +00:00
weight=100
2020-05-29 20:01:29 +00:00
else
weight=1
fi
if [ "$multipath_config_route" = "backup" ]; then
2020-09-16 15:13:15 +00:00
nbintfb=$((nbintfb+1))
2020-06-10 13:53:52 +00:00
if [ -z "$routesintfbackup" ]; then
routesintfbackup="nexthop via $interface_gw dev $interface_if weight $weight"
else
routesintfbackup="$routesintfbackup nexthop via $interface_gw dev $interface_if weight $weight"
fi
2020-05-29 20:01:29 +00:00
else
2020-08-21 08:09:28 +00:00
nbintf=$((nbintf+1))
2020-06-10 13:53:52 +00:00
if [ -z "$routesintf" ]; then
routesintf="nexthop via $interface_gw dev $interface_if weight $weight"
else
routesintf="$routesintf nexthop via $interface_gw dev $interface_if weight $weight"
fi
2020-05-29 20:01:29 +00:00
fi
2019-07-24 17:58:58 +00:00
fi
fi
}
2021-01-16 07:14:09 +00:00
set_routes_intf6() {
local multipath_config_route
local INTERFACE=$1
2022-01-12 17:23:34 +00:00
[ -z "$INTERFACE" ] && return
2021-01-16 07:14:09 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $INTERFACE
[ -z "$interface_if" ] && interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-01-16 07:14:09 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.device)
2021-01-16 07:14:09 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
2021-02-15 18:55:07 +00:00
[ -n "$(echo $interface_if | grep '@')" ] && interface_if=$(ifstatus "$INTERFACE" | jsonfilter -q -e '@["device"]')
2021-01-16 07:14:09 +00:00
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
#multipath_current_config=$(multipath $interface_if | grep 'deactivated')
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
2021-04-28 11:06:59 +00:00
interface_vpn=$(uci -q get openmptcprouter.$INTERFACE.vpn || echo "0")
2021-05-17 10:29:08 +00:00
if ([ "$interface_vpn" = "0" ] || [ "$(uci -q get openmptcprouter.settings.allmptcpovervpn)" = "0" ]) && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_if" != "" ] && [ "$interface_up" = "true" ]; then
2021-02-19 16:13:00 +00:00
interface_gw="$(uci -q get network.$INTERFACE.ip6gw)"
interface_ip6="$(uci -q get network.$INTERFACE.ip6)"
if [ -z "$interface_gw" ]; then
2021-02-20 17:19:04 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${interface_ip6}\"].nexthop" | tr -d "\n")
2021-02-19 16:13:00 +00:00
fi
if [ -z "$interface_gw" ]; then
2021-02-20 17:19:04 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${interface_ip6}/64\"].nexthop" | tr -d "\n")
2021-02-19 16:13:00 +00:00
fi
if [ -z "$interface_gw" ]; then
2021-02-20 17:19:04 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${interface_ip6}/56\"].nexthop" | tr -d "\n")
2021-02-19 16:13:00 +00:00
fi
2021-01-16 07:14:09 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
fi
2021-02-19 16:13:00 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.nexthop="::"].target' | tr -d "\n")
fi
2021-01-16 07:14:09 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
fi
2021-02-19 16:13:00 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.nexthop="::"].target' | tr -d "\n")
fi
2021-01-16 07:14:09 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
fi
2021-04-12 08:42:01 +00:00
#if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$serverip" ] && [ "$(ip -6 route show $serverip | grep $interface_if)" = "" ]; then
2021-01-16 07:14:09 +00:00
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then
if [ "$multipath_config_route" = "master" ]; then
2023-06-21 07:55:51 +00:00
weight=100
2021-01-16 07:14:09 +00:00
else
weight=1
fi
if [ "$multipath_config_route" = "backup" ]; then
2021-01-21 10:27:28 +00:00
nbintfb6=$((nbintfb6+1))
2021-01-16 07:14:09 +00:00
if [ -z "$routesintfbackup6" ]; then
routesintfbackup6="nexthop via $interface_gw dev $interface_if weight $weight"
else
routesintfbackup6="$routesintfbackup6 nexthop via $interface_gw dev $interface_if weight $weight"
fi
else
2021-01-21 10:27:28 +00:00
nbintf6=$((nbintf6+1))
2021-01-16 07:14:09 +00:00
if [ -z "$routesintf6" ]; then
routesintf6="nexthop via $interface_gw dev $interface_if weight $weight"
else
routesintf6="$routesintf6 nexthop via $interface_gw dev $interface_if weight $weight"
fi
fi
fi
fi
}
2020-03-27 09:23:56 +00:00
set_route_balancing() {
2020-05-14 19:14:42 +00:00
local multipath_config_route interface_gw interface_if
2020-03-27 09:23:56 +00:00
INTERFACE=$1
2022-01-12 17:23:34 +00:00
[ -z "$INTERFACE" ] && return
2020-05-14 19:14:42 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $INTERFACE
[ -z "$interface_if" ] && interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2020-03-27 09:23:56 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.device)
2020-03-27 09:23:56 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
2021-02-15 18:55:07 +00:00
[ -n "$(echo $interface_if | grep '@')" ] && interface_if=$(ifstatus "$INTERFACE" | jsonfilter -q -e '@["device"]')
2020-09-02 08:07:24 +00:00
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
2020-03-27 09:23:56 +00:00
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
2021-04-28 11:06:59 +00:00
interface_vpn=$(uci -q get openmptcprouter.$INTERFACE.vpn || echo "0")
2021-05-17 10:29:08 +00:00
if ([ "$interface_vpn" = "0" ] || [ "$(uci -q get openmptcprouter.settings.allmptcpovervpn)" = "0" ]) && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2020-03-27 09:23:56 +00:00
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
fi
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
fi
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.${INTERFACE}_4 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="0.0.0.0"].nexthop' | tr -d "\n")
fi
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ]; then
2020-05-29 20:01:29 +00:00
if [ "$(uci -q get network.$INTERFACE.weight)" != "" ]; then
weight=$(uci -q get network.$INTERFACE.weight)
elif [ "$(uci -q get openmtpcprouter.$INTERFACE.weight)" != "" ]; then
weight=$(uci -q get openmtpcprouter.$INTERFACE.weight)
elif [ "$multipath_config_route" = "master" ]; then
2023-06-21 07:55:51 +00:00
weight=100
2020-05-29 20:01:29 +00:00
else
weight=1
fi
if [ "$multipath_config_route" = "backup" ]; then
2020-09-16 15:13:15 +00:00
nbintfb=$((nbintfb+1))
2020-05-29 20:01:29 +00:00
routesbalancingbackup="$routesbalancingbackup nexthop via $interface_gw dev $interface_if weight $weight"
else
2020-09-16 15:13:15 +00:00
nbintf=$((nbintf+1))
2020-05-29 20:01:29 +00:00
routesbalancing="$routesbalancing nexthop via $interface_gw dev $interface_if weight $weight"
fi
2020-03-27 09:23:56 +00:00
fi
fi
}
2021-01-16 07:14:09 +00:00
set_route_balancing6() {
local multipath_config_route interface_gw interface_if
INTERFACE=$1
2022-01-12 17:23:34 +00:00
[ -z "$INTERFACE" ] && return
2021-01-16 07:14:09 +00:00
multipath_config_route=$(uci -q get openmptcprouter.$INTERFACE.multipath)
[ -z "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $INTERFACE
[ -z "$interface_if" ] && interface_if=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-01-16 07:14:09 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "${INTERFACE}_4" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.device)
2021-01-16 07:14:09 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$INTERFACE.ifname)
2021-02-15 18:55:07 +00:00
[ -n "$(echo $interface_if | grep '@')" ] && interface_if=$(ifstatus "$INTERFACE" | jsonfilter -q -e '@["device"]')
2021-01-16 07:14:09 +00:00
interface_up=$(ifstatus "$INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
interface_current_config=$(uci -q get openmptcprouter.$INTERFACE.state || echo "up")
2021-04-28 11:06:59 +00:00
interface_vpn=$(uci -q get openmptcprouter.$INTERFACE.vpn || echo "0")
2021-05-17 10:29:08 +00:00
if ([ "$interface_vpn" = "0" ] || [ "$(uci -q get openmptcprouter.settings.allmptcpovervpn)" = "0" ]) && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2021-01-16 07:14:09 +00:00
interface_gw="$(uci -q get network.$INTERFACE.gateway)"
2021-02-19 16:13:00 +00:00
interface_ip6="$(uci -q get network.$INTERFACE.ip6)"
if [ -z "$interface_gw" ]; then
2021-02-20 17:19:04 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${interface_ip6}\"].nexthop" | tr -d "\n")
2021-02-19 16:13:00 +00:00
fi
if [ -z "$interface_gw" ]; then
2021-02-20 17:19:04 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${interface_ip6}/64\"].nexthop" | tr -d "\n")
2021-02-19 16:13:00 +00:00
fi
if [ -z "$interface_gw" ]; then
2021-02-20 17:19:04 +00:00
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e "@.inactive.route[@.source=\"${interface_ip6}/56\"].nexthop" | tr -d "\n")
2021-02-19 16:13:00 +00:00
fi
2021-01-16 07:14:09 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
fi
2021-02-19 16:13:00 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.nexthop="::"].target' | tr -d "\n")
fi
2021-01-16 07:14:09 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.target="::"].nexthop' | tr -d "\n")
fi
2021-02-19 16:13:00 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.$INTERFACE status 2>/dev/null | jsonfilter -q -l 1 -e '@.route[@.nexthop="::"].target' | tr -d "\n")
fi
2021-01-16 07:14:09 +00:00
if [ -z "$interface_gw" ]; then
interface_gw=$(ubus call network.interface.${INTERFACE}_6 status 2>/dev/null | jsonfilter -q -l 1 -e '@.inactive.route[@.target="::"].nexthop' | tr -d "\n")
fi
if [ "$interface_gw" != "" ] && [ "$interface_if" != "" ] && [ -n "$(echo $interface_gw | grep :)" ]; then
if [ "$(uci -q get network.$INTERFACE.weight)" != "" ]; then
weight=$(uci -q get network.$INTERFACE.weight)
elif [ "$(uci -q get openmtpcprouter.$INTERFACE.weight)" != "" ]; then
weight=$(uci -q get openmtpcprouter.$INTERFACE.weight)
elif [ "$multipath_config_route" = "master" ]; then
2023-06-21 07:55:51 +00:00
weight=100
2021-01-16 07:14:09 +00:00
else
weight=1
fi
if [ "$multipath_config_route" = "backup" ]; then
2021-01-21 10:27:28 +00:00
nbintfb6=$((nbintfb6+1))
2021-01-16 07:14:09 +00:00
routesbalancingbackup6="$routesbalancingbackup6 nexthop via $interface_gw dev $interface_if weight $weight"
else
2021-01-21 10:27:28 +00:00
nbintf6=$((nbintf6+1))
2021-01-16 07:14:09 +00:00
routesbalancing6="$routesbalancing6 nexthop via $interface_gw dev $interface_if weight $weight"
fi
fi
fi
}
2019-07-24 17:58:58 +00:00
set_server_all_routes() {
local server=$1
2022-01-12 17:23:34 +00:00
[ -z "$OMR_TRACKER_INTERFACE" ] && return
2021-01-21 17:59:55 +00:00
server_route() {
local serverip multipath_config_route
serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
2021-07-04 05:20:55 +00:00
network_get_device interface_if $OMR_TRACKER_INTERFACE
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.device)
2021-01-21 17:59:55 +00:00
[ -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"]')
2021-02-15 18:55:07 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" | jsonfilter -q -e '@["device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
2021-01-21 17:59:55 +00:00
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off")
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo 'off')
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
2021-01-21 17:59:55 +00:00
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then
routesintf=""
routesintfbackup=""
nbintf=0
nbintfb=0
config_load network
config_foreach set_routes_intf interface
uintf="$(echo $routesintf | awk '{print $5}')"
uintfb="$(echo $routesintfbackup | awk '{print $5}')"
2022-01-05 07:50:44 +00:00
if [ -n "$routesintf" ] && ([ "$nbintf" -gt "1" ] && [ "$(ip r show $serverip metric 1 | tr -d '\t' | tr -d '\n' | sed 's/ *$//' | tr ' ' '\n' | sort | tr -d '\n')" != "$(echo $serverip $routesintf | sed 's/ *$//' | tr ' ' '\n' | sort | tr -d '\n')" ]) || ([ "$nbintf" = "1" ] && [ -n "$uintf" ] && [ "$(ip r show $serverip metric 1 | grep $uintf)" = "" ]); then
2021-01-21 17:59:55 +00:00
while [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do
ip r del $serverip
done
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf"
2021-03-18 14:49:16 +00:00
ip route replace $serverip scope global metric 1 $routesintf 2>&1 >/dev/null
2021-02-19 18:43:00 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip r show $serverip metric 1 | tr -d '\t' | tr -d '\n')"
2021-01-21 17:59:55 +00:00
fi
2022-01-05 07:50:44 +00:00
if [ -n "$routesintfbackup" ] && ([ "$nbintfb" -gt "1" ] && [ "$(ip r show $serverip metric 999 | tr -d '\t' | tr -d '\n' | sed 's/ *$//' | tr ' ' '\n' | sort | tr -d '\n')" != "$(echo $serverip $routesintfbackup | sed 's/ *$//' | tr ' ' '\n' | sort | tr -d '\n')" ]) || ([ "$nbintfb" = "1" ] && [ -n "$uintfb" ] && [ "$(ip r show $serverip metric 999 | grep $uintfb)" = "" ]); then
2021-01-21 17:59:55 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup nbintfb $nbintfb $OMR_TRACKER_DEVICE"
2021-03-18 14:49:16 +00:00
ip route replace $serverip scope global metric 999 $routesintfbackup 2>&1 >/dev/null
2021-01-21 17:59:55 +00:00
fi
2020-10-13 09:27:49 +00:00
fi
2021-01-21 17:59:55 +00:00
}
2022-06-02 13:53:28 +00:00
config_load openmptcprouter
2021-01-21 17:59:55 +00:00
config_list_foreach $server ip server_route
2019-07-24 17:58:58 +00:00
}
2021-01-16 07:14:09 +00:00
set_server_all_routes6() {
local server=$1
2022-01-12 17:23:34 +00:00
[ -z "$OMR_TRACKER_INTERFACE" ] && return
2021-01-21 17:59:55 +00:00
server_route() {
local serverip multipath_config_route
serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
2021-07-04 05:20:55 +00:00
network_get_device interface_if $OMR_TRACKER_INTERFACE
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.device)
2021-01-21 17:59:55 +00:00
[ -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}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-02-15 18:55:07 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" | jsonfilter -q -e '@["device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
2021-01-21 17:59:55 +00:00
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
2021-01-21 17:59:55 +00:00
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_up" = "true" ]; then
routesintf=""
routesintfbackup=""
nbintf6=0
nbintfb6=0
config_load network
2021-02-19 16:13:00 +00:00
config_foreach set_routes_intf6 interface
uintf="$(echo $routesintf6 | awk '{print $5}')"
uintfb="$(echo $routesintfbackup6 | awk '{print $5}')"
2021-12-10 20:16:48 +00:00
if [ -n "$routesintf6" ] && ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 1 | tr -d '\t' | sort | tr -d '\n' | sed 's/ *$//')" != "$(echo $serverip $routesintf6 | sort | sed 's/ *$//')" ]) || ([ "$nbintf6" = "1" ] && [ -n "$uintf" ] && [ "$(ip -6 r show $serverip metric 1 | grep $uintf)" = "" ]); then
2021-01-21 17:59:55 +00:00
while [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "$serverip" ] && [ "$(ip -6 r show $serverip | grep -v nexthop | sed 's/ //g' | tr -d '\n')" != "" ]; do
ip -6 r del $serverip
done
2021-02-19 16:13:00 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) default route $serverip $routesintf6"
2021-03-18 14:49:16 +00:00
ip -6 route replace $serverip scope global metric 1 $routesintf6 2>&1 >/dev/null
2021-02-19 18:43:00 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New server route is $(ip -6 r show $serverip metric 1 | tr -d '\t' | tr -d '\n')"
2021-01-21 17:59:55 +00:00
fi
2021-02-19 16:13:00 +00:00
if [ -n "$routesintfbackup6" ] && ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show $serverip metric 999 | tr -d '\t' | tr -d '\n')" != "$serverip $routesintfbackup6 " ]) || ([ "$nbintfb6" = "1" ] && [ -n "$uintfb" ] && [ "$(ip -6 r show $serverip metric 999 | grep $uintfb)" = "" ]); then
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) backup default route $serverip $routesintfbackup6 nbintfb $nbintfb6 $OMR_TRACKER_DEVICE"
2021-03-18 14:49:16 +00:00
ip -6 route replace $serverip scope global metric 999 $routesintfbackup6 2>&1 >/dev/null
2021-01-21 17:59:55 +00:00
fi
2021-01-16 07:14:09 +00:00
fi
2021-01-21 17:59:55 +00:00
}
2022-06-02 13:53:28 +00:00
config_load openmptcprouter
2021-01-21 17:59:55 +00:00
config_list_foreach $server ip server_route
2021-01-16 07:14:09 +00:00
}
2019-07-24 17:58:58 +00:00
2018-12-21 14:38:45 +00:00
set_server_route() {
local server=$1
2022-01-12 17:23:34 +00:00
[ -z "$OMR_TRACKER_INTERFACE" ] && return
2021-01-21 17:59:55 +00:00
server_route() {
local serverip multipath_config_route
serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
local metric=$2
[ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $OMR_TRACKER_INTERFACE
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.device)
2021-01-21 17:59:55 +00:00
[ -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"]')
2021-02-15 18:55:07 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" | jsonfilter -q -e '@["device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
2021-01-21 17:59:55 +00:00
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
#multipath_current_config=$(multipath $interface_if | grep "deactivated")
interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up")
#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
2021-04-12 08:42:01 +00:00
if [ "$serverip" != "" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2021-01-21 17:59:55 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric"
2023-02-25 14:21:56 +00:00
ip route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric initcwnd 10 initrwnd 10 2>&1 >/dev/null
2021-01-21 17:59:55 +00:00
fi
}
config_list_foreach $server ip server_route
2022-05-28 06:37:39 +00:00
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ -n "$metric" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2023-02-25 14:21:56 +00:00
ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $metric initcwnd 10 initrwnd 10 2>&1 >/dev/null
2018-03-19 15:19:24 +00:00
fi
}
2021-01-16 07:14:09 +00:00
set_server_route6() {
local server=$1
2022-01-12 17:23:34 +00:00
[ -z "$OMR_TRACKER_INTERFACE" ] && return
2021-01-21 17:59:55 +00:00
server_route() {
local serverip multipath_config_route
serverip=$1
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
config_get disabled $server disabled
[ "$disabled" = "1" ] && return
local metric=$2
[ -z "$metric" ] && metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
multipath_config_route=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)
[ "$multipath_config_route" ] && multipath_config_route=$(uci -q get network.$OMR_TRACKER_INTERFACE.multipath || echo "off")
2021-04-28 11:06:59 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
2021-07-04 05:20:55 +00:00
network_get_device interface_if $OMR_TRACKER_INTERFACE
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.device)
2021-01-21 17:59:55 +00:00
[ -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}_6" 2>/dev/null | jsonfilter -q -e '@["l3_device"]')
2021-02-15 18:55:07 +00:00
[ -z "$interface_if" ] && interface_if=$(ifstatus "$OMR_TRACKER_INTERFACE" | jsonfilter -q -e '@["device"]')
2021-06-25 17:46:51 +00:00
[ -z "$interface_if" ] && interface_if=$(uci -q get network.$OMR_TRACKER_INTERFACE.ifname)
2021-01-21 17:59:55 +00:00
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
#multipath_current_config=$(multipath $interface_if | grep "deactivated")
interface_current_config=$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state || echo "up")
#if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$multipath_current_config" = "" ]; then
2021-04-12 08:42:01 +00:00
if [ "$serverip" != "" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep $serverip | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2021-01-21 17:59:55 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set server $server ($serverip) route via $OMR_TRACKER_DEVICE_GATEWAY metric $metric"
2021-03-18 14:49:16 +00:00
ip -6 route replace $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric 2>&1 >/dev/null
2021-01-21 17:59:55 +00:00
fi
}
config_list_foreach $server ip server_route
2022-05-28 06:37:39 +00:00
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$metric" ] && [ "$(ip -6 route show dev $OMR_TRACKER_DEVICE metric $metric | grep default | grep $OMR_TRACKER_DEVICE_GATEWAY6)" = "" ] && [ "$multipath_config_route" != "off" ] && [ "$interface_current_config" = "up" ] && [ "$interface_up" = "true" ]; then
2021-03-18 14:49:16 +00:00
ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $metric 2>&1 >/dev/null
2021-01-16 07:14:09 +00:00
fi
}
2018-12-27 16:48:45 +00:00
del_server_route() {
local server=$1
2021-01-21 17:59:55 +00:00
remove_route() {
local serverip="$1"
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
2021-11-30 16:45:26 +00:00
[ -n "$serverip" ] && _log "Delete default route to $serverip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE"
2021-01-21 17:59:55 +00:00
local metric
2022-01-12 17:23:34 +00:00
if [ -z "$OMR_TRACKER_INTERFACE" ]; then
metric=0
else
metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
fi
2021-04-12 08:42:01 +00:00
[ -n "$metric" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$serverip" ] && [ -n "$(ip route show $serverip dev $OMR_TRACKER_DEVICE metric $metric)" ] && ip route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1
[ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$serverip" ] && [ -n "$(ip route show $serverip dev $OMR_TRACKER_DEVICE)" ] && ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
[ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$serverip" ] && [ -n "$(ip route show $serverip | grep $OMR_TRACKER_DEVICE)" ] && ip route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
2021-01-21 17:59:55 +00:00
}
config_list_foreach $server ip remove_route
2021-04-12 08:42:01 +00:00
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
2021-03-18 14:49:16 +00:00
[ -n "$(ip route show default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE)" ] && ip route del default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
2021-04-12 08:42:01 +00:00
elif [ -n "$OMR_TRACKER_DEVICE" ]; then
2021-03-18 14:49:16 +00:00
[ -n "$(ip route show default dev $OMR_TRACKER_DEVICE)" ] && ip route del default dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
2020-02-24 12:33:59 +00:00
fi
2018-12-27 16:48:45 +00:00
}
2021-01-16 07:14:09 +00:00
del_server_route6() {
local server=$1
2021-01-21 17:59:55 +00:00
remove_route() {
local serverip="$1"
[ -n "$serverip" ] && serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
2021-11-30 16:45:26 +00:00
[ -n "$serverip" ] && _log "Delete default route to $serverip via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE"
2021-01-21 17:59:55 +00:00
local metric
2022-01-12 17:23:34 +00:00
if [ -z "$OMR_TRACKER_INTERFACE" ]; then
metric=0
else
metric=$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)
fi
2022-08-23 18:50:28 +00:00
[ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$metric" ] && [ -n "$serverip" ] && [ -n "$(ip -6 route show $serverip dev $OMR_TRACKER_DEVICE metric $metric)" ] && ip -6 route del $serverip dev $OMR_TRACKER_DEVICE metric $metric >/dev/null 2>&1
2021-11-30 16:45:26 +00:00
[ -n "$OMR_TRACKER_DEVICE" ] && [ -n "$metric" ] && [ -n "$serverip" ] && [ -n "$(ip -6 route show $serverip dev $OMR_TRACKER_DEVICE)" ] && ip -6 route del $serverip dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
2021-01-21 17:59:55 +00:00
}
config_list_foreach $server ip remove_route
2021-04-12 08:42:01 +00:00
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
2021-03-18 14:49:16 +00:00
[ -n "$(ip -6 route show default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE)" ] && ip -6 route del default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
2021-04-12 08:42:01 +00:00
elif [ -n "$OMR_TRACKER_DEVICE" ]; then
2021-03-18 14:49:16 +00:00
[ -n "$(ip -6 route show default dev $OMR_TRACKER_DEVICE)" ] && ip -6 route del default dev $OMR_TRACKER_DEVICE >/dev/null 2>&1
2021-01-16 07:14:09 +00:00
fi
}
2019-08-09 15:20:12 +00:00
disable_pihole() {
local server=$1
2020-10-05 12:58:29 +00:00
if [ -n "$(uci -q get dhcp.@dnsmasq[0].server | grep '#53' | grep '10.2')" ]; then
2019-09-05 06:29:49 +00:00
_log "Disable Pi-Hole..."
2020-07-20 08:23:30 +00:00
uci -q del_list dhcp.@dnsmasq[0].server="$(uci -q get dhcp.@dnsmasq[0].server | tr ' ' '\n' | grep '#53' | grep '10.2')"
2020-11-17 10:10:49 +00:00
if [ -z "$(uci -q get dhcp.@dnsmasq[0].server | grep '127.0.0.1#5353')" ]; then
uci -q batch <<-EOF >/dev/null
add_list dhcp.@dnsmasq[0].server='127.0.0.1#5353'
commit dhcp
EOF
fi
2022-02-11 11:06:41 +00:00
/etc/init.d/dnsmasq restart 2>&1 >/dev/null
2019-08-09 15:20:12 +00:00
fi
}
enable_pihole() {
local server=$1
2019-11-13 18:22:08 +00:00
nbserver=$((nbserver+1))
2022-01-12 17:23:34 +00:00
if [ -n "$server" ] && [ "$(uci -q get openmptcprouter.${server}.pihole)" = "1" ] && [ "$(uci -q get dhcp.@dnsmasq[0].server | grep '127.0.0.1#5353')" != "" ]; then
2019-11-13 18:22:08 +00:00
piholeenabled=$((piholeenabled+1))
2019-08-09 15:20:12 +00:00
fi
}
2018-12-17 16:00:48 +00:00
dns_flush() {
unbound-control flush-negative >/dev/null 2>&1
unbound-control flush-bogus >/dev/null 2>&1
}
2020-03-03 09:49:48 +00:00
#if [ -n "$RANDOM" ]; then
# sleep `expr $RANDOM % 10`
#else
# sleep `awk 'BEGIN{srand();print int(rand()*9)}'`
#fi
2018-01-23 14:35:00 +00:00
# Get the current multipath status
multipath_status="off"
2020-11-05 09:19:37 +00:00
[ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] && multipath $OMR_TRACKER_DEVICE off 2>&1 >/dev/null
2018-03-22 14:51:32 +00:00
if [ -d "/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
2018-01-23 14:35:00 +00:00
2022-06-24 16:12:43 +00:00
#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}')
2018-03-06 07:20:59 +00:00
#current_interface_gw=$(uci -q get "network.$OMR_TRACKER_INTERFACE.gateway")
2018-01-23 14:35:00 +00:00
2020-09-02 08:07:24 +00:00
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
2022-04-15 07:00:22 +00:00
2022-06-28 12:08:15 +00:00
if [ -n "$(grep RUTX /etc/board.json)" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
if [ "$OMR_TRACKER_DEVICE" = "wwan0" ]; then
2022-04-15 07:00:22 +00:00
modemdata=$(omr-modemmanager '/sys/devices/platform/soc/60f8800.usb2/6000000.dwc3/xhci-hcd.1.auto/usb3/3-1' all)
gen=$(echo $modemdata | cut -d ';' -f 5 | tr -d '\n')
if [ "$gen" = "gsm" ]; then
echo "default-on" > /sys/class/leds/mob_gen_2/trigger
echo "none" > /sys/class/leds/mob_gen_3/trigger
echo "none" > /sys/class/leds/mob_gen_4/trigger
elif [ "$gen" = "umts" ]; then
echo "none" > /sys/class/leds/mob_gen_2/trigger
echo "default-on" > /sys/class/leds/mob_gen_3/trigger
echo "none" > /sys/class/leds/mob_gen_4/trigger
elif [ "$gen" = "lte" ]; then
echo "none" > /sys/class/leds/mob_gen_2/trigger
echo "none" > /sys/class/leds/mob_gen_3/trigger
echo "default-on" > /sys/class/leds/mob_gen_4/trigger
fi
bar=$(echo $modemdata | cut -d ';' -f 1 | tr -d '\n')
if [ "$bar" -gt "0" ]; then
echo "default-on" > /sys/class/leds/mob_ssid_1/trigger
else
echo "none" > /sys/class/leds/mob_ssid_1/trigger
fi
if [ "$bar" -gt "30" ]; then
echo "default-on" > /sys/class/leds/mob_ssid_2/trigger
else
echo "none" > /sys/class/leds/mob_ssid_2/trigger
fi
if [ "$bar" -gt "50" ]; then
echo "default-on" > /sys/class/leds/mob_ssid_3/trigger
else
echo "none" > /sys/class/leds/mob_ssid_3/trigger
fi
if [ "$bar" -gt "70" ]; then
echo "default-on" > /sys/class/leds/mob_ssid_4/trigger
else
echo "none" > /sys/class/leds/mob_ssid_4/trigger
fi
if [ "$bar" -gt "90" ]; then
echo "default-on" > /sys/class/leds/mob_ssid_5/trigger
else
echo "none" > /sys/class/leds/mob_ssid_5/trigger
fi
2022-06-28 12:08:15 +00:00
elif [ "$OMR_TRACKER_DEVICE" = "wwan1" ]; then
2022-04-15 07:00:22 +00:00
modemdata=$(omr-modemmanager '/sys/devices/platform/soc/8af8800.usb3/8a00000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1.2' all)
gen=$(echo $modemdata | cut -d ';' -f 5 | tr -d '\n')
if [ "$gen" = "gsm" ]; then
echo "default-on" > /sys/class/leds/mob2_gen_2/trigger
echo "none" > /sys/class/leds/mob2_gen_3/trigger
echo "none" > /sys/class/leds/mob2_gen_4/trigger
elif [ "$gen" = "umts" ]; then
echo "none" > /sys/class/leds/mob2_gen_2/trigger
echo "default-on" > /sys/class/leds/mob2_gen_3/trigger
echo "none" > /sys/class/leds/mob2_gen_4/trigger
elif [ "$gen" = "lte" ]; then
echo "none" > /sys/class/leds/mob2_gen_2/trigger
echo "none" > /sys/class/leds/mob2_gen_3/trigger
echo "default-on" > /sys/class/leds/mob2_gen_4/trigger
fi
bar=$(echo $modemdata | cut -d ';' -f 1 | tr -d '\n')
if [ "$bar" -gt "0" ]; then
echo "default-on" > /sys/class/leds/mob2_ssid_1/trigger
else
echo "none" > /sys/class/leds/mob2_ssid_1/trigger
fi
if [ "$bar" -gt "30" ]; then
echo "default-on" > /sys/class/leds/mob2_ssid_2/trigger
else
echo "none" > /sys/class/leds/mob2_ssid_2/trigger
fi
if [ "$bar" -gt "50" ]; then
echo "default-on" > /sys/class/leds/mob2_ssid_3/trigger
else
echo "none" > /sys/class/leds/mob2_ssid_3/trigger
fi
if [ "$bar" -gt "70" ]; then
echo "default-on" > /sys/class/leds/mob2_ssid_4/trigger
else
echo "none" > /sys/class/leds/mob2_ssid_4/trigger
fi
if [ "$bar" -gt "90" ]; then
echo "default-on" > /sys/class/leds/mob2_ssid_5/trigger
else
echo "none" > /sys/class/leds/mob2_ssid_5/trigger
fi
fi
fi
2018-01-23 14:35:00 +00:00
# An interface in error will never be used in MPTCP
2020-09-02 08:07:24 +00:00
if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then
2022-01-12 17:23:34 +00:00
if [ "$interface_up" = "true" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "modemmanager" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "wireguard" ]); then
2020-04-24 14:44:51 +00:00
_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
2021-07-04 05:20:55 +00:00
sleep 20
2020-04-24 14:00:25 +00:00
fi
2022-06-21 20:09:28 +00:00
if [ "$interface_up" = "true" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "dhcp" ]; then
for modem in $(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=$(mmcli -m $modem -K | grep 'modem.generic.device ' | awk '{print $3}')
[ -n "$modem_device" ] && modem_interface=$(uci show network | grep $modem_device | awk -F. '{print $2}')
[ -n "$modem_interface" ] && {
_log "No anwser from $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE), restart associed interface $modem_interface"
ifup $modem_interface
}
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)
2018-08-21 15:44:49 +00:00
if [ "$OMR_TRACKER_PREV_STATUS" = "$OMR_TRACKER_STATUS" ]; then
exit 0
fi
2022-06-21 20:09:28 +00:00
2022-01-12 17:23:34 +00:00
if [ "$multipath_status" != "off" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ]); then
2018-10-09 14:23:22 +00:00
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
2020-05-14 19:14:42 +00:00
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched off"
2018-10-09 14:23:22 +00:00
else
2020-05-14 19:14:42 +00:00
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched off because $OMR_TRACKER_STATUS_MSG"
2018-10-09 14:23:22 +00:00
fi
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='down'
fi
2019-11-13 18:22:08 +00:00
#if [ "$(sysctl -n net.mptcp.mptcp_enabled | tr -d '\n')" = "1" ]; then
# multipath "$OMR_TRACKER_DEVICE" off > /dev/null 2>&1
#fi
2018-10-09 14:23:22 +00:00
if [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
2020-11-19 18:24:29 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP dev tun0 set down > /dev/null 2>&1
2018-10-09 14:23:22 +00:00
fi
2021-01-16 07:14:09 +00:00
if [ -n "$OMR_TRACKER_DEVICE_IP6" ]; then
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 dev tun0 set down > /dev/null 2>&1
fi
2022-01-12 17:23:34 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ] && [ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ]; then
2020-05-20 08:06:51 +00:00
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")
2022-02-09 19:29:21 +00:00
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
2022-02-11 11:06:41 +00:00
/etc/init.d/openvpn restart $VPN_BASE_INTF 2>&1 >/dev/null
2020-05-20 08:06:51 +00:00
fi
2018-12-27 16:48:45 +00:00
config_load openmptcprouter
config_foreach del_server_route server
2021-01-16 07:14:09 +00:00
config_foreach del_server_route6 server
2020-07-10 13:41:01 +00:00
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
2022-12-02 16:00:36 +00:00
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"
fi
fi
2020-05-29 20:01:29 +00:00
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
2021-12-06 18:36:33 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set balancing route (current: $(ip r) )"
2020-05-29 20:01:29 +00:00
config_foreach set_server_all_routes server
2021-01-16 07:14:09 +00:00
config_foreach set_server_all_routes6 server
2021-12-06 18:36:33 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Set balancing route done (new: $(ip r) )"
2020-05-29 20:01:29 +00:00
fi
2020-10-13 09:27:49 +00:00
fi
2022-02-09 19:29:21 +00:00
mail_alert=""
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)"
fi
2019-01-27 07:39:51 +00:00
[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
2020-10-08 12:00:56 +00:00
[ "$mail_alert" = "1" ] && [ -n "$(uci -q get mail.default.to)" ] && {
2019-07-16 19:57:43 +00:00
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
2020-09-10 19:00:54 +00:00
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)"
2021-01-20 15:39:58 +00:00
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"`
2020-09-10 19:00:54 +00:00
mail_message="$(uci -q get omr-tracker.defaults.mail_down_message)"
2021-01-20 15:39:58 +00:00
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"`
2020-09-10 19:00:54 +00:00
echo -e "Subject: ${mail_subject}\n\n${mail_message}" | sendmail $(uci -q get mail.default.to)
2018-11-20 13:25:38 +00:00
else
2019-07-16 19:57:43 +00:00
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)
2018-11-20 13:25:38 +00:00
fi
}
2022-02-09 19:29:21 +00:00
script_alert_down=""
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
script_alert_down="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.script_alert_down)"
fi
2020-05-26 05:57:36 +00:00
[ -n "$script_alert_down" ] && eval $script_alert_down
2018-11-20 13:25:38 +00:00
2022-02-09 19:29:21 +00:00
restart_down=""
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
restart_down="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.restart_down)"
fi
2021-03-26 19:10:49 +00:00
[ -z "$restart_down" ] && restart_down="$(uci -q get omr-tracker.defaults.restart_down)"
[ "$restart_down" = "1" ] && {
2021-03-27 07:18:27 +00:00
_log "Restart $OMR_TRACKER_INTERFACE"
2021-03-26 19:10:49 +00:00
ifdown $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
sleep 5
ifup $OMR_TRACKER_INTERFACE 2>&1 >/dev/null
}
2018-06-06 15:55:33 +00:00
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ]; then
2018-08-14 14:24:29 +00:00
if [ "$OMR_TRACKER_STATUS_MSG" = "" ]; then
_log "$OMR_TRACKER_INTERFACE down"
else
_log "$OMR_TRACKER_INTERFACE down because $OMR_TRACKER_STATUS_MSG"
fi
2020-05-05 08:48:55 +00:00
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
config_load network
config_foreach set_route interface $OMR_TRACKER_INTERFACE
2021-01-16 07:14:09 +00:00
config_foreach set_route6 interface $OMR_TRACKER_INTERFACE
2022-06-21 20:09:28 +00:00
else
_log "Default gateway disabled, no default gateway set"
2020-05-05 08:48:55 +00:00
fi
2021-02-14 19:41:11 +00:00
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
2018-07-27 21:28:38 +00:00
_log "Tunnel down use ShadowSocks for UDP"
2021-02-14 19:41:11 +00:00
uci -q set shadowsocks-libev.ss_rules.redir_udp='hi1'
2018-10-13 19:40:15 +00:00
if /etc/init.d/shadowsocks-libev rules_exist ; then
2022-02-11 11:06:41 +00:00
/etc/init.d/shadowsocks-libev rules_down 2>&1 >/dev/null
/etc/init.d/shadowsocks-libev rules_up 2>&1 >/dev/null
2018-10-09 14:23:22 +00:00
fi
2018-05-29 16:03:50 +00:00
fi
2020-03-27 09:23:56 +00:00
if [ "$(uci -q get dsvpn.vpn.enable)" = "1" ]; then
2020-11-20 15:28:46 +00:00
_log "DSVPN down, restart it"
2022-02-11 11:06:41 +00:00
/etc/init.d/dsvpn restart 2>&1 >/dev/null
2020-03-27 09:23:56 +00:00
fi
2020-09-14 17:42:26 +00:00
if [ "$(uci -q get mlvpn.general.enable)" = "1" ]; then
2020-11-20 15:28:46 +00:00
_log "MLVPN down, restart it"
2022-02-11 11:06:41 +00:00
/etc/init.d/mlvpn restart 2>&1 >/dev/null
2020-09-14 17:42:26 +00:00
fi
2020-10-07 09:18:13 +00:00
if [ "$(uci -q get glorytun.vpn.enable)" = "1" ]; then
2020-11-20 15:28:46 +00:00
_log "Glorytun VPN down, restart it"
2022-02-11 11:06:41 +00:00
/etc/init.d/glorytun restart 2>&1 >/dev/null
2020-12-03 10:28:13 +00:00
fi
if [ "$(uci -q get glorytun-udp.vpn.enable)" = "1" ]; then
_log "Glorytun UDP VPN down, restart it"
2022-02-11 11:06:41 +00:00
/etc/init.d/glorytun-udp restart 2>&1 >/dev/null
2020-10-07 09:18:13 +00:00
fi
2019-08-09 15:20:12 +00:00
config_load openmptcprouter
config_foreach disable_pihole server
2020-07-10 13:41:01 +00:00
#if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]; then
2020-03-27 09:23:56 +00:00
if [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
2020-03-03 09:49:48 +00:00
config_foreach set_server_default_route server
2021-01-16 07:14:09 +00:00
config_foreach set_server_default_route6 server
2020-03-03 09:49:48 +00:00
fi
2018-05-29 16:03:50 +00:00
fi
2018-12-17 16:00:48 +00:00
dns_flush
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.lc
fi
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2019-01-11 17:10:22 +00:00
#ubus call network reload
2020-03-03 09:49:48 +00:00
# Set a little sleep after an interface error
if [ -n "$RANDOM" ]; then
sleep `expr $RANDOM % 10`
else
sleep `awk 'BEGIN{srand();print int(rand()*9)}'`
fi
2018-03-19 15:19:24 +00:00
exit 0
fi
2018-06-06 15:55:33 +00:00
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ]; then
2021-06-16 15:28:37 +00:00
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi1" ]; then
2018-09-21 21:07:47 +00:00
_log "Tunnel up disable use of ShadowSocks for UDP"
2018-08-21 15:44:49 +00:00
uci -q delete shadowsocks-libev.ss_rules.redir_udp
2018-10-13 19:40:15 +00:00
if /etc/init.d/shadowsocks-libev rules_exist ; then
2019-05-25 19:38:52 +00:00
/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>&1
/etc/init.d/shadowsocks-libev rules_up >/dev/null 2>&1
2018-10-09 14:23:22 +00:00
fi
2018-01-23 14:35:00 +00:00
fi
2021-04-23 17:24:08 +00:00
if ([ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ]; then
_log "Tunnel up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE"
2022-06-24 16:12:43 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Default gw : $default_gw - Current route: $(ip r)"
2023-02-25 14:21:56 +00:00
ip route replace default scope global via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE initcwnd 10 initrwnd 10 2>&1 >/dev/null
2022-12-02 16:00:36 +00:00
if [ "$(pgrep -f openmptcprouter-vps)" = "" ]; then
/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 &
2021-04-23 17:24:08 +00:00
fi
2021-05-22 06:43:36 +00:00
[ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && conntrack -D -p udp 2>&1 >/dev/null
2021-11-30 16:45:26 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New route: $(ip r)"
2021-04-23 17:24:08 +00:00
fi
2018-09-05 21:06:57 +00:00
# Set VPN MTU
2022-01-12 17:23:34 +00:00
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
2018-09-05 21:06:57 +00:00
local serverip=$(uci -q get shadowsocks-libev.sss0.server)
2020-09-04 20:05:58 +00:00
[ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
2020-04-08 12:19:59 +00:00
if [ "$serverip" = "192.168.1.3" ] || [ "$serverip" = "127.0.0.1" ]; then
serverip=""
fi
2019-12-03 19:20:40 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE="interface"
2018-09-05 21:06:57 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
2023-03-10 19:27:35 +00:00
#if [ "$(uci -q get glorytun.vpn.enable)" != "1" ] || [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ]; then
2022-01-12 17:23:34 +00:00
OMR_NETWORK_DEVICE=$(find_network_device ${OMR_TRACKER_INTERFACE})
2023-03-28 18:26:02 +00:00
#_log "OMR_NETWORK_DEVICE: $OMR_NETWORK_DEVICE for $OMR_TRACKER_DEVICE - $OMR_TRACKER_INTERFACE"
2022-01-12 17:23:34 +00:00
if [ -n "$OMR_NETWORK_DEVICE" ] && [ -n "$(uci -q get network.$OMR_NETWORK_DEVICE.mtu)" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
mtu=$(uci -q get network.$OMR_NETWORK_DEVICE.mtu)
2021-07-30 18:21:47 +00:00
uci -q set openmptcprouter.${OMR_TRACKER_INTERFACE}.mtu=$mtu
2021-04-12 08:42:01 +00:00
[ -n "$mtu" ] && ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
2020-11-05 13:16:51 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
2021-07-30 18:21:47 +00:00
elif [ -z "$(uci -q get openmptcprouter.${OMR_TRACKER_INTERFACE}.mtu)" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
2020-11-05 13:16:51 +00:00
if [ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ]; then
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
#local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 8.8.8.8)
[ -n "$mtu" ] && {
2021-07-30 18:21:47 +00:00
uci -q set openmptcprouter.${OMR_TRACKER_INTERFACE}.mtu=$mtu
2020-11-05 13:16:51 +00:00
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
}
else
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1)
[ -n "$mtu" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
}
fi
2020-10-13 09:27:49 +00:00
else
2020-11-05 13:16:51 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
2020-10-13 09:27:49 +00:00
fi
2023-03-10 19:27:35 +00:00
#else
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
#fi
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2018-09-05 21:06:57 +00:00
fi
2019-11-13 18:22:08 +00:00
nbserver=0
piholeenabled=0
2019-08-09 15:20:12 +00:00
config_load openmptcprouter
config_foreach enable_pihole server
2020-03-03 09:49:48 +00:00
#config_foreach delete_server_default_route server
2022-02-11 11:06:41 +00:00
[ "$nbserver" = "$piholeenabled" ] && /etc/init.d/openmptcprouter-vps set_pihole 2>&1 >/dev/null
2018-12-23 13:13:11 +00:00
#ubus call network reload
2018-01-23 14:35:00 +00:00
exit 0
fi
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ]; then
2021-04-28 11:06:59 +00:00
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state)" != "up" ]; then
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2021-04-28 11:06:59 +00:00
fi
exit 0
fi
2022-02-09 19:29:21 +00:00
if [ "$OMR_TRACKER_PREV_STATUS" != "" ] && [ "$OMR_TRACKER_PREV_STATUS" != "$OMR_TRACKER_STATUS" ] && [ -n "$OMR_TRACKER_INTERFACE" ]; then
2020-05-14 19:14:42 +00:00
_log "$OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) switched up"
2018-11-05 18:14:23 +00:00
mail_alert="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.mail_alert)"
[ -z "$mail_alert" ] && mail_alert="$(uci -q get omr-tracker.defaults.mail_alert)"
2020-10-08 12:00:56 +00:00
[ "$mail_alert" = "1" ] && [ -n "$(uci -q get mail.default.to)" ] && {
2019-07-16 19:57:43 +00:00
OMR_SYSNAME="$(uci -q get system.@system[0].hostname)"
2020-09-10 19:00:54 +00:00
if [ "$(uci -q get omr-tracker.defaults.mail_up_subject)" != "" ] && [ "$(uci -q get omr-tracker.defaults.mail_up_message)" != "" ]; then
mail_subject="$(uci -q get omr-tracker.defaults.mail_up_subject)"
2021-01-20 15:39:58 +00:00
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"`
2020-09-10 19:00:54 +00:00
mail_message="$(uci -q get omr-tracker.defaults.mail_up_message)"
2021-01-20 15:39:58 +00:00
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"`
2020-09-10 19:00:54 +00:00
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 up\n\nDetected that connection $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE) is up again." | sendmail $(uci -q get mail.default.to)
fi
2019-07-16 19:57:43 +00:00
}
2020-05-26 05:57:36 +00:00
script_alert_up="$(uci -q get omr-tracker.$OMR_TRACKER_INTERFACE.script_alert_up)"
[ -n "$script_alert_up" ] && eval $script_alert_up
2020-05-29 20:01:29 +00:00
fi
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state)" != "up" ]; then
2018-11-16 14:01:41 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
uci -q commit openmptcprouter
2018-12-17 16:00:48 +00:00
dns_flush
2018-11-05 18:14:23 +00:00
fi
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
multipath_config=$(uci -q get "openmtpcprouter.$OMR_TRACKER_INTERFACE.multipath")
[ -z "$multipath_config" ] && multipath_config=$(uci -q get "network.$OMR_TRACKER_INTERFACE.multipath" || echo "off")
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" = "1" ] && {
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "openvpn" ] && multipath_config_route="$(uci -q get openmptcprouter.ovpn${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
[ "$(uci -q get openmptcprouter.settings.mptcpovervpn)" = "wireguard" ] && multipath_config_route="$(uci -q get openmptcprouter.wg${OMR_TRACKER_INTERFACE}.multipath || echo "off")"
}
fi
2021-04-28 11:06:59 +00:00
2023-02-25 14:21:56 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
metric="$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)"
if [ -z "$metric" ] || [ -z "$(ip route show table $metric | grep $OMR_TRACKER_DEVICE)" ]; then
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE"
fi
fi
2018-02-15 08:49:47 +00:00
if [ "$multipath_config" = "master" ]; then
2020-07-10 13:41:01 +00:00
#if ([ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && ([ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ] || [ "$(uci -q get openmptcprouter.settings.vpn)" = "mlvpn" ]); then
2020-04-08 13:57:55 +00:00
if ([ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
2021-07-04 05:20:55 +00:00
omrvpn_intf=$(uci -q get "network.omrvpn.device" || echo "tun0")
[ -z "$omrvpn_intf" ] && omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun0")
2021-12-06 18:36:33 +00:00
if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | grep -v metric | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
2018-08-03 13:00:10 +00:00
_log "Master up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE"
2023-02-25 14:21:56 +00:00
ip route replace default scope global metric 1 via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE initcwnd 10 initrwnd 10 2>&1 >/dev/null
2020-05-01 09:09:04 +00:00
fi
config_load openmptcprouter
2020-07-03 17:10:22 +00:00
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
# config_foreach set_server_all_routes server
if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
2020-05-01 09:09:04 +00:00
config_foreach set_server_default_route server
2023-01-03 19:54:40 +00:00
#config_foreach set_server_default_route6 server
2018-03-19 15:19:24 +00:00
fi
2018-02-15 08:49:47 +00:00
fi
2021-01-16 07:14:09 +00:00
if ([ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$default_gw6" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
2021-07-04 05:20:55 +00:00
omrvpn_intf=$(uci -q get "network.omrvpn.device" || echo "tun0")
[ -z "$omrvpn_intf" ] && omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun0")
2021-01-16 07:14:09 +00:00
if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
_log "Master up : Replace default route by $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE"
2021-03-18 14:49:16 +00:00
ip -6 route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE 2>&1 >/dev/null
2021-01-16 07:14:09 +00:00
fi
config_load openmptcprouter
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
# config_foreach set_server_all_routes server
if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
2023-01-03 19:54:40 +00:00
#config_foreach set_server_default_route server
2021-01-16 07:14:09 +00:00
config_foreach set_server_default_route6 server
fi
fi
2020-07-10 13:41:01 +00:00
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
2023-01-03 19:54:40 +00:00
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && ([ "$(ip route show default | grep weight)" = "" ] || [ "$(ip -6 route show default | grep weight)" = "" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
2021-07-04 05:20:55 +00:00
omrvpn_intf=$(uci -q get "network.omrvpn.device" || echo "tun0")
[ -z "$omrvpn_intf" ] && omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun0")
2021-12-06 18:36:33 +00:00
if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | grep -v metric | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ]; then
2020-03-27 09:23:56 +00:00
routesbalancing=""
2020-05-29 20:01:29 +00:00
routesbalancingbackup=""
2020-06-02 15:19:40 +00:00
nbintf=0
2021-03-31 07:58:11 +00:00
nbintfb=0
2023-01-03 19:54:40 +00:00
#nbintf6=0
#nbintfb6=0
2020-03-27 09:23:56 +00:00
config_load network
config_foreach set_route_balancing interface
2023-01-03 19:54:40 +00:00
#config_foreach set_route_balancing6 interface
2020-06-02 15:19:40 +00:00
[ -n "$routesbalancing" ] && {
2023-05-26 19:31:30 +00:00
([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 1 | tr -d '\t' | tr -d '\n' | sed 's/ *$//')" != "default via $routesbalancing" ] && [ "$(ip r show default metric 1 | tr -d '\t' | tr -d '\n' | sed 's/ *$//')" != "default $routesbalancing" ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ])) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && {
2021-12-06 18:36:33 +00:00
_log "Change in routes, set ip route replace default scope global $routesbalancing (omrvpn_intf: $omrvpn_intf)"
2021-12-10 20:16:48 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Current route: $(ip r)"
2021-03-18 14:49:16 +00:00
ip route replace default scope global metric 1 $routesbalancing 2>&1 >/dev/null
2021-12-10 20:16:48 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New route: $(ip r)"
2021-01-16 07:14:09 +00:00
}
}
2023-01-03 19:54:40 +00:00
#[ -n "$routesbalancing6" ] && {
# ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
# _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
# ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null
# }
#}
2020-06-02 15:19:40 +00:00
[ -n "$routesbalancingbackup" ] && {
2023-05-26 19:31:30 +00:00
([ "$nbintfb" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ])) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && {
2021-12-06 18:36:33 +00:00
_log "Set backup ip route replace default scope global metric 999 $routesbalancingbackup"
2021-03-18 14:49:16 +00:00
ip route replace default scope global metric 999 $routesbalancingbackup 2>&1 >/dev/null
2020-06-02 15:19:40 +00:00
}
2020-05-29 20:01:29 +00:00
}
2023-01-03 19:54:40 +00:00
#[ -n "$routesbalancingbackup6" ] && {
# ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
# _log "Set backup ip -6 route replace default scope global $routesbalancingbackup6"
# ip -6 route replace default scope global metric 999 $routesbalancingbackup6 2>&1 >/dev/null
# }
#}
elif [ -n "$omrvpn_intf" ] && [ "$(ip -6 route show default | grep -v metric | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ]; then
routesbalancing6=""
routesbalancingbackup6=""
nbintf6=0
nbintfb6=0
config_load network
config_foreach set_route_balancing6 interface
[ -n "$routesbalancing6" ] && {
2023-05-26 19:31:30 +00:00
([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
2023-01-03 19:54:40 +00:00
_log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null
}
}
2021-01-16 07:14:09 +00:00
[ -n "$routesbalancingbackup6" ] && {
2023-05-26 19:31:30 +00:00
([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
2021-01-16 07:14:09 +00:00
_log "Set backup ip -6 route replace default scope global $routesbalancingbackup6"
2021-03-18 14:49:16 +00:00
ip -6 route replace default scope global metric 999 $routesbalancingbackup6 2>&1 >/dev/null
2021-01-16 07:14:09 +00:00
}
}
2020-03-27 09:23:56 +00:00
fi
fi
2020-10-31 08:19:35 +00:00
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE " ]; then
2023-02-25 14:21:56 +00:00
ip route replace default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE table 991337 initcwnd 10 initrwnd 10 2>&1 >/dev/null
2020-10-30 18:29:53 +00:00
fi
2021-01-16 07:14:09 +00:00
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 r show table 991337)" != "default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE " ]; then
2023-02-25 14:21:56 +00:00
ip -6 route replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE table 991337 initcwnd 10 initrwnd 10 2>&1 >/dev/null
2021-01-16 07:14:09 +00:00
fi
2022-02-09 19:29:21 +00:00
if ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ]) || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]; then
2022-12-02 16:00:36 +00:00
[ "$(pgrep -f openmptcprouter-vps)" = "" ] && /etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 &
2020-03-27 09:23:56 +00:00
fi
2018-02-15 08:49:47 +00:00
multipath_config="on"
2018-12-11 14:01:03 +00:00
fi
2020-03-27 09:23:56 +00:00
2018-12-11 14:01:03 +00:00
if [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ]; then
2018-12-21 14:38:45 +00:00
config_load openmptcprouter
2020-07-10 13:41:01 +00:00
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
2020-03-27 09:23:56 +00:00
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
2019-08-30 11:10:07 +00:00
config_foreach set_server_all_routes server
2020-03-03 09:49:48 +00:00
elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
2019-08-30 11:10:07 +00:00
config_foreach set_server_route server
fi
2022-05-28 06:37:39 +00:00
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then
2022-01-05 07:50:44 +00:00
_log "Interface route not yet set, set route ip r add default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric)"
ip r add default via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1
2021-01-29 09:52:07 +00:00
fi
2018-02-15 08:49:47 +00:00
fi
2021-01-16 07:14:09 +00:00
if [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
config_load openmptcprouter
#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_all_routes6 server
elif [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
config_foreach set_server_route6 server
fi
2022-05-28 06:37:39 +00:00
if [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ -n "$OMR_TRACKER_DEVICE_GATEWAY6" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(ip -6 r show dev $OMR_TRACKER_DEVICE | grep default)" = "" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)" != "" ]; then
2021-01-29 09:52:07 +00:00
ip -6 r replace default via $OMR_TRACKER_DEVICE_GATEWAY6 dev $OMR_TRACKER_DEVICE metric $(uci -q get network.$OMR_TRACKER_INTERFACE.metric) >/dev/null 2>&1
fi
2021-01-16 07:14:09 +00:00
fi
2018-06-27 18:41:57 +00:00
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$multipath_config" = "on" ] || [ "$multipath_config" = "backup" ]); then
2019-03-22 19:27:36 +00:00
download="$(uci -q get network.$OMR_TRACKER_INTERFACE.downloadspeed)"
[ -z "$download" ] && download="$(uci -q get sqm.$OMR_TRACKER_INTERFACE.download)"
upload="$(uci -q get network.$OMR_TRACKER_INTERFACE.uploadspeed)"
[ -z "$upload" ] && upload="$(uci -q get sqm.$OMR_TRACKER_INTERFACE.upload)"
2020-10-09 11:16:02 +00:00
if [ "$(uci -q show | grep mptcpr)" = "" ]; then
2020-09-25 15:31:27 +00:00
touch /etc/config/openmptcprouter
fi
2021-01-28 19:44:38 +00:00
glorytunudppath() {
gtudp_port="$(uci -q get glorytun-udp.vpn.port)"
gtudp_dev="$(uci -q get glorytun-udp.vpn.dev)"
addpath() {
serverip=$1
#gtudpst="up"
2022-12-02 16:00:36 +00:00
#[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && [ "$multipath_config" = "backup" ] && [ "$(pgrep -f glorytun-udp)" != "" ] && gtudpst="backup"
if [ "$OMR_TRACKER_DEVICE_IP" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep -f glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP | grep running)" = "" ] && [ -n "$(resolveip -4 -t 5 $serverip)" ]; then
2022-08-23 18:50:28 +00:00
serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')"
if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then
2021-01-28 19:44:38 +00:00
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
else
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
fi
else
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
else
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
fi
fi
2020-02-28 08:03:00 +00:00
fi
2022-12-02 16:00:36 +00:00
if [ "$OMR_TRACKER_DEVICE_IP6" != "" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep -f glorytun-udp)" != "" ] && [ "$(glorytun-udp path | grep $OMR_TRACKER_DEVICE_IP6 | grep running)" = "" ] && [ -n "$(resolveip -6 -t 5 $serverip)" ]; then
2022-08-23 18:50:28 +00:00
serverip="$(resolveip -6 -t 5 $serverip | head -n 1 | tr -d '\n')"
2021-01-28 19:44:38 +00:00
if [ "$download" != "0" ] && [ "$download" != "" ] && [ "$upload" != "0" ] && [ "$upload" != "" ]; then
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate auto tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
else
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate fixed tx $((upload*1000/8)) rx $((download*1000/8)) pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
fi
else
if [ "$(uci -q get glorytun-udp.vpn.rateauto)" = "1" ]; then
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate auto tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
else
2021-03-10 15:05:52 +00:00
glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set up rate fixed tx 12500000 rx 12500000 pref 1 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
fi
fi
2020-02-28 08:03:00 +00:00
fi
2022-12-02 16:00:36 +00:00
# if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ] && [ "$(pgrep -f glorytun-udp)" != "" ] && [ "$(glorytun-udp set | grep 'kxtimeout 7d')" = "" ]; then
2021-01-28 19:44:38 +00:00
# glorytun-udp set dev tun0 kxtimeout 7d > /dev/null 2>&1
# fi
2022-12-02 16:00:36 +00:00
[ "$multipath_config" = "backup" ] && [ "$(pgrep -f glorytun-udp)" != "" ] && {
2022-08-23 18:50:28 +00:00
[ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$(resolveip -4 -t 5 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1
[ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -n "$(resolveip -6 -t 5 $serverip)" ] && glorytun-udp path addr $OMR_TRACKER_DEVICE_IP6 to addr $serverip port ${gtudp_port} dev ${gtudp_dev} set pref 125 > /dev/null 2>&1
2021-01-28 19:44:38 +00:00
}
}
config_list_foreach $1 ip addpath
2021-01-18 16:22:27 +00:00
}
2021-01-28 19:44:38 +00:00
config_load openmptcprouter
config_foreach glorytunudppath server
2020-11-19 18:24:29 +00:00
fi
2020-10-06 19:50:55 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipathvpn)" != "1" ] && {
[ "$multipath_status" = "$multipath_config" ] || {
2022-01-11 10:11:49 +00:00
if [ "$(sysctl -qen net.mptcp.mptcp_enabled | tr -d '\n')" = "1" ] || [ "$(sysctl -qen net.mptcp.enabled | tr -d '\n')" = "1" ]; then
2023-01-11 12:11:52 +00:00
if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.force_link)" != "0" ]; then
_log "Reload MPTCP config for $OMR_TRACKER_DEVICE"
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE"
fi
2020-10-06 19:50:55 +00:00
_log "Multipath $OMR_TRACKER_DEVICE switched to $multipath_config"
multipath "$OMR_TRACKER_DEVICE" "$multipath_config"
fi
}
2018-08-23 12:52:09 +00:00
}
2018-12-23 13:13:11 +00:00
#ubus call network reload
2018-08-23 12:52:09 +00:00
# Save wan settings for status page
2022-02-09 19:29:21 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((30 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state)" = "down" ]); then
2020-07-10 13:41:01 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE..."
2021-02-17 13:33:46 +00:00
local ipaddr=""
local ip6addr=""
2019-11-17 19:48:13 +00:00
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then
2021-02-17 13:33:46 +00:00
[ -n "$OMR_TRACKER_DEVICE_IP" ] && ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)"
[ -n "$OMR_TRACKER_DEVICE_IP6" ] && ip6addr="$(omr-ip6-intf $OMR_TRACKER_DEVICE)"
2019-06-26 22:09:10 +00:00
else
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
2020-02-25 13:20:30 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state="up"
2019-02-25 19:06:54 +00:00
fi
2018-08-23 12:52:09 +00:00
[ -n "$ipaddr" ] && {
2018-10-05 13:26:43 +00:00
# Check if we can get a IPv6 address, if yes enable RA else disable
2020-05-20 08:06:51 +00:00
#local check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
#[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com/"
#local ip6addr="$(curl -s -6 -m 2 $check_ipv6_website)"
#[ -z "$ip6addr" ] && {
2021-11-08 19:15:42 +00:00
# local ip6addr="$(curl -s -6 -m 2 http://ifconfig.me/)"
2020-05-20 08:06:51 +00:00
#}
#if [ "$(uci -q get openmptcprouter.settings.ipv6_disable)" = "0" ]; then
# if [ -n "$ip6addr" ] && [ "$(uci -q get dhcp.lan.ra_default)" != 1 ]; then
# _log "Enable IPv6 RA"
# uci -q set dhcp.lan.ra=server
# uci -q set dhcp.lan.ra_default=1
# uci -q set dhcp.lan.dhcpv6=server
# /etc/init.d/odhcpd start > /dev/null 2>&1
# /etc/init.d/odhcpd enable > /dev/null 2>&1
# elif [ -z "$ip6addr" ] && [ "$(uci -q set dhcp.lan.ra_default)" = 1 ]; then
# _log "Disable IPv6 RA"
# uci -q delete dhcp.lan.ra
# uci -q delete dhcp.lan.dhcpv6
# /etc/init.d/odhcpd start > /dev/null 2>&1
# /etc/init.d/odhcpd enable > /dev/null 2>&1
# fi
#fi
2019-02-25 19:06:54 +00:00
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
2021-01-16 07:14:09 +00:00
#local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')"
#[ -z "$asn" ] && {
2022-01-27 20:02:09 +00:00
local asn="$(timeout 2 whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')"
2021-01-16 07:14:09 +00:00
#}
2019-02-25 19:06:54 +00:00
fi
2018-10-13 21:02:11 +00:00
[ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && {
2018-10-12 15:13:52 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface
}
2018-10-31 11:38:56 +00:00
if [ "$(uci -q get openmptcprouter.latest_versions.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.latest_versions.lc))) -gt 3600 ]; then
2020-10-07 09:18:13 +00:00
local latestversions="$(curl -4 -s -m 3 https://www.openmptcprouter.com/version/version.json)"
2018-10-31 11:38:56 +00:00
[ -n "$latestversions" ] && {
uci -q set openmptcprouter.latest_versions=latest_versions
2022-08-30 19:01:54 +00:00
uci -q set openmptcprouter.latest_versions.omr=$(echo $latestversions | jsonfilter -q -e '@.omr')-$(ubus call system board | jsonfilter -e '@.kernel' | cut -d'.' -f1,2)
2018-10-31 11:38:56 +00:00
uci -q set openmptcprouter.latest_versions.vps=$(echo $latestversions | jsonfilter -q -e '@.vps')
uci -q set openmptcprouter.latest_versions.lc=$(date +"%s")
}
fi
2022-01-27 20:02:09 +00:00
[ -n "$ipaddr" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.publicip)" != "$ipaddr" ] && {
_log "New public ip detected for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE): $ipaddr"
/etc/init.d/mptcp enabled && {
_log "Reload MPTCP for $OMR_TRACKER_DEVICE"
2022-02-11 11:06:41 +00:00
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" 2>&1 >/dev/null
2022-01-27 20:02:09 +00:00
}
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr"
}
2019-01-27 13:56:55 +00:00
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
2022-01-27 20:02:09 +00:00
[ -n "$asn" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.asn)" != "$asn" ] && {
2021-01-16 07:14:09 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
}
2021-05-19 17:37:17 +00:00
# Routing loop detection
2021-05-21 06:40:49 +00:00
local lanip="$(uci -q get network.lan.ipaddr)"
2021-05-19 17:37:17 +00:00
local masterip
get_master_ip() {
2022-02-09 19:29:21 +00:00
if [ -n "$1" ] && [ "$(uci -q get openmptcprouter.$1.multipath)" = "master" ]; then
2021-05-19 17:37:17 +00:00
masterip="$(uci -q get openmptcprouter.$1.publicip)"
fi
}
config_load openmptcprouter
config_foreach get_master_ip interface
if [ -n "$lanip" ] && [ -n "$masterip" ] && [ -n "$ipaddr" ] && [ "$ipaddr" = "$masterip" ] && [ "$(uci -q get openmptcprouter.settings.disableloopdetection)" != "1" ]; then
loop=0
routingloop() {
2022-02-09 19:29:21 +00:00
vpsip=""
[ -n "$1"] && vpsip="$(uci -q get openmptcprouter.$1.ip)"
2021-05-22 15:29:46 +00:00
if [ -n "$vpsip" ] && [ "$(omr-routing-loop $vpsip $lanip $OMR_TRACKER_DEVICE)" = "detected" ]; then
2021-05-19 17:37:17 +00:00
loop=1
fi
}
config_load openmptcprouter
config_foreach routingloop server
if [ "$loop" = "1" ]; then
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.loop='1'
else
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.loop
fi
else
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.loop
fi
2021-01-21 17:59:55 +00:00
local omrtracebox
traceboxmtutest() {
omr_tracebox_mtu() {
local serverip=$1
2022-07-28 17:15:23 +00:00
[ "$serverip" != "${1#*[0-9].[0-9]}" ] && serverip=""
2022-12-02 16:00:36 +00:00
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep -f tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
2021-01-21 17:59:55 +00:00
omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)"
[ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox"
2021-01-16 07:14:09 +00:00
}
2022-07-27 11:30:24 +00:00
#if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
2021-08-01 06:28:11 +00:00
if [ -n "$(uci -q get network.$(find_network_device ${OMR_TRACKER_INTERFACE}).mtu)" ]; then
2022-02-09 19:29:21 +00:00
network_device=$(find_network_device ${OMR_TRACKER_INTERFACE})
mtu=""
[ -n "$network_device" ] && mtu=$(uci -q get network.${network_device}.mtu)
2021-01-21 17:59:55 +00:00
[ -n "$mtu" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
}
elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && {
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
[ -n "$mtu" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
}
} || {
local mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP 1.1.1.1)
[ -n "$mtu" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
}
}
fi
fi
}
2021-01-22 09:40:57 +00:00
config_list_foreach $1 ip omr_tracebox_mtu
2021-01-21 17:59:55 +00:00
}
config_load openmptcprouter
config_foreach traceboxmtutest server
2022-02-09 19:29:21 +00:00
[ "$(uci -q get openmptcprouter.settings.tracebox)" = "0" ] && [ -n "$OMR_TRACKER_DEVICE" ] && {
2021-04-14 19:07:26 +00:00
mptcpsupport="$(omr-mptcp-intf $OMR_TRACKER_DEVICE)"
[ -n "$mptcpsupport" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$mptcpsupport"
}
2021-01-16 07:14:09 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
}
[ -n "$ip6addr" ] && {
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
local asn="$(whois $ip6addr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')"
fi
[ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE)" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE=interface
}
if [ "$(uci -q get openmptcprouter.latest_versions.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.latest_versions.lc))) -gt 3600 ]; then
local latestversions="$(curl -6 -s -m 3 https://www.openmptcprouter.com/version/version.json)"
[ -n "$latestversions" ] && {
uci -q set openmptcprouter.latest_versions=latest_versions
uci -q set openmptcprouter.latest_versions.omr=$(echo $latestversions | jsonfilter -q -e '@.omr')
uci -q set openmptcprouter.latest_versions.vps=$(echo $latestversions | jsonfilter -q -e '@.vps')
uci -q set openmptcprouter.latest_versions.lc=$(date +"%s")
}
fi
2022-01-27 20:02:09 +00:00
[ -n "$ip6addr" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.publicip)" != "$ip6addr" ] && {
_log "New public ip detected for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE): $ip6addr"
/etc/init.d/mptcp enabled && {
_log "Reload MPTCP for $OMR_TRACKER_DEVICE"
2022-02-11 11:06:41 +00:00
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" 2>&1 >/dev/null
2022-01-27 20:02:09 +00:00
}
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ip6addr"
}
2021-01-16 07:14:09 +00:00
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
2018-08-23 12:52:09 +00:00
[ -n "$asn" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
}
2021-01-21 17:59:55 +00:00
local omrtracebox
traceboxmtutest() {
omr_tracebox_mtu() {
local serverip=$1
2022-07-28 17:15:23 +00:00
[ "$serverip" != "${1#*:[0-9a-fA-F]}" ] && serverip=""
2022-12-02 16:00:36 +00:00
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep -f tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
2021-01-21 17:59:55 +00:00
omrtracebox="$(omr-tracebox-mptcp $serverip $OMR_TRACKER_DEVICE)"
[ -n "$omrtracebox" ] && [ -z "$(echo $omrtracebox | grep error)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$omrtracebox"
2018-09-19 13:28:50 +00:00
}
2022-07-27 11:30:24 +00:00
#if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$(uci -q get glorytun.vpn.enable)" != "1" ] && [ "$(uci -q get glorytun-udp.vpn.enable)" != "1" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
if [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
2022-02-09 19:29:21 +00:00
network_device=$(find_network_device ${OMR_TRACKER_INTERFACE})
if [ -n "$network_device" ] && [ -n "$(uci -q get network.${network_device}.mtu)" ]; then
2021-08-01 06:28:11 +00:00
mtu=$(uci -q get network.$(find_network_device ${OMR_TRACKER_INTERFACE}).mtu)
2021-01-21 17:59:55 +00:00
[ -n "$mtu" ] && {
2021-07-30 18:21:47 +00:00
uci -q set openmptcprouter.${OMR_TRACKER_INTERFACE}.mtu=$mtu
2021-01-21 17:59:55 +00:00
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
}
elif [ -n "$OMR_TRACKER_DEVICE_IP" ]; then
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && {
2022-07-27 11:30:24 +00:00
local mtu=$(omr-mtu6 $OMR_TRACKER_DEVICE_IP6 $serverip)
2021-01-21 17:59:55 +00:00
[ -n "$mtu" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
}
} || {
2022-07-28 17:15:23 +00:00
local mtu=$(omr-mtu6 $OMR_TRACKER_DEVICE_IP6 2606:4700:4700::1111)
2021-01-21 17:59:55 +00:00
[ -n "$mtu" ] && {
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
}
}
fi
fi
}
2021-01-22 09:40:57 +00:00
config_list_foreach $1 ip omr_tracebox_mtu
2021-01-21 17:59:55 +00:00
}
config_load openmptcprouter
config_foreach traceboxmtutest server
2020-02-21 10:28:09 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
2019-05-21 19:36:21 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
2018-08-23 12:52:09 +00:00
}
2019-02-25 19:06:54 +00:00
if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" = "0" ]; then
2022-06-17 18:13:55 +00:00
if ping -B -I $OMR_TRACKER_DEVICE -c 1 $(uci -q get shadowsocks-libev.sss0.server) 2>&1 >/dev/null; then
2019-02-25 19:06:54 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
fi
fi
2020-04-26 11:21:26 +00:00
proto="$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)"
#if [ "$proto" = "qmi" ]; then
# intfdata="$(omr-qmi $OMR_TRACKER_DEVICE all | tr -d '\n')"
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.operator=$(echo $intfdata | awk -F";" '{print $2}')
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.number=$(echo $intfdata | awk -F";" '{print $3}')
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state=$(echo $intfdata | awk -F";" '{print $4}')
#elif [ "$proto" = "modemmanager" ]; then
# intfdata="$(omr-modemmanager $OMR_TRACKER_DEVICE all)"
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.operator=$(echo $intfdata | awk -F";" '{print $2}')
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.number=$(echo $intfdata | awk -F";" '{print $3}')
# uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state=$(echo $intfdata | awk -F";" '{print $4}')
#else
if [ "$proto" != "qmi" ] && [ "$proto" != "modemmanager" ]; then
2021-04-09 17:59:14 +00:00
if [ -n "$OMR_TRACKER_DEVICE_GATEWAY" ] && [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -n "$(curl --interface $OMR_TRACKER_DEVICE_IP -s -m 2 -X GET http://$OMR_TRACKER_DEVICE_GATEWAY/api/webserver/SesTokInfo)" ]; then
2020-04-21 20:56:42 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer='huawei'
else
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer
fi
2020-02-21 10:28:09 +00:00
fi
2018-10-12 15:13:52 +00:00
if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]; then
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(( $(date +"%s") - 3400 ))
2020-07-10 13:41:01 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE... Failed"
2019-04-27 13:20:19 +00:00
uci -q commit openmptcprouter
2018-10-12 15:13:52 +00:00
else
2020-07-10 13:41:01 +00:00
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE... Done"
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2022-12-02 16:00:36 +00:00
if [ "$(pgrep -f openmptcprouter-vps)" = "" ] && ( [ "$(uci -q get openmptcprouter.settings.apilc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.settings.apilc))) -gt 3600 ] ); then
2020-11-17 10:10:49 +00:00
_log "Check API configuration..."
2022-12-02 16:00:36 +00:00
/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 &
2020-11-17 10:10:49 +00:00
uci -q set openmptcprouter.settings.apilc=$(date +"%s")
_log "Check API configuration... Done"
fi
2018-10-12 15:13:52 +00:00
fi
2018-12-17 16:00:48 +00:00
dns_flush
2018-07-17 20:41:43 +00:00
fi
2018-10-31 11:38:56 +00:00
2022-02-09 19:29:21 +00:00
[ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_LATENCY" ] && {
2019-01-27 19:33:21 +00:00
[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.latency)" != "" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency_previous="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.latency)"
2018-10-31 11:38:56 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
2019-07-29 08:36:22 +00:00
#[ -z "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.latency_max)" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency_max="$OMR_TRACKER_LATENCY"
#[ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.latency_max)" -lt "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency_max="$OMR_TRACKER_LATENCY"
2020-10-13 09:27:49 +00:00
if [ "$multipath_config" = "on" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.multipath)" != "master" ] && ([ "$(uci -q get openmptcprouter.settings.master)" = "dynamic" ] || ( ( [ "$(uci -q get openmptcprouter.settings.master)" = "change" ] || [ "$(uci -q get openmptcprouter.settings.master)" = "" ] ) && [ "$(uci -q get openmptcprouter.settings.master_lcintf | grep $OMR_TRACKER_INTERFACE)" = "" ] ) ); then
2020-05-25 12:02:59 +00:00
masterintf="$(uci -q show openmptcprouter | grep -m 1 multipath=\'master\' | cut -d'.' -f2)"
[ -z "$masterintf" ] && masterintf="$(uci -q show network | grep -m 1 multipath=\'master\' | cut -d'.' -f2)"
2018-12-04 15:55:11 +00:00
masterlatency="$(uci -q get openmptcprouter.$masterintf.latency | tr -d '\n')"
2022-02-11 11:06:41 +00:00
if [ -z "$masterlatency" ] || ([ -n "$masterintf" ] && [ "$(uci -q get openmptcprouter.$masterintf.state)" = "down" ]); then
2019-01-19 16:17:42 +00:00
masterlatency=1000
fi
if [ -n "$masterintf" ] && ([ "$masterlatency" != "" ] || [ "$(uci -q get openmptcprouter.$masterintf.state)" = "down" ]); then
2020-10-13 09:27:49 +00:00
if ( ( [ "$(uci -q get openmptcprouter.settings.master)" = "change" ] || [ "$(uci -q get openmptcprouter.settings.master)" = "" ] ) && [ "$OMR_TRACKER_LATENCY" -lt $(awk "BEGIN {printf \"%i\",${masterlatency}/1.5}") ] ) || ( [ "$(uci -q get openmptcprouter.settings.master)" = "dynamic" ] && [ "$OMR_TRACKER_LATENCY" -lt "$((masterlatency/2))" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.latency_previous)" -lt "$((masterlatency/2))" ] ); then
2018-12-25 08:49:36 +00:00
uci -q set network.$masterintf.multipath='on'
2019-08-27 20:24:45 +00:00
uci -q set openmptcprouter.$masterintf.multipath='on'
2018-12-25 08:49:36 +00:00
uci -q set network.$OMR_TRACKER_INTERFACE.multipath='master'
2019-08-27 20:24:45 +00:00
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.multipath='master'
2019-06-11 17:12:47 +00:00
if [ "$(uci -q get openmptcprouter.settings.master_lcintf | grep $OMR_TRACKER_INTERFACE)" = "" ]; then
uci -q add_list openmptcprouter.settings.master_lcintf="$OMR_TRACKER_INTERFACE"
fi
2019-11-13 18:22:08 +00:00
if [ "$(uci -q get openmptcprouter.settings.master)" = "" ]; then
uci -q set openmptcprouter.settings.master="change"
fi
2019-01-19 20:21:16 +00:00
if [ "$(uci -q get openmptcprouter.settings.master)" != "dynamic" ]; then
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes network)" ] && uci -q commit network
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2019-01-19 20:21:16 +00:00
fi
2018-12-25 08:49:36 +00:00
_log "Change master interface from $masterintf ($masterlatency ms) to $OMR_TRACKER_INTERFACE ($OMR_TRACKER_LATENCY ms)"
fi
2018-10-31 11:38:56 +00:00
fi
fi
}
2018-11-27 14:18:43 +00:00
2022-07-23 07:23:27 +00:00
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then
addlatency=$(uci -q get network.${OMR_TRACKER_INTERFACE}.addlatency)
[ -z "$addlatency" ] && addlatency="0"
if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $OMR_TRACKER_DEVICE | grep delay)" != "" ]; then
tc qdisc del dev ${OMR_TRACKER_DEVICE} root netem 2>&1 >/dev/null
fi
if [ "$addlatency" != "0" ]; then
if [ "$(tc qdisc show dev $OMR_TRACKER_DEVICE | grep delay)" = "" ]; then
tc qdisc add dev ${OMR_TRACKER_DEVICE} root netem delay ${addlatency}ms 2>&1 >/dev/null
elif [ "$(tc qdisc show dev $OMR_TRACKER_DEVICE | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then
tc qdisc replace dev ${OMR_TRACKER_DEVICE} root netem delay ${addlatency}ms 2>&1 >/dev/null
fi
fi
fi
2018-12-15 20:33:58 +00:00
# If a service is down, force restart it
2022-12-02 16:00:36 +00:00
if [ -f /etc/init.d/shadowsocks-libev ] && [ "$(pgrep -f omr-tracker-ss)" = "" ] && [ "$(pgrep -f ss-redir)" = "" ] && [ "$(pgrep -f ss-local)" = "" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "192.18.1.3" ] && [ "$(uci -q get shadowsocks-libev.sss0.key)" != "" ]; then
2018-12-15 20:33:58 +00:00
_log "Can't find Shadowsocks, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/shadowsocks-libev restart 2>&1 >/dev/null
2018-12-17 16:00:48 +00:00
sleep 5
2018-12-15 20:33:58 +00:00
fi
2022-04-26 05:46:40 +00:00
if [ -f /etc/init.d/glorytun ] && [ "$(pgrep glorytun)" = "" ] && [ "$(uci -q get glorytun.vpn.enable)" = "1" ] && [ -f /etc/init.d/glorytun ] && [ "$(uci -q get glorytun.vpn.key)" != "" ]; then
2018-12-15 20:33:58 +00:00
_log "Can't find Glorytun, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/glorytun restart 2>&1 >/dev/null
2020-12-03 10:28:13 +00:00
sleep 5
fi
2022-04-26 05:46:40 +00:00
if [ -f /etc/init.d/glorytun-udp ] && [ "$(pgrep glorytun-udp)" = "" ] && [ "$(uci -q get glorytun-usp.vpn.enable)" = "1" ] && [ -f /etc/init.d/glorytun-udp ] && [ "$(uci -q get glorytun-udp.vpn.key)" != "" ]; then
2020-12-03 10:28:13 +00:00
_log "Can't find Glorytun UDP, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/glorytun-udp restart 2>&1 >/dev/null
2018-12-17 16:00:48 +00:00
sleep 5
2018-12-15 20:33:58 +00:00
fi
2020-05-05 08:48:55 +00:00
2022-12-02 16:00:36 +00:00
if [ "$(pgrep -f dnsmasq)" = "" ] && [ -f /etc/init.d/dnsmasq ]; then
2022-10-06 06:39:48 +00:00
_log "Can't find dnsmasq, restart it..."
/etc/init.d/dnsmasq restart 2>&1 >/dev/null
sleep 5
fi
2022-12-02 16:00:36 +00:00
if [ "$(pgrep -f unbound)" = "" ] && [ -f /etc/init.d/unbound ] && [ "$(uci -q get unbound.@unbound[0].enabled)" = "1" ]; then
2022-10-06 06:39:48 +00:00
_log "Can't find unbound, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/unbound restart 2>&1 >/dev/null
2020-09-25 15:31:27 +00:00
sleep 5
fi
2020-05-05 08:48:55 +00:00
if [ "$(pgrep openvpn)" = "" ] && [ -f /etc/init.d/openvpn ]; then
openvpn_enable=0
openvpn_enabled() {
[ "$(uci -q get openvpn.$1.enabled)" = "1" ] && openvpn_enable=1
}
config_load openvpn
config_foreach openvpn_enabled openvpn
if [ "$openvpn_enable" = "1" ]; then
_log "Can't find OpenVPN, restart it"
2022-02-11 11:06:41 +00:00
/etc/init.d/openvpn restart 2>&1 >/dev/null
2020-05-05 08:48:55 +00:00
sleep 5
fi
2018-12-15 20:33:58 +00:00
fi
2020-05-05 08:48:55 +00:00
2020-09-16 06:57:37 +00:00
if [ "$(pgrep mlvpn)" = "" ] && [ "$(uci -q get mlvpn.general.enable)" = "1" ] && [ -f /etc/init.d/mlvpn ] && [ "$(uci -q get mlvpn.general.password)" != "" ]; then
2018-12-15 20:33:58 +00:00
_log "Can't find MLVPN, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/mlvpn restart 2>&1 >/dev/null
2018-12-17 16:00:48 +00:00
sleep 5
2018-12-15 20:33:58 +00:00
fi
2020-09-16 06:57:37 +00:00
if [ "$(pgrep dsvpn)" = "" ] && [ "$(uci -q get dsvpn.vpn.enable)" = "1" ] && [ -f /etc/init.d/dsvpn ] && [ "$(uci -q get dsvpn.vpn.key)" != "" ]; then
2019-09-08 17:13:04 +00:00
_log "Can't find DSVPN, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/dsvpn restart 2>&1 >/dev/null
2019-09-08 17:13:04 +00:00
sleep 5
fi
2022-07-31 14:28:59 +00:00
if [ "$(pgrep -f v2ray)" = "" ] && [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ]; then
2020-09-04 20:05:58 +00:00
_log "Can't find V2Ray, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/v2ray restart 2>&1 >/dev/null
2020-09-04 20:05:58 +00:00
sleep 5
fi
2021-04-07 16:17:25 +00:00
if [ "$(pgrep miniupnpd)" = "" ] && [ "$(uci -q get upnpd.config.enabled)" = "1" ] && [ -f /etc/init.d/miniupnpd ]; then
_log "Can't find miniupnpd, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/miniupnpd restart 2>&1 >/dev/null
2021-04-07 16:17:25 +00:00
sleep 5
fi
2020-09-04 20:05:58 +00:00
2020-11-25 20:24:46 +00:00
if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then
_log "Can't find rpcd, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/rpcd restart 2>&1 >/dev/null
2020-11-25 20:24:46 +00:00
sleep 5
fi
2021-07-04 05:20:55 +00:00
if [ "$(pgrep uhttpd)" = "" ] && [ -f /etc/init.d/uhttpd ]; then
_log "Can't find uhttpd, restart it..."
2022-02-11 11:06:41 +00:00
/etc/init.d/uhttpd restart 2>&1 >/dev/null
2021-07-04 05:20:55 +00:00
sleep 5
fi
2021-04-26 15:13:09 +00:00
#if [ "$(pgrep ModemManager)" = "" ] && [ -f /etc/init.d/modemmanager ] && [ -n "$(uci -q show network | grep modemmanager)" ] && [ "$(uci -q get openmptcprouter.settings.modemmanager)" != "0" ]; then
# _log "Can't find ModemManager, restart it..."
2022-02-11 11:06:41 +00:00
# /etc/init.d/modemmanager restart 2>&1 >/dev/null
2021-04-26 15:13:09 +00:00
# sleep 5
#fi
2021-04-22 17:58:49 +00:00
2021-01-28 19:44:38 +00:00
if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ] && [ "$(pgrep -f '/etc/init.d/omr-tracker')" = "" ]; then
2020-10-13 09:27:49 +00:00
_log "Can't find omr-tracker-v2ray, restart omr-tracker..."
2022-02-11 11:06:41 +00:00
/etc/init.d/omr-tracker restart 2>&1 >/dev/null
2020-10-12 14:08:25 +00:00
fi
2018-12-15 20:33:58 +00:00
2019-01-06 18:11:38 +00:00
set_get_config() {
local server=$1
2019-01-27 13:56:55 +00:00
[ -n "$server" ] && uci -q set openmptcprouter.${server}.get_config=1
2019-01-06 18:11:38 +00:00
}
2020-03-27 09:23:56 +00:00
if [ "$(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" ]; then
2019-01-06 18:11:38 +00:00
config_load openmptcprouter
config_foreach set_get_config server
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2019-01-06 18:11:38 +00:00
fi
2020-10-12 14:08:25 +00:00
2021-01-28 19:44:38 +00:00
if [ "$(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
2020-10-13 09:27:49 +00:00
_log "Can't find omr-tracker-ss, restart omr-tracker..."
2022-02-11 11:06:41 +00:00
/etc/init.d/omr-tracker restart 2>&1 >/dev/null
2020-10-12 14:08:25 +00:00
fi
2019-01-06 18:11:38 +00:00
if [ "$(uci -q get glorytun.vpn.enable)" = "1" ] && [ "$(uci -q get glorytun.vpn.key)" = "" ]; then
config_load openmptcprouter
config_foreach set_get_config server
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2019-01-06 18:11:38 +00:00
fi
2020-09-04 20:05:58 +00:00
if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ "$(uci -q get v2ray.omrout.s_vless_user_id)" = "" ]; then
config_load openmptcprouter
config_foreach set_get_config server
2022-10-17 06:14:40 +00:00
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
2020-09-04 20:05:58 +00:00
fi
2020-08-06 13:29:45 +00:00
if [ -n "$(logread | tail -n 2 | grep 'Ring expansion failed')" ]; then
_log "Workaround Ring expansion failed problem"
echo 1 > /sys/bus/pci/devices/0000:00:00.0/remove
sleep 2
echo 1 > /sys/bus/pci/rescan
fi
2022-09-25 17:03:25 +00:00
if [ -f /etc/init.d/omr-bypass ] && (([ -f /usr/sbin/iptables-legacy-save ] && [ "$(iptables-legacy-save 2>/dev/null | grep omr-bypass)" = "" ]) || [ "$(iptables-save 2>/dev/null | grep omr-bypass)" = "" ]) && [ "$(pgrep -f omr-bypass)" = "" ]; then
2020-11-03 20:34:44 +00:00
_log "Can't find omr-bypass rules, restart omr-bypass..."
2022-02-11 11:06:41 +00:00
/etc/init.d/omr-bypass 2>&1 >/dev/null
2022-07-31 14:28:59 +00:00
sleep 5
2020-11-03 20:34:44 +00:00
fi
2022-11-19 06:30:22 +00:00
if [ -f /etc/backup/installed_packages.txt ] && [ -n "$(grep overlay /etc/backup/installed_packages.txt)" ] && ([ "$(uci -q get openmptcprouter.settings.sysupgrade_lc)" = "" ] || [ $(($(date +"%s") + $((30 + RANDOM % 31)) - $(uci -q get openmptcprouter.settings.sysupgrade_lc))) -gt 3600 ]) && [ $(($(date +"%s") - $(stat -c "%Y" /etc/backup/installed_packages.txt))) -gt 86400 ]; then
2021-05-21 06:26:56 +00:00
_log "Reinstall packages..."
2022-11-19 06:30:22 +00:00
uci -q set openmptcprouter.settings.sysupgrade_lc=$(date +"%s")
2022-02-11 11:06:41 +00:00
/etc/init.d/sysupgrade restart 2>&1 >/dev/null
2022-11-19 06:30:22 +00:00
sleep 10
2021-05-21 06:26:56 +00:00
fi
2022-12-02 16:00:36 +00:00
if [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep token_error=\'1\')" != "" ]; then
/etc/init.d/openmptcprouter-vps token >/dev/null 2>&1 &
2022-09-25 17:03:25 +00:00
sleep 5
fi
2022-12-02 16:00:36 +00:00
if [ "$(pgrep -f openmptcprouter-vps)" = "" ] && ([ "$(uci -q show openmptcprouter | grep get_config=\'1\')" != "" ] || [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" != "" ]); then
/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 &
2020-09-17 12:22:21 +00:00
sleep 5
2021-03-23 08:51:21 +00:00
fi
2023-06-03 06:31:06 +00:00
if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.enabled)" = "1" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.autorate)" = "1" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ -z $(pgrep -f "autorate_config.${OMR_TRACKER_INTERFACE}") ]; then
2022-07-28 17:15:23 +00:00
/etc/init.d/sqm-autorate restart >/dev/null 2>&1
sleep 5
fi
2022-12-02 16:00:36 +00:00
#if [ "$(uci -q show openmptcprouter | grep server)" != "" ] && [ "$(uci -q show openmptcprouter | grep password)" != "" ] && [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" = "" ] && ([ "$(uci -q show openmptcprouter | grep set_firewall=\'1\')" != "" ] || (([ -f /usr/sbin/iptables-legacy-save ] && [ -z "$(iptables-save 2>/dev/null | grep omr_dst_bypass_${OMR_TRACKER_DEVICE})" ]) || [ -z "$(iptables-save 2>/dev/null | grep omr_dst_bypass_${OMR_TRACKER_DEVICE})" ])); then
if [ "$(pgrep -f set_vps_firewall)" = "" ] && [ "$(uci -q show openmptcprouter | grep server)" != "" ] && [ "$(uci -q show openmptcprouter | grep password)" != "" ] && [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep admin_error=\'1\')" = "" ] && [ "$(uci -q show openmptcprouter | grep set_firewall=\'1\')" != "" ]; then
2022-06-19 09:10:41 +00:00
check_server_fw() {
[ "$(uci -q get openmptcprouter.$1.set_firewall)" = "1" ] && {
_log "Set firewall on server $1"
/etc/init.d/openmptcprouter-vps set_vps_firewall $1 >/dev/null 2>&1
}
}
config_load openmptcprouter
config_foreach check_server_fw server
2021-03-23 08:51:21 +00:00
run_fw_include() {
2022-02-09 19:29:21 +00:00
[ -n "$1" ] && [ "$(uci -q get firewall.$1.reload)" = "0" ] && sh $(uci -q get firewall.$1.path) >/dev/null 2>&1
2021-03-23 08:51:21 +00:00
}
config_load firewall
config_foreach run_fw_include include
#/etc/init.d/shadowsocks-libev rules_up >/dev/null 2>&1
#/etc/init.d/v2ray rules_up >/dev/null 2>&1
#/etc/init.d/omr-bypass reload_rules >/dev/null 2>&1
#sh /etc/firewall.gre-tunnel >/dev/null 2>&1
2021-06-18 18:13:59 +00:00
/bin/blocklanfw >/dev/null 2>&1
2021-03-23 08:51:21 +00:00
sleep 5
2020-09-17 12:22:21 +00:00
fi