mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-15 03:51:51 +00:00
Merge branch 'develop' of https://github.com/Ysurac/openmptcprouter-feeds into test
This commit is contained in:
commit
0cffb748a3
10 changed files with 69 additions and 1836 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,278 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# This script save settings for status page usage
|
||||
|
||||
[ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ -z "$OMR_TRACKER_INTERFACE" ] && exit 0
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
[ "$interface_up" != "true" ] && exit 0
|
||||
|
||||
# Save wan settings for status page
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((30 + RANDOM % 10)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ] || [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.state)" = "down" ]); then
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE..."
|
||||
local ipaddr=""
|
||||
local ip6addr=""
|
||||
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then
|
||||
[ -n "$OMR_TRACKER_DEVICE_IP" ] && ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)"
|
||||
[ -n "$OMR_TRACKER_DEVICE_IP6" ] && ip6addr="$(omr-ip6-intf $OMR_TRACKER_DEVICE)"
|
||||
else
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state="up"
|
||||
fi
|
||||
[ -n "$ipaddr" ] && {
|
||||
# Check if we can get a IPv6 address, if yes enable RA else disable
|
||||
#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" ] && {
|
||||
# local ip6addr="$(curl -s -6 -m 2 http://ifconfig.me/)"
|
||||
#}
|
||||
#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
|
||||
if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then
|
||||
#local asn="$(wget -4 -qO- -T 4 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')"
|
||||
#[ -z "$asn" ] && {
|
||||
local asn="$(timeout 2 whois $ipaddr 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 -4 -s -m 3 https://55860.com/bak/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')-$(ubus call system board | jsonfilter -e '@.kernel' | cut -d'.' -f1,2)
|
||||
uci -q set openmptcprouter.latest_versions.vps=$(echo $latestversions | jsonfilter -q -e '@.vps')
|
||||
uci -q set openmptcprouter.latest_versions.lc=$(date +"%s")
|
||||
}
|
||||
fi
|
||||
[ -n "$ipaddr" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.publicip)" != "$ipaddr" ] && {
|
||||
previousip="$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.publicip)"
|
||||
if [ -n "$previousip" ]; then
|
||||
_log "New public ip detected for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE): $ipaddr (previous: $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.publicip))"
|
||||
else
|
||||
_log "New public ip detected for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE): $ipaddr (First public IP detected)"
|
||||
fi
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr"
|
||||
/etc/init.d/mptcp enabled && {
|
||||
_log "Reload MPTCP for $OMR_TRACKER_DEVICE"
|
||||
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" 2>&1 >/dev/null
|
||||
}
|
||||
}
|
||||
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
|
||||
[ -n "$asn" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.asn)" != "$asn" ] && {
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
|
||||
}
|
||||
|
||||
# Routing loop detection
|
||||
local lanip="$(uci -q get network.lan.ipaddr)"
|
||||
local masterip
|
||||
get_master_ip() {
|
||||
if [ -n "$1" ] && [ "$(uci -q get openmptcprouter.$1.multipath)" = "master" ]; then
|
||||
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() {
|
||||
vpsip=""
|
||||
[ -n "$1"] && vpsip="$(uci -q get openmptcprouter.$1.ip)"
|
||||
if [ -n "$vpsip" ] && [ "$(omr-routing-loop $vpsip $lanip $OMR_TRACKER_DEVICE)" = "detected" ]; then
|
||||
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
|
||||
|
||||
local omrtracebox
|
||||
traceboxmtutest() {
|
||||
omr_tracebox_mtu() {
|
||||
local serverip=$1
|
||||
[ "$serverip" != "${1#*[0-9].[0-9]}" ] && serverip=""
|
||||
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep -f tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
|
||||
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"
|
||||
}
|
||||
#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
|
||||
if [ -n "$(uci -q get network.$(find_network_device ${OMR_TRACKER_INTERFACE}).mtu)" ]; then
|
||||
network_device=$(find_network_device ${OMR_TRACKER_INTERFACE})
|
||||
mtu=""
|
||||
[ -n "$network_device" ] && mtu=$(uci -q get network.${network_device}.mtu)
|
||||
[ -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" ] && [ "$mtu" != "$(ip --json link show dev $OMR_TRACKER_DEVICE | jsonfilter -e '@[0].mtu' | tr -d '\n')" ] && {
|
||||
mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
||||
[ -n "$mtu" ] && [ "$mtu" != "$(ip --json link show dev $OMR_TRACKER_DEVICE | jsonfilter -e '@[0].mtu' | tr -d '\n')" ] && {
|
||||
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" ] && [ "$mtu" != "$(ip --json link show dev $OMR_TRACKER_DEVICE | jsonfilter -e '@[0].mtu' | tr -d '\n')" ] && {
|
||||
mtu=$(omr-mtu $OMR_TRACKER_DEVICE_IP $serverip)
|
||||
[ -n "$mtu" ] && [ "$mtu" != "$(ip --json link show dev $OMR_TRACKER_DEVICE | jsonfilter -e '@[0].mtu' | tr -d '\n')" ] && {
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mtu=$mtu
|
||||
ip link set dev $OMR_TRACKER_DEVICE mtu $mtu > /dev/null 2>&1
|
||||
}
|
||||
}
|
||||
}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
config_list_foreach $1 ip omr_tracebox_mtu
|
||||
}
|
||||
config_load openmptcprouter
|
||||
config_foreach traceboxmtutest server
|
||||
[ "$(uci -q get openmptcprouter.settings.tracebox)" = "0" ] && [ -n "$OMR_TRACKER_DEVICE" ] && {
|
||||
mptcpsupport="$(omr-mptcp-intf $OMR_TRACKER_DEVICE)"
|
||||
[ -n "$mptcpsupport" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.mptcp_status="$mptcpsupport"
|
||||
}
|
||||
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://55860.com/bak/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
|
||||
[ -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"
|
||||
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" 2>&1 >/dev/null
|
||||
}
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ip6addr"
|
||||
}
|
||||
[ -n "$OMR_TRACKER_LATENCY" ] && uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
|
||||
[ -n "$asn" ] && {
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.asn="$asn"
|
||||
}
|
||||
local omrtracebox
|
||||
traceboxmtutest() {
|
||||
omr_tracebox_mtu() {
|
||||
local serverip=$1
|
||||
[ "$serverip" != "${1#*:[0-9a-fA-F]}" ] && serverip=""
|
||||
[ -n "$serverip" ] && [ "$serverip" != "127.0.0.1" ] && [ "$(pgrep -f tracebox)" = "" ] && [ "$(uci -q get openmptcprouter.settings.tracebox)" != "0" ] && {
|
||||
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"
|
||||
}
|
||||
#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
|
||||
network_device=$(find_network_device ${OMR_TRACKER_INTERFACE})
|
||||
if [ -n "$network_device" ] && [ -n "$(uci -q get network.${network_device}.mtu)" ]; then
|
||||
mtu=$(uci -q get network.$(find_network_device ${OMR_TRACKER_INTERFACE}).mtu)
|
||||
[ -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-mtu6 $OMR_TRACKER_DEVICE_IP6 $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-mtu6 $OMR_TRACKER_DEVICE_IP6 2606:4700:4700::1111)
|
||||
[ -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
|
||||
}
|
||||
config_list_foreach $1 ip omr_tracebox_mtu
|
||||
}
|
||||
config_load openmptcprouter
|
||||
config_foreach traceboxmtutest server
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.state='up'
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
||||
}
|
||||
if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" = "0" ]; then
|
||||
if ping -B -I $OMR_TRACKER_DEVICE -c 1 $(uci -q get shadowsocks-libev.sss0.server) 2>&1 >/dev/null; then
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s")
|
||||
fi
|
||||
fi
|
||||
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
|
||||
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
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer='huawei'
|
||||
else
|
||||
uci -q delete openmptcprouter.$OMR_TRACKER_INTERFACE.manufacturer
|
||||
fi
|
||||
fi
|
||||
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 ))
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE... Failed"
|
||||
uci -q commit openmptcprouter
|
||||
else
|
||||
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "Get status and settings for $OMR_TRACKER_INTERFACE... Done"
|
||||
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
|
||||
if [ "$(pgrep -f openmptcprouter-vps)" = "" ] && ( [ "$(uci -q get openmptcprouter.settings.apilc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.settings.apilc))) -gt 3600 ] ); then
|
||||
_log "Check API configuration..."
|
||||
/etc/init.d/openmptcprouter-vps restart >/dev/null 2>&1 &
|
||||
uci -q set openmptcprouter.settings.apilc=$(date +"%s")
|
||||
_log "Check API configuration... Done"
|
||||
fi
|
||||
fi
|
||||
dns_flush
|
||||
fi
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# This script save latencies and set additionnal latencies if set on interface
|
||||
|
||||
[ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ -z "$OMR_TRACKER_INTERFACE" ] && exit 0
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
[ "$interface_up" != "true" ] && exit 0
|
||||
|
||||
[ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_LATENCY" ] && {
|
||||
[ "$(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)"
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.latency="$OMR_TRACKER_LATENCY"
|
||||
#[ -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"
|
||||
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
|
||||
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)"
|
||||
masterlatency="$(uci -q get openmptcprouter.$masterintf.latency | tr -d '\n')"
|
||||
if [ -z "$masterlatency" ] || ([ -n "$masterintf" ] && [ "$(uci -q get openmptcprouter.$masterintf.state)" = "down" ]); then
|
||||
masterlatency=1000
|
||||
fi
|
||||
if [ -n "$masterintf" ] && ([ "$masterlatency" != "" ] || [ "$(uci -q get openmptcprouter.$masterintf.state)" = "down" ]); then
|
||||
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
|
||||
uci -q set network.$masterintf.multipath='on'
|
||||
uci -q set openmptcprouter.$masterintf.multipath='on'
|
||||
uci -q set network.$OMR_TRACKER_INTERFACE.multipath='master'
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.multipath='master'
|
||||
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
|
||||
if [ "$(uci -q get openmptcprouter.settings.master)" = "" ]; then
|
||||
uci -q set openmptcprouter.settings.master="change"
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.master)" != "dynamic" ]; then
|
||||
[ -n "$(uci -q changes network)" ] && uci -q commit network
|
||||
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
|
||||
fi
|
||||
_log "Change master interface from $masterintf ($masterlatency ms) to $OMR_TRACKER_INTERFACE ($OMR_TRACKER_LATENCY ms)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
[ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter
|
||||
}
|
||||
|
||||
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
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
# This script launch a speedtest if the option is enabled on the interface
|
||||
|
||||
[ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ -z "$OMR_TRACKER_INTERFACE" ] && exit 0
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
[ "$interface_up" != "true" ] && exit 0
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(pgrep -f omr-test-speed-server)" = "" ] && [ "$(uci -q get openmptcprouter.${OMR_TRACKER_INTERFACE}.testspeed)" = "1" ] && [ -z "$(uci -q get openmptcprouter.${OMR_TRACKER_INTERFACE}.testspeed_lc)" ]; then
|
||||
launch_speedtest() {
|
||||
local server=$1
|
||||
[ "$(uci -q get openmptcprouter.${server}.current)" != "1" ] && return
|
||||
download_speed=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest)
|
||||
download_speed2=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest)
|
||||
download_speed3=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest)
|
||||
[ "$download_speed2" -gt "$download_speed" ] && download_speed=${download_speed2}
|
||||
[ "$download_speed3" -gt "$download_speed" ] && download_speed=${download_speed3}
|
||||
download_speed=$((download_speed*8/1000))
|
||||
if [ -n "$download_speed" ] && [ "$download_speed" != "0" ]; then
|
||||
upload_speed=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest upload)
|
||||
upload_speed2=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest upload)
|
||||
upload_speed3=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest upload)
|
||||
[ "$upload_speed2" -gt "$upload_speed" ] && upload_speed=${upload_speed2}
|
||||
[ "$upload_speed3" -gt "$upload_speed" ] && upload_speed=${upload_speed3}
|
||||
|
||||
# Set Download speed settings
|
||||
if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.autorate)" = "1" ]; then
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.download=$((download_speed*65/100))
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.max_download=${download_speed}
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.min_download=$((download_speed*10/100))
|
||||
else
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.download=$((download_speed*95/100))
|
||||
fi
|
||||
_log "Calculated ${OMR_TRACKER_INTERFACE} download speed: ${download_speed}"
|
||||
uci -q set network.${OMR_TRACKER_INTERFACE}.downloadspeed=${download_speed}
|
||||
|
||||
# Set Upload speed settings
|
||||
upload_speed=$((upload_speed*8/1000))
|
||||
if [ -n "$upload_speed" ] && [ "$upload_speed" != "0" ]; then
|
||||
if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.autorate)" = "1" ]; then
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.upload=$((upload_speed*65/100))
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.max_upload=${upload_speed}
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.min_upload=$((upload_speed*10/100))
|
||||
else
|
||||
uci -q set sqm.${OMR_TRACKER_INTERFACE}.upload=$((upload_speed*95/100))
|
||||
fi
|
||||
_log "Calculated ${OMR_TRACKER_INTERFACE} upload speed: ${upload_speed}"
|
||||
uci -q set network.${OMR_TRACKER_INTERFACE}.uploadspeed=${upload_speed}
|
||||
uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.testspeed_lc=$(date +"%s")
|
||||
uci commit network
|
||||
uci commit sqm
|
||||
uci commit openmptcprouter
|
||||
fi
|
||||
fi
|
||||
}
|
||||
config_load openmptcprouter
|
||||
config_foreach launch_speedtest server
|
||||
|
||||
sleep 5
|
||||
fi
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# shellcheck disable=SC1091,SC1090
|
||||
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
||||
|
||||
|
@ -34,9 +34,10 @@ export OMR_TRACKER_INTERVAL_TRIES
|
|||
export OMR_TRACKER_INTERVAL
|
||||
export OMR_TRACKER_NO_BIND
|
||||
|
||||
dscp=56 # set DSCP CS7 (56) in outgoing packets
|
||||
initial_hosts="$OMR_TRACKER_HOSTS"
|
||||
initial_hosts6="$OMR_TRACKER_HOSTS6"
|
||||
#dscp=56 # set DSCP CS7 (56) in outgoing packets
|
||||
|
||||
#initial_hosts="$OMR_TRACKER_HOSTS"
|
||||
#initial_hosts6="$OMR_TRACKER_HOSTS6"
|
||||
initial_timeout="$OMR_TRACKER_TIMEOUT"
|
||||
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
||||
|
||||
|
@ -102,15 +103,15 @@ _post_tracking() {
|
|||
}
|
||||
|
||||
_ping_server() {
|
||||
local servername=$1
|
||||
local servername="$1"
|
||||
[ -z "$servername" ] && return
|
||||
local disabled=$(uci -q get openmptcprouter.$1.disabled)
|
||||
local device=$2
|
||||
local disabled=$(uci -q get openmptcprouter."$servername".disabled)
|
||||
local device="$2"
|
||||
if [ -n "$device" ] && [ "$disabled" != "1" ]; then
|
||||
check_ping() {
|
||||
serverip=$1
|
||||
serverip="$1"
|
||||
if [ -n "$serverip" ]; then
|
||||
_ping $serverip $device "yes"
|
||||
_ping "$serverip" "$device" "yes"
|
||||
statusp=$?
|
||||
if $(exit $statusp); then
|
||||
serverip_ping=true
|
||||
|
@ -119,21 +120,21 @@ _ping_server() {
|
|||
fi
|
||||
}
|
||||
config_load openmptcprouter
|
||||
config_list_foreach ${servername} ip check_ping
|
||||
config_list_foreach "${servername}" ip check_ping
|
||||
fi
|
||||
}
|
||||
|
||||
_httping_server() {
|
||||
local servername=$1
|
||||
local servername="$1"
|
||||
[ -z "$servername" ] && return
|
||||
local disabled=$(uci -q get openmptcprouter.$1.disabled)
|
||||
local port=$(uci -q get openmptcprouter.$1.port)
|
||||
local device=$2
|
||||
local disabled=$(uci -q get openmptcprouter."$servername".disabled)
|
||||
local port=$(uci -q get openmptcprouter."$servername".port)
|
||||
local device="$2"
|
||||
if [ -n "$device" ] && [ "$disabled" != "1" ]; then
|
||||
check_ping() {
|
||||
serverip=$1
|
||||
serverip="$1"
|
||||
if [ -n "$serverip" ]; then
|
||||
_httping "${serverip}:${port}" $device "yes" true
|
||||
_httping "${serverip}:${port}" "$device" "yes" true
|
||||
statusp=$?
|
||||
if $(exit $statusp); then
|
||||
serverip_ping=true
|
||||
|
@ -142,15 +143,15 @@ _httping_server() {
|
|||
fi
|
||||
}
|
||||
config_load openmptcprouter
|
||||
config_list_foreach ${servername} ip check_ping
|
||||
config_list_foreach "${servername}" ip check_ping
|
||||
fi
|
||||
}
|
||||
|
||||
_ping() {
|
||||
local host=$1
|
||||
local host="$1"
|
||||
[ -z "$host" ] && return
|
||||
local device=$2
|
||||
local localip=$3
|
||||
local device="$2"
|
||||
local localip="$3"
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && { [ "$OMR_TRACKER_NO_BIND" = "1" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "3g" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "qmi" ] || [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.proto)" = "ncm" ]; }; then
|
||||
ret=$(ping -I "${device}" \
|
||||
-w "$OMR_TRACKER_TIMEOUT" \
|
||||
|
@ -162,7 +163,7 @@ _ping() {
|
|||
) && echo "$ret" | grep -sq " 0% packet loss" && {
|
||||
if [ "$localip" = "yes" ]; then
|
||||
OMR_TRACKER_LATENCY=$(echo "$ret" | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||
_update_rto "$OMR_TRACKER_LATENCY"
|
||||
#_update_rto "$OMR_TRACKER_LATENCY"
|
||||
fi
|
||||
return
|
||||
}
|
||||
|
@ -184,7 +185,7 @@ _ping() {
|
|||
latency=$(echo "$ret" | grep rtt | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||
[ -n "$latency" ] && {
|
||||
OMR_TRACKER_LATENCY="$latency"
|
||||
_update_rto "$OMR_TRACKER_LATENCY"
|
||||
#_update_rto "$OMR_TRACKER_LATENCY"
|
||||
}
|
||||
OMR_TRACKER_LOSS="$loss"
|
||||
fi
|
||||
|
@ -208,7 +209,7 @@ _httping() {
|
|||
) && echo "$ret" | grep -sq "1 ok" && {
|
||||
if [ "$localip" = "yes" ]; then
|
||||
OMR_TRACKER_LATENCY=$(echo "$ret" | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||
_update_rto "$OMR_TRACKER_LATENCY"
|
||||
#_update_rto "$OMR_TRACKER_LATENCY"
|
||||
fi
|
||||
return
|
||||
}
|
||||
|
@ -220,7 +221,7 @@ _httping() {
|
|||
) && echo "$ret" | grep -sq "1 ok" && {
|
||||
if [ "$localip" = "yes" ]; then
|
||||
OMR_TRACKER_LATENCY=$(echo "$ret" | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||
_update_rto "$OMR_TRACKER_LATENCY"
|
||||
#_update_rto "$OMR_TRACKER_LATENCY"
|
||||
fi
|
||||
return
|
||||
}
|
||||
|
@ -238,7 +239,7 @@ _dns() {
|
|||
one.one.one.one
|
||||
) && echo "$ret" | grep -sq "1.1.1.1" && {
|
||||
OMR_TRACKER_LATENCY=$(echo "$ret" | awk '/Query time/{print $4}')
|
||||
_update_rto "$OMR_TRACKER_LATENCY"
|
||||
#_update_rto "$OMR_TRACKER_LATENCY"
|
||||
return
|
||||
}
|
||||
false
|
||||
|
@ -267,8 +268,8 @@ while true; do
|
|||
OMR_TRACKER_DEVICE_GATEWAY6=
|
||||
serverip_ping=false
|
||||
[ -z "$OMR_TRACKER_DEVICE" ] && {
|
||||
network_get_device OMR_TRACKER_DEVICE $OMR_TRACKER_INTERFACE
|
||||
[ -z "$OMR_TRACKER_DEVICE" ] && network_get_physdev OMR_TRACKER_DEVICE $OMR_TRACKER_INTERFACE
|
||||
network_get_device OMR_TRACKER_DEVICE "$OMR_TRACKER_INTERFACE"
|
||||
[ -z "$OMR_TRACKER_DEVICE" ] && network_get_physdev OMR_TRACKER_DEVICE "$OMR_TRACKER_INTERFACE"
|
||||
[ -z "$OMR_TRACKER_DEVICE" ] && OMR_TRACKER_DEVICE=$(ifstatus "$OMR_TRACKER_INTERFACE" | jsonfilter -q -e '@["l3_device"]')
|
||||
[ -z "$OMR_TRACKER_DEVICE" ] && OMR_TRACKER_DEVICE=$(ifstatus "${OMR_TRACKER_INTERFACE}_4" | jsonfilter -q -e '@["l3_device"]')
|
||||
#[ -z "$OMR_TRACKER_DEVICE" ] && config_get OMR_TRACKER_DEVICE "$OMR_TRACKER_INTERFACE" device
|
||||
|
@ -278,7 +279,7 @@ while true; do
|
|||
if [ -n "$OMR_TRACKER_DEVICE" ] && [ -d "/sys/class/net/$OMR_TRACKER_DEVICE" ]; then
|
||||
if [ -n "$(ip link show $OMR_TRACKER_DEVICE | grep 'state UP')" ] || [ -n "$(ip link show $OMR_TRACKER_DEVICE | grep 'state UNKNOWN')" ]; then
|
||||
# retrieve iface ip and gateway
|
||||
if ([ "$OMR_TRACKER_FAMILY" = "ipv4" ] || [ "$OMR_TRACKER_FAMILY" = "ipv4ipv6" ]) && [ "$OMR_TRACKER_INTERFACE_PROTO" != "dhcpv6" ]; then
|
||||
if { [ "$OMR_TRACKER_FAMILY" = "ipv4" ] || [ "$OMR_TRACKER_FAMILY" = "ipv4ipv6" ]; } && [ "$OMR_TRACKER_INTERFACE_PROTO" != "dhcpv6" ]; then
|
||||
OMR_TRACKER_DEVICE_IP=$(ip -4 -br addr ls dev "$OMR_TRACKER_DEVICE" | awk -F'[ /]+' '{print $3}')
|
||||
if [ -z "$OMR_TRACKER_DEVICE_IP" ]; then
|
||||
OMR_TRACKER_DEVICE_IP=$(ip -4 addr show dev "$OMR_TRACKER_DEVICE" | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
||||
|
||||
name=$0
|
||||
|
@ -41,7 +41,7 @@ _check_server() {
|
|||
local host=$1
|
||||
local port=$2
|
||||
local k=0
|
||||
local valid_ip6=$(valid_subnet6 $host)
|
||||
local valid_ip6=$(valid_subnet6 "$host")
|
||||
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
|
||||
if [ "$valid_ip6" != "ok" ]; then
|
||||
ret=$(curl \
|
||||
|
@ -67,7 +67,7 @@ _check_server() {
|
|||
_check_server_intf() {
|
||||
local host=$1
|
||||
local port=$2
|
||||
local valid_ip6=$(valid_subnet6 $host)
|
||||
local valid_ip6=$(valid_subnet6 "$host")
|
||||
for intf in $(multipath 2>/dev/null | awk '/default/ {print $1}'); do
|
||||
local k=0
|
||||
while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do
|
||||
|
@ -76,7 +76,7 @@ _check_server_intf() {
|
|||
--max-time "$OMR_TRACKER_TIMEOUT" \
|
||||
-s \
|
||||
-k \
|
||||
--interface $intf \
|
||||
--interface "$intf" \
|
||||
"https://${host}:${port}/"
|
||||
)
|
||||
else
|
||||
|
@ -99,7 +99,7 @@ _check_server_intf() {
|
|||
_get_server_name() {
|
||||
local serverid=$1
|
||||
local serverip=$2
|
||||
config_get serveripc $serverid server
|
||||
config_get serveripc "$serverid" server
|
||||
if [ "$serveripc" = "$serverip" ]; then
|
||||
servername=$serverid
|
||||
fi
|
||||
|
@ -107,25 +107,25 @@ _get_server_name() {
|
|||
|
||||
_disable_current() {
|
||||
local serv=$1
|
||||
uci -q set openmptcprouter.${server}.current=0
|
||||
uci -q set openmptcprouter."${server}".current=0
|
||||
}
|
||||
|
||||
_disable_redir() {
|
||||
local redir=$1
|
||||
local serverdisable=$2
|
||||
local redir="$1"
|
||||
local serverdisable="$2"
|
||||
local shadowsocks="$3"
|
||||
config_get serverss $redir server
|
||||
config_get serverss "$redir" server
|
||||
if [ "$serverss" = "$serverdisable" ]; then
|
||||
uci -q set ${shadowsocks}.${redir}.disabled=1
|
||||
uci -q set "${shadowsocks}"."${redir}".disabled=1
|
||||
fi
|
||||
}
|
||||
|
||||
_enable_redir() {
|
||||
local redir=$1
|
||||
local redir="$1"
|
||||
local shadowsocks="$2"
|
||||
config_get serverss $redir server
|
||||
config_get serverss "$redir" server
|
||||
if [ "$serverss" = "sss${count}" ]; then
|
||||
uci -q set ${shadowsocks}.${redir}.disabled=0
|
||||
uci -q set "${shadowsocks}"."${redir}".disabled=0
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -164,7 +164,7 @@ _check_master() {
|
|||
set_ip() {
|
||||
ip="$serverip"
|
||||
if [ "$server_ping" = true ]; then
|
||||
if ([ -n "$(uci -q get shadowsocks-libev)" ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]) || ([ -n "$(uci -q get shadowsocks-rust)" ] && [ "$(uci -q get shadowsocks-rust.sss${count}.server | tr -d '\n')" != "$ip" ]) || ([ -n "$(uci -q get openvpn.omr)" ] && [ -z "$(uci -q get openvpn.omr.remote | grep $ip)" ]); then
|
||||
if { [ -n "$(uci -q get shadowsocks-libev)" ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; } || { [ -n "$(uci -q get shadowsocks-rust)" ] && [ "$(uci -q get shadowsocks-rust.sss${count}.server | tr -d '\n')" != "$ip" ]; } || { [ -n "$(uci -q get openvpn.omr)" ] && [ -z "$(uci -q get openvpn.omr.remote | grep $ip)" ]; }; then
|
||||
logger -t "OMR-Tracker-Server" "Master server ${name} up ($ip), set it back"
|
||||
changes="1"
|
||||
#logger -t "OMR-Tracker-Server" "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n') - $ip"
|
||||
|
@ -217,7 +217,7 @@ _check_master() {
|
|||
set openmptcprouter.${name}.current='1'
|
||||
commit openmptcprouter
|
||||
EOF
|
||||
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
|
||||
/etc/init.d/openmptcprouter-vps get_openvpn_key "$name" >/dev/null 2>/dev/null
|
||||
#/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null
|
||||
/etc/init.d/v2ray restart >/dev/null 2>/dev/null
|
||||
/etc/init.d/xray restart >/dev/null 2>/dev/null
|
||||
|
@ -259,11 +259,11 @@ _check_master() {
|
|||
servername=""
|
||||
config_load shadowsocks-libev
|
||||
config_foreach _get_server_name server "$ip"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir $servername "shadowsocks-libev"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir "$servername" "shadowsocks-libev"
|
||||
servername=""
|
||||
config_load shadowsocks-rust
|
||||
config_foreach _get_server_name server "$ip"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir $servername "shadowsocks-rust"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir "$servername" "shadowsocks-rust"
|
||||
|
||||
if [ -n "$(uci -q get openvpn.omr.remote | grep $ip)" ]; then
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
|
@ -329,10 +329,10 @@ _check_backup() {
|
|||
local count=0
|
||||
local countips=0
|
||||
local changes="0"
|
||||
config_get backup $1 backup
|
||||
config_get ip $1 ip
|
||||
config_get port $1 port
|
||||
config_get disabled $1 disabled
|
||||
config_get backup "$1" backup
|
||||
config_get ip "$1" ip
|
||||
config_get port "$1" port
|
||||
config_get disabled "$1" disabled
|
||||
serverip=""
|
||||
[ "$backup" = "1" ] && [ -n "$ip" ] && [ "$disabled" != "1" ] && {
|
||||
check_ip() {
|
||||
|
@ -359,7 +359,7 @@ _check_backup() {
|
|||
ip="$serverip"
|
||||
#[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break
|
||||
if [ "$server_ping" = true ]; then
|
||||
if ([ -n "$(uci -q get shadowsocks-libev)" ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]) || ([ -n "$(uci -q get shadowsocks-rust)" ] && [ "$(uci -q get shadowsocks-rust.sss${count}.server | tr -d '\n')" != "$ip" ]) || ([ -n "$(uci -q get openvpn.omr)" ] && [ -z "$(uci -q get openvpn.omr.remote | grep $ip)" ]); then
|
||||
if { [ -n "$(uci -q get shadowsocks-libev)" ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" != "$ip" ]; } || { [ -n "$(uci -q get shadowsocks-rust)" ] && [ "$(uci -q get shadowsocks-rust.sss${count}.server | tr -d '\n')" != "$ip" ]; } || { [ -n "$(uci -q get openvpn.omr)" ] && [ -z "$(uci -q get openvpn.omr.remote | grep $ip)" ]; }; then
|
||||
logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)"
|
||||
changes="1"
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
|
@ -407,7 +407,7 @@ _check_backup() {
|
|||
set openmptcprouter.${name}.current='1'
|
||||
commit openmptcprouter
|
||||
EOF
|
||||
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
|
||||
/etc/init.d/openmptcprouter-vps get_openvpn_key "$name" >/dev/null 2>/dev/null
|
||||
#/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null
|
||||
/etc/init.d/v2ray restart >/dev/null 2>/dev/null
|
||||
/etc/init.d/xray restart >/dev/null 2>/dev/null
|
||||
|
@ -452,11 +452,11 @@ _check_backup() {
|
|||
EOF
|
||||
config_load shadowsocks-libev
|
||||
config_foreach _get_server_name server "$ip"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir $servername "shadowsocks-libev"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir "$servername" "shadowsocks-libev"
|
||||
servername=""
|
||||
config_load shadowsocks-rust
|
||||
config_foreach _get_server_name server "$ip"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir $servername "shadowsocks-rust"
|
||||
[ -n "$servername" ] && config_foreach _disable_redir ss_redir "$servername" "shadowsocks-rust"
|
||||
|
||||
OMR_TRACKER_STATUS_MSG="No answer to ping and to API check"
|
||||
mail_alert="$(uci -q get omr-tracker.server.mail_alert)"
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
||||
|
||||
name=$0
|
||||
basename="$(basename $0)"
|
||||
|
||||
if [ -e /usr/sbin/iptables-nft ]; then
|
||||
|
@ -79,11 +78,11 @@ interval=${OMR_TRACKER_INTERVAL:-10}
|
|||
retry=${OMR_TRACKER_TRIES:-4}
|
||||
proxy=${OMR_TRACKER_PROXY:-127.0.0.1:1111}
|
||||
hosts=${OMR_TRACKER_HOSTS:-1.1.1.1 1.0.0.1}
|
||||
hosts6=${OMR_TRACKER_HOSTS6}
|
||||
#hosts6=${OMR_TRACKER_HOSTS6}
|
||||
wait_test=${OMR_TRACKER_WAIT_TEST:-0}
|
||||
server=${OMR_TRACKER_SERVER:-sss0}
|
||||
type=${OMR_TRACKER_SS_TYPE:-libev}
|
||||
nodns=0
|
||||
#nodns=0
|
||||
|
||||
last=0
|
||||
nocontact=""
|
||||
|
@ -98,7 +97,7 @@ while true; do
|
|||
[ "$host" = "$hosts" ] || {
|
||||
hosts="${hosts#* } $host"
|
||||
}
|
||||
if [ "$(curl -s -I -w %{http_code} --socks5 ${proxy} --max-time ${timeout} $host -o /dev/null)" != "000" ]; then
|
||||
if [ "$(curl -s -I -w %{http_code} --socks5 "${proxy}" --max-time "${timeout}" "$host" -o /dev/null)" != "000" ]; then
|
||||
nocontact=""
|
||||
[ "${last}" -ge "${retry}" ] || [ "$(uci -q get openmptcprouter.omr.ss_${server})" = "" ] && {
|
||||
_log "Shadowsocks $type ${server} is up (can contact via http ${host})"
|
||||
|
@ -127,26 +126,26 @@ while true; do
|
|||
_log "Reload Shadowsocks rules"
|
||||
/etc/init.d/shadowsocks-libev rules_up 2> /dev/null
|
||||
if ! /etc/init.d/shadowsocks-libev rules_exist ; then
|
||||
/etc/init.d/shadowsocks-libev restart 2>&1 >/dev/null
|
||||
/etc/init.d/shadowsocks-libev restart >/dev/null 2>&1
|
||||
fi
|
||||
_get_ip
|
||||
elif [ "$type" = "rust" ] && [ "$(uci -q get shadowsocks-rust.ss_rules.disabled)" != "1" ]; then
|
||||
_log "Reload Shadowsocks Rust rules"
|
||||
/etc/init.d/shadowsocks-rust rules_up 2> /dev/null
|
||||
if ! /etc/init.d/shadowsocks-rust rules_exist ; then
|
||||
/etc/init.d/shadowsocks-rust restart 2>&1 >/dev/null
|
||||
/etc/init.d/shadowsocks-rust restart >/dev/null 2>&1
|
||||
fi
|
||||
_get_ip
|
||||
fi
|
||||
fi
|
||||
[ "$(uci -q get openmptcprouter.omr.detected_public_ipv4)" = "" ] || ([ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.detected_public_ipv6)" = "" ]) && _get_ip
|
||||
[ "$(uci -q get openmptcprouter.omr.detected_public_ipv4)" = "" ] || { [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ] && [ "$(uci -q get openmptcprouter.omr.detected_public_ipv6)" = "" ]; } && _get_ip
|
||||
last=0
|
||||
OMR_TRACKER_STATUS="OK"
|
||||
else
|
||||
last=$((last + 1 ))
|
||||
[ -z "$nocontact" ] && nocontact="$host" || nocontact="$nocontact, $host"
|
||||
[ "${last}" -ge "${retry}" ] && {
|
||||
if [ "$OMR_TRACKER_PREV_STATUS" != "ERROR" ] && ([ -n "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep ssr)" ] || [ -n "$(nft list ruleset 2>/dev/null | grep ss_r)" ] || [ -n "$(nft list ruleset 2>/dev/null | grep ssr_r)" ]); then
|
||||
if [ "$OMR_TRACKER_PREV_STATUS" != "ERROR" ] && { [ -n "$($IPTABLES -w -t nat -L -n 2>/dev/null | grep ssr)" ] || [ -n "$(nft list ruleset 2>/dev/null | grep ss_r)" ] || [ -n "$(nft list ruleset 2>/dev/null | grep ssr_r)" ]; }; then
|
||||
_log "Shadowsocks $type ${server} is down (can't contact via http ${nocontact})"
|
||||
OMR_TRACKER_STATUS_MSG="Shadowsocks $type ${server} is down (can't contact via http ${nocontact})"
|
||||
uci -q set openmptcprouter.omr.ss_${server}="down"
|
||||
|
|
|
@ -5,6 +5,11 @@
|
|||
[ "$OMR_TRACKER_INTERFACE" = "omr6in4" ] && multipath "$OMR_TRACKER_DEVICE" off >/dev/null 2>&1
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$OMR_TRACKER_INTERFACE" != "omr6in4" ]; then
|
||||
if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.disabled)" = "1" ]; then
|
||||
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE"
|
||||
/etc/init.d/omr-tracker restart
|
||||
exit 0
|
||||
fi
|
||||
metric="$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)"
|
||||
if [ -z "$metric" ] || { [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -z "$(ip route show table $metric | grep $OMR_TRACKER_DEVICE)" ]; } || { [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -z "$(ip -6 route show table 6${metric} | grep $OMR_TRACKER_DEVICE)" ]; }; then
|
||||
_log "Routes not correctly set for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE table $metric) with IPs $OMR_TRACKER_DEVICE_IP $OMR_TRACKER_DEVICE_IP6"
|
||||
|
@ -12,9 +17,4 @@ if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$OMR_TR
|
|||
/etc/init.d/omr-tracker restart
|
||||
exit 0
|
||||
fi
|
||||
if [ "$(uci -q get network.$OMR_TRACKER_INTERFACE.disabled)" = "1" ]; then
|
||||
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE"
|
||||
/etc/init.d/omr-tracker restart
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
. /lib/functions/network.sh
|
||||
|
||||
default_gw=$(ip route get 1.1.1.1 | grep via | awk '{print $3}')
|
||||
default_gw6=$(ip -6 route get 2606:4700:4700::1111 | grep via | awk '{print $3}')
|
||||
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
|
||||
# An interface in error will never be used in MPTCP
|
||||
|
@ -165,6 +162,8 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || { [ "$OMR_TRACKER_INTERFACE" != "omrvp
|
|||
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ]; then
|
||||
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}')
|
||||
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
|
||||
|
|
|
@ -733,17 +733,6 @@ default_gw6=$(ip -6 route get 2606:4700:4700::1111 | grep via | awk '{print $3}'
|
|||
initcwrwnd=""
|
||||
interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]')
|
||||
|
||||
if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$OMR_TRACKER_INTERFACE" != "omrvpn" ] && [ "$OMR_TRACKER_INTERFACE" != "omr6in4" ]; then
|
||||
metric="$(uci -q get network.$OMR_TRACKER_INTERFACE.metric)"
|
||||
if [ -z "$metric" ] || { [ -n "$OMR_TRACKER_DEVICE_IP" ] && [ -z "$(ip route show table $metric | grep $OMR_TRACKER_DEVICE)" ]; } || { [ -n "$OMR_TRACKER_DEVICE_IP6" ] && [ -z "$(ip -6 route show table 6${metric} | grep $OMR_TRACKER_DEVICE)" ]; }; then
|
||||
_log "Routes not correctly set for $OMR_TRACKER_INTERFACE ($OMR_TRACKER_DEVICE table $metric) with IPs $OMR_TRACKER_DEVICE_IP $OMR_TRACKER_DEVICE_IP6"
|
||||
/etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE"
|
||||
/etc/init.d/omr-tracker restart
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ] || [ "$OMR_TRACKER_INTERFACE" = "omr6in4" ]; then
|
||||
if [ "$(uci -q get openmptcprouter.settings.shadowsocksudp)" = "1" ] && [ "$(uci -q get shadowsocks-libev.sss0.disabled)" != "1" ] && [ -n "$(uci -q get shadowsocks-libev.sss0)" ] && [ "$(uci -q get shadowsocks-libev.ss_rules.redir_udp)" = "hi1" ]; then
|
||||
_log "Tunnel up disable use of ShadowSocks for UDP"
|
||||
|
|
Loading…
Reference in a new issue