diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 18cc3ce64..ae9f2d8fb 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -311,7 +311,7 @@ temp += ''; temp += ''; } - if (mArray !== null && mArray.wans) + if (mArray !== null && (mArray.wans || mArray.tunnels)) { temp += ''; temp += ''; } diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index 20a2ed05e..89f0784ab 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -907,6 +907,10 @@ function interfaces_status() if ifname == "" or ifname == nil then ifname = section["ifname"] or "" end + --if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then + --ifname = get_device(interface:sub(5)) + --end + duplicateif = false if ifname ~= "" and ifname ~= nil then if allintf[ifname] then @@ -965,6 +969,10 @@ function interfaces_status() -- Detect WAN gateway status local gw_ping = "UP" + if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then + gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + end + if gateway == "" then gateway = get_gateway(interface) end @@ -988,7 +996,7 @@ function interfaces_status() gw_ping = "DOWN" connectivity = "ERROR" end - + local latency = "" local server_ping = "" --if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" then @@ -1068,11 +1076,21 @@ function interfaces_status() end end - local publicIP = uci:get("openmptcprouter",interface,"publicip") or "" - if ifname ~= nil and publicIP == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then - publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname)) - end + local publicIP = "" local whois = "" + if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then + publicIP = uci:get("openmptcprouter",interface:sub(5),"publicip") or "" + if ifname ~= nil and publicIP == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then + publicIP = ut.trim(sys.exec("omr-ip-intf " .. get_device(interface:sub(5)))) + end + else + publicIP = uci:get("openmptcprouter",interface,"publicip") or "" + if ifname ~= nil and publicIP == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then + publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname)) + end + end + + whois = "" if publicIP ~= "" then whois = uci:get("openmptcprouter",interface,"asn") or "" if whois == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then diff --git a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking index fd5dec947..45fe3c1dd 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -451,7 +451,7 @@ fi # Save wan settings for status page if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") + $((10 + RANDOM % 31)) - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]; then _log "Get status and settings for $OMR_TRACKER_INTERFACE..." - if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then + if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" != "1" ]; then local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)" else uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") diff --git a/openmptcprouter/files/etc/init.d/mptcpovervpn b/openmptcprouter/files/etc/init.d/mptcpovervpn index 7a7d2d5d3..b0470f35a 100755 --- a/openmptcprouter/files/etc/init.d/mptcpovervpn +++ b/openmptcprouter/files/etc/init.d/mptcpovervpn @@ -23,7 +23,8 @@ mptcp_over_vpn() { config_load_openmptcprouter config_foreach _getremoteip server localip=$(ubus call network.interface.$interface status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n") - multipath=$(uci -q get network.${interface}.multipath) + [ -z "$(uci -q get openmptcprouter.ovpn${interface}.multipath)" ] && multipath=$(uci -q get network.${interface}.multipath) + [ -n "$(uci -q get openmptcprouter.ovpn${interface}.multipath)" ] && multipath=$(uci -q get openmptcprouter.ovpn${interface}.multipath) [ -z "$multipath" ] && multipath="on" uci -q batch <<-EOF >/dev/null set network.ovpn${interface}=interface @@ -32,6 +33,7 @@ mptcp_over_vpn() { set network.ovpn${interface}.peerdns='0' set network.ovpn${interface}.proto='none' set network.ovpn${interface}.multipath='on' + set network.${interface}.multipath='off' commit network set openvpn.${interface}=openvpn set openvpn.${interface}.dev="tun${id}"