diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking similarity index 70% rename from mptcp/files/usr/share/omr/post-tracking.d/post-tracking rename to mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking index dd1772d34..f516ad535 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/001-post-tracking @@ -708,95 +708,6 @@ 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"]') - -if [ -n "$(grep RUTX /etc/board.json)" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then - if [ "$OMR_TRACKER_DEVICE" = "wwan0" ]; then - 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 - elif [ "$OMR_TRACKER_DEVICE" = "wwan1" ]; then - 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 - # An interface in error will never be used in MPTCP if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then 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 @@ -980,7 +891,7 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ "$interface_up" != "true" ]; then fi if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "omrvpn" ]; then - 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 + 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" uci -q delete shadowsocks-libev.ss_rules.redir_udp if /etc/init.d/shadowsocks-libev rules_exist ; then @@ -1002,6 +913,7 @@ if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ] || [ "$OMR_TRACKER_INTERFACE" = "om # Set VPN MTU if [ -n "$OMR_TRACKER_LATENCY" ] && [ -n "$OMR_TRACKER_INTERFACE" ] && ([ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]); then local serverip=$(uci -q get shadowsocks-libev.sss0.server) + [ -z "$serverip" ] && serverip=$(uci -q get v2ray.omrout.s_vless_address) [ -n "$serverip" ] && serverip="$(resolveip -4 -t 5 $serverip | head -n 1 | tr -d '\n')" if [ "$serverip" = "192.168.1.3" ] || [ "$serverip" = "127.0.0.1" ]; then serverip="" @@ -1304,538 +1216,3 @@ fi } } #ubus call network reload - -# Save wan settings for status page -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 - [ "$(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://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')-$(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" ] && { - _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" - /etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" 2>&1 >/dev/null - } - uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr" - } - [ -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" ] && { - 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 - } - 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://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 - [ -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 - -[ -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 -} - -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 - -if [ "$(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 - - -# If a service is down, force restart it -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 - _log "Can't find Shadowsocks, restart it..." - /etc/init.d/shadowsocks-libev restart 2>&1 >/dev/null - sleep 5 -fi -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 - _log "Can't find Glorytun, restart it..." - /etc/init.d/glorytun restart 2>&1 >/dev/null - sleep 5 -fi -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 - _log "Can't find Glorytun UDP, restart it..." - /etc/init.d/glorytun-udp restart 2>&1 >/dev/null - sleep 5 -fi - -if [ "$(pgrep -f dnsmasq)" = "" ] && [ -f /etc/init.d/dnsmasq ]; then - _log "Can't find dnsmasq, restart it..." - /etc/init.d/dnsmasq restart 2>&1 >/dev/null - sleep 5 -fi -if [ "$(pgrep -f unbound)" = "" ] && [ -f /etc/init.d/unbound ] && [ "$(uci -q get unbound.@unbound[0].enabled)" = "1" ]; then - _log "Can't find unbound, restart it..." - /etc/init.d/unbound restart 2>&1 >/dev/null - sleep 5 -fi - -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" - /etc/init.d/openvpn restart 2>&1 >/dev/null - sleep 5 - fi -fi - -if [ "$(pgrep mlvpn)" = "" ] && [ "$(uci -q get mlvpn.general.enable)" = "1" ] && [ -f /etc/init.d/mlvpn ] && [ "$(uci -q get mlvpn.general.password)" != "" ]; then - _log "Can't find MLVPN, restart it..." - /etc/init.d/mlvpn restart 2>&1 >/dev/null - sleep 5 -fi -if [ "$(pgrep dsvpn)" = "" ] && [ "$(uci -q get dsvpn.vpn.enable)" = "1" ] && [ -f /etc/init.d/dsvpn ] && [ "$(uci -q get dsvpn.vpn.key)" != "" ]; then - _log "Can't find DSVPN, restart it..." - /etc/init.d/dsvpn restart 2>&1 >/dev/null - sleep 5 -fi -if [ "$(pgrep -f v2ray)" = "" ] && [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ]; then - _log "Can't find V2Ray, restart it..." - /etc/init.d/v2ray restart 2>&1 >/dev/null - sleep 5 -fi -if [ "$(pgrep miniupnpd)" = "" ] && [ "$(uci -q get upnpd.config.enabled)" = "1" ] && [ -f /etc/init.d/miniupnpd ]; then - _log "Can't find miniupnpd, restart it..." - /etc/init.d/miniupnpd restart 2>&1 >/dev/null - sleep 5 -fi - -if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then - _log "Can't find rpcd, restart it..." - /etc/init.d/rpcd restart 2>&1 >/dev/null - sleep 5 -fi - -if [ "$(pgrep uhttpd)" = "" ] && [ -f /etc/init.d/uhttpd ]; then - _log "Can't find uhttpd, restart it..." - /etc/init.d/uhttpd restart 2>&1 >/dev/null - sleep 5 -fi - -#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..." -# /etc/init.d/modemmanager restart 2>&1 >/dev/null -# sleep 5 -#fi - -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 - _log "Can't find omr-tracker-v2ray, restart omr-tracker..." - /etc/init.d/omr-tracker restart 2>&1 >/dev/null -fi - -set_get_config() { - local server=$1 - [ -n "$server" ] && uci -q set openmptcprouter.${server}.get_config=1 -} - -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 - config_load openmptcprouter - config_foreach set_get_config server - [ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter -fi - -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 - _log "Can't find omr-tracker-ss, restart omr-tracker..." - /etc/init.d/omr-tracker restart 2>&1 >/dev/null -fi - -if [ "$(uci -q get glorytun.vpn.enable)" = "1" ] && [ "$(uci -q get glorytun.vpn.key)" = "" ]; then - config_load openmptcprouter - config_foreach set_get_config server - [ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter -fi - -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 - [ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter -fi - -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 - -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 - _log "Can't find omr-bypass rules, restart omr-bypass..." - /etc/init.d/omr-bypass 2>&1 >/dev/null - sleep 5 -fi - -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 - _log "Reinstall packages..." - uci -q set openmptcprouter.settings.sysupgrade_lc=$(date +"%s") - /etc/init.d/sysupgrade restart 2>&1 >/dev/null - sleep 10 -fi - -if [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep token_error=\'1\')" != "" ]; then - /etc/init.d/openmptcprouter-vps token >/dev/null 2>&1 & - sleep 5 -fi -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 & - sleep 5 -fi - -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 "config.${OMR_TRACKER_INTERFACE}") ]; then - if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.max_download)" != "0" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.download)" != "0" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.max_upload)" != "0" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.upload)" != "0" ]; then - _log "Restart SQM Autorate" - /etc/init.d/sqm-autorate restart >/dev/null 2>&1 - sleep 5 - fi -fi - -#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 - 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 - - - run_fw_include() { - [ -n "$1" ] && [ "$(uci -q get firewall.$1.reload)" = "0" ] && sh $(uci -q get firewall.$1.path) >/dev/null 2>&1 - } - 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 - /bin/blocklanfw >/dev/null 2>&1 - sleep 5 -fi \ No newline at end of file diff --git a/mptcp/files/usr/share/omr/post-tracking.d/010-services b/mptcp/files/usr/share/omr/post-tracking.d/010-services new file mode 100755 index 000000000..68ca65183 --- /dev/null +++ b/mptcp/files/usr/share/omr/post-tracking.d/010-services @@ -0,0 +1,184 @@ +# +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# This script check services status and do appropriate actions + +# If a service is down, force restart it +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 + _log "Can't find Shadowsocks, restart it..." + /etc/init.d/shadowsocks-libev restart 2>&1 >/dev/null + sleep 5 +fi +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 + _log "Can't find Glorytun, restart it..." + /etc/init.d/glorytun restart 2>&1 >/dev/null + sleep 5 +fi +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 + _log "Can't find Glorytun UDP, restart it..." + /etc/init.d/glorytun-udp restart 2>&1 >/dev/null + sleep 5 +fi + +if [ "$(pgrep -f dnsmasq)" = "" ] && [ -f /etc/init.d/dnsmasq ]; then + _log "Can't find dnsmasq, restart it..." + /etc/init.d/dnsmasq restart 2>&1 >/dev/null + sleep 5 +fi +if [ "$(pgrep -f unbound)" = "" ] && [ -f /etc/init.d/unbound ] && [ "$(uci -q get unbound.@unbound[0].enabled)" = "1" ]; then + _log "Can't find unbound, restart it..." + /etc/init.d/unbound restart 2>&1 >/dev/null + sleep 5 +fi + +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" + /etc/init.d/openvpn restart 2>&1 >/dev/null + sleep 5 + fi +fi + +if [ "$(pgrep mlvpn)" = "" ] && [ "$(uci -q get mlvpn.general.enable)" = "1" ] && [ -f /etc/init.d/mlvpn ] && [ "$(uci -q get mlvpn.general.password)" != "" ]; then + _log "Can't find MLVPN, restart it..." + /etc/init.d/mlvpn restart 2>&1 >/dev/null + sleep 5 +fi +if [ "$(pgrep dsvpn)" = "" ] && [ "$(uci -q get dsvpn.vpn.enable)" = "1" ] && [ -f /etc/init.d/dsvpn ] && [ "$(uci -q get dsvpn.vpn.key)" != "" ]; then + _log "Can't find DSVPN, restart it..." + /etc/init.d/dsvpn restart 2>&1 >/dev/null + sleep 5 +fi +if [ "$(pgrep -f v2ray)" = "" ] && [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ]; then + _log "Can't find V2Ray, restart it..." + /etc/init.d/v2ray restart 2>&1 >/dev/null + sleep 5 +fi +if [ "$(pgrep miniupnpd)" = "" ] && [ "$(uci -q get upnpd.config.enabled)" = "1" ] && [ -f /etc/init.d/miniupnpd ]; then + _log "Can't find miniupnpd, restart it..." + /etc/init.d/miniupnpd restart 2>&1 >/dev/null + sleep 5 +fi + +if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then + _log "Can't find rpcd, restart it..." + /etc/init.d/rpcd restart 2>&1 >/dev/null + sleep 5 +fi + +if [ "$(pgrep uhttpd)" = "" ] && [ -f /etc/init.d/uhttpd ]; then + _log "Can't find uhttpd, restart it..." + /etc/init.d/uhttpd restart 2>&1 >/dev/null + sleep 5 +fi + +#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..." +# /etc/init.d/modemmanager restart 2>&1 >/dev/null +# sleep 5 +#fi + +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 + _log "Can't find omr-tracker-v2ray, restart omr-tracker..." + /etc/init.d/omr-tracker restart 2>&1 >/dev/null +fi + +set_get_config() { + local server=$1 + [ -n "$server" ] && uci -q set openmptcprouter.${server}.get_config=1 +} + +if [ -f /etc/init.d/shadowsocks-libev ] && [ "$(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 + config_load openmptcprouter + config_foreach set_get_config server + [ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter +fi + +if [ -f /etc/init.d/shadowsocks-libev ] && [ "$(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 + _log "Can't find omr-tracker-ss, restart omr-tracker..." + /etc/init.d/omr-tracker restart 2>&1 >/dev/null +fi + +if [ "$(uci -q get glorytun.vpn.enable)" = "1" ] && [ "$(uci -q get glorytun.vpn.key)" = "" ]; then + config_load openmptcprouter + config_foreach set_get_config server + [ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter +fi + +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 + [ -n "$(uci -q changes openmptcprouter)" ] && uci -q commit openmptcprouter +fi + +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 + +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 + _log "Can't find omr-bypass rules, restart omr-bypass..." + /etc/init.d/omr-bypass 2>&1 >/dev/null + sleep 5 +fi + +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 + _log "Reinstall packages..." + uci -q set openmptcprouter.settings.sysupgrade_lc=$(date +"%s") + /etc/init.d/sysupgrade restart 2>&1 >/dev/null + sleep 10 +fi + +if [ "$(pgrep -f openmptcprouter-vps)" = "" ] && [ "$(uci -q show openmptcprouter | grep token_error=\'1\')" != "" ]; then + /etc/init.d/openmptcprouter-vps token >/dev/null 2>&1 & + sleep 5 +fi +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 & + sleep 5 +fi + +if [ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(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 "config.${OMR_TRACKER_INTERFACE}") ]; then + if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.max_download)" != "0" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.download)" != "0" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.max_upload)" != "0" ] && [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.upload)" != "0" ]; then + _log "Restart SQM Autorate" + /etc/init.d/sqm-autorate restart >/dev/null 2>&1 + sleep 5 + fi +fi + +#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 + 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 + + + run_fw_include() { + [ -n "$1" ] && [ "$(uci -q get firewall.$1.reload)" = "0" ] && sh $(uci -q get firewall.$1.path) >/dev/null 2>&1 + } + 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 + /bin/blocklanfw >/dev/null 2>&1 + sleep 5 +fi \ No newline at end of file diff --git a/mptcp/files/usr/share/omr/post-tracking.d/020-status b/mptcp/files/usr/share/omr/post-tracking.d/020-status new file mode 100755 index 000000000..131fe98df --- /dev/null +++ b/mptcp/files/usr/share/omr/post-tracking.d/020-status @@ -0,0 +1,267 @@ +# +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) 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 % 31)) - $(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://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')-$(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" ] && { + _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" + /etc/init.d/mptcp reload "$OMR_TRACKER_DEVICE" 2>&1 >/dev/null + } + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.publicip="$ipaddr" + } + [ -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" ] && { + 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 + } + 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://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 + [ -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 + diff --git a/mptcp/files/usr/share/omr/post-tracking.d/021-latencies b/mptcp/files/usr/share/omr/post-tracking.d/021-latencies new file mode 100755 index 000000000..bc9c08f5b --- /dev/null +++ b/mptcp/files/usr/share/omr/post-tracking.d/021-latencies @@ -0,0 +1,61 @@ +# +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) 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 +} + +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 + diff --git a/mptcp/files/usr/share/omr/post-tracking.d/022-speedtest b/mptcp/files/usr/share/omr/post-tracking.d/022-speedtest new file mode 100755 index 000000000..3b2f2b70e --- /dev/null +++ b/mptcp/files/usr/share/omr/post-tracking.d/022-speedtest @@ -0,0 +1,65 @@ +# +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) 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 + diff --git a/mptcp/files/usr/share/omr/post-tracking.d/050-rutx b/mptcp/files/usr/share/omr/post-tracking.d/050-rutx new file mode 100755 index 000000000..1ea024164 --- /dev/null +++ b/mptcp/files/usr/share/omr/post-tracking.d/050-rutx @@ -0,0 +1,95 @@ +# +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# This script set lights on RUTX device + +if [ -n "$(grep RUTX /etc/board.json)" ] && [ -n "$OMR_TRACKER_DEVICE" ]; then + if [ "$OMR_TRACKER_DEVICE" = "wwan0" ]; then + 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 + elif [ "$OMR_TRACKER_DEVICE" = "wwan1" ]; then + 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