diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index fa47878b5..945cb8f93 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -699,15 +699,21 @@ function interfaces_status() if mArray.openmptcprouter["dns"] == true then -- wanaddr --mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or "" - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("wget -4 -qO- -T 2 http://ip.openmptcprouter.com")) - if mArray.openmptcprouter["wan_addr"] == "" then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=2 +short o-o.myaddr.l.google.com | awk -F'\"' '{print $2}'")) - end - if mArray.openmptcprouter["ipv6"] == "enabled" then - mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or "" - if mArray.openmptcprouter["wan_addr6"] == "" then - mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("wget -6 -qO- -T 2 http://ipv6.openmptcprouter.com")) + + if uci:get("openmptcprouter","settings","external_check") ~= "0" then + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("wget -4 -qO- -T 2 http://ip.openmptcprouter.com")) + if mArray.openmptcprouter["wan_addr"] == "" then + mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=2 +short o-o.myaddr.l.google.com | awk -F'\"' '{print $2}'")) end + if mArray.openmptcprouter["ipv6"] == "enabled" then + mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or "" + if mArray.openmptcprouter["wan_addr6"] == "" then + mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("wget -6 -qO- -T 2 http://ipv6.openmptcprouter.com")) + end + end + mArray.openmptcprouter["external_check"] = true + else + mArray.openmptcprouter["external_check"] = false end -- shadowsocksaddr mArray.openmptcprouter["ss_addr"] = uci:get("openmptcprouter","omr","detected_ss_ipv4") or "" @@ -715,8 +721,10 @@ function interfaces_status() tracker_ip = uci:get("shadowsocks-libev","tracker","local_address") or "" if tracker_ip ~= "" then local tracker_port = uci:get("shadowsocks-libev","tracker","local_port") - mArray.openmptcprouter["ss_addr"] = ut.trim(sys.exec("curl -s -4 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m 2 http://ip.openmptcprouter.com")) - --mArray.openmptcprouter["ss_addr6"] = sys.exec("curl -s -6 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m 3 http://ipv6.openmptcprouter.com") + if uci:get("openmptcprouter","settings","external_check") ~= "0" then + mArray.openmptcprouter["ss_addr"] = ut.trim(sys.exec("curl -s -4 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m 2 http://ip.openmptcprouter.com")) + --mArray.openmptcprouter["ss_addr6"] = sys.exec("curl -s -6 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m 3 http://ipv6.openmptcprouter.com") + end end end end @@ -1043,13 +1051,13 @@ function interfaces_status() end local publicIP = uci:get("openmptcprouter",interface,"publicip") or "" - if ifname ~= nil and publicIP == "" then + 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 whois = "" if publicIP ~= "" then whois = uci:get("openmptcprouter",interface,"asn") or "" - if whois == "" then + if whois == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then --whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'")) whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'")) end diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 6445d89fa..02fd41f56 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -198,12 +198,14 @@ } else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") { var title = String.format("OpenMPTCProuter Server (%s)", mArray.openmptcprouter.ss_addr); + } else if (mArray.openmptcprouter.external_check == false) { + var title = String.format("OpenMPTCProuter Server ?"); } else { var title = "No output"; } content = ""; statusMessage = ""; - if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "") + if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { { statusMessage += 'No VPS IP address, No WAN IP address
'; } @@ -219,10 +221,10 @@ if (mArray.openmptcprouter.vps_status == "DOWN") { statusMessage += 'Can\'t ping server
'; - } else if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.ss_addr == "") + } else if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += 'Can\'t get public IP address from ShadowSocks
'; - } else if (mArray.openmptcprouter.wan_addr == "") + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += 'No WAN IP address detected in less than 1 second
'; } 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 51f420fe2..6d66d6679 100755 --- a/mptcp/files/usr/share/omr/post-tracking.d/post-tracking +++ b/mptcp/files/usr/share/omr/post-tracking.d/post-tracking @@ -348,7 +348,9 @@ fi # Save wan settings for status page if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($(date +"%s") - $(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc))) -gt 3600 ]; then _log "Get status and settings for $OMR_TRACKER_INTERFACE..." - local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)" + if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then + local ipaddr="$(omr-ip-intf $OMR_TRACKER_DEVICE)" + fi [ -n "$ipaddr" ] && { # Check if we can get a IPv6 address, if yes enable RA else disable local ip6addr="$(curl -s -6 -m 3 http://ipv6.openmptcprouter.com/)" @@ -371,10 +373,12 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( /etc/init.d/odhcpd enable > /dev/null 2>&1 fi fi - local asn="$(wget -4 -qO- -T 5 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')" - [ -z "$asn" ] && { - asn="$(whois $ipaddr 2>/dev/null | grep -m 1 -i 'netname' | awk '{print $2}')" - } + if [ "$(uci -q get openmptcprouter.settings.external_check)" != "0" ]; then + local asn="$(wget -4 -qO- -T 5 http://api.iptoasn.com/v1/as/ip/$ipaddr | jsonfilter -q -e '@.as_description')" + [ -z "$asn" ] && { + asn="$(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 } @@ -421,6 +425,11 @@ if [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.lc)" = "" ] || [ $(($( uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") fi } + if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "" ] && [ "$(uci -q get openmptcprouter.settings.external_check)" = "0" ]; then + if ping -c 1 $(uci -q get shadowsocks-libev.sss0.server) &> /dev/null; then + uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.lc=$(date +"%s") + 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 )) _log "Get status and settings for $OMR_TRACKER_INTERFACE... Failed"