diff --git a/luci-app-status/Makefile b/luci-app-status/Makefile old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/css/wanstatus.css b/luci-app-status/htdocs/luci-static/resources/status/css/wanstatus.css old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/status-doing.png b/luci-app-status/htdocs/luci-static/resources/status/images/status-doing.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/status-done.png b/luci-app-status/htdocs/luci-static/resources/status/images/status-done.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/status-error.png b/luci-app-status/htdocs/luci-static/resources/status/images/status-error.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/status-todo.png b/luci-app-status/htdocs/luci-static/resources/status/images/status-todo.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/status-warn.png b/luci-app-status/htdocs/luci-static/resources/status/images/status-warn.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/statusError.png b/luci-app-status/htdocs/luci-static/resources/status/images/statusError.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/statusOK.png b/luci-app-status/htdocs/luci-static/resources/status/images/statusOK.png old mode 100755 new mode 100644 diff --git a/luci-app-status/htdocs/luci-static/resources/status/images/statusWarning.png b/luci-app-status/htdocs/luci-static/resources/status/images/statusWarning.png old mode 100755 new mode 100644 diff --git a/luci-app-status/luasrc/controller/status.lua b/luci-app-status/luasrc/controller/status.lua old mode 100755 new mode 100644 diff --git a/luci-app-status/luasrc/view/status/server.htm b/luci-app-status/luasrc/view/status/server.htm old mode 100755 new mode 100644 diff --git a/luci-app-status/luasrc/view/status/wanstatus.htm b/luci-app-status/luasrc/view/status/wanstatus.htm old mode 100755 new mode 100644 index 16535a648..799b81264 --- a/luci-app-status/luasrc/view/status/wanstatus.htm +++ b/luci-app-status/luasrc/view/status/wanstatus.htm @@ -19,7 +19,7 @@ -- along with OverTheBox. If not, see (http://www.gnu.org/licenses/) -%> <% --- Copyright 2018-2020 Ycarus (Yannick Chabanois) ycarus@zugaina.org +-- Copyright 2018 Ycarus (Yannick Chabanois) ycarus@zugaina.org -- -- Small changes to make this work with OpenMPTCProuter -- New features: @@ -55,10 +55,13 @@ end local curifname = luci.http.formvalue("dev") or "all" - local bandwidthtotalurl = "admin/system/status/multipath_bandwidth" - local bandwidthintfurl = "admin/system/status/interface_bandwidth" -%> <%+header%> +<% +local ucic = luci.model.uci.cursor() +local menuentry = ucic:get("openmptcprouter","settings","menu") or "status" +local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openmptcprouter.png" +%> @@ -75,7 +78,8 @@ return false; } } - XHR.poll(20, '/cgi-bin/luci/admin/system/status/interfaces_status', null, + function formatBytes(a,b=2){if(0===a)return"0 Bytes";const c=0>b?0:b,d=Math.floor(Math.log(a)/Math.log(1024));return parseFloat((a/Math.pow(1024,d)).toFixed(c))+" "+["Bytes","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"][d]} + XHR.poll(20, '<%=build_url("admin/system/" .. menuentry:lower() .. "/interfaces_status")%>', null, function(x, mArray) { var status = document.getElementById('openmptcprouter_status'); @@ -99,12 +103,12 @@ { if (mArray.openmptcprouter.remote_from_lease == false) { - var title = String.format("%s (%s)",'You', mArray.openmptcprouter.remote_addr); + var title = String.format("%s (%s)",'<%:You%>', mArray.openmptcprouter.remote_addr); var statusMessageClass = "warning"; var statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; - var statusMessage = _('Your IP was not leased by this router'); + var statusMessage = '<%:Your IP was not leased by this router%>'; } else { - var title = String.format('
%s (%s)', mArray.openmptcprouter.remote_hostname ? mArray.openmptcprouter.remote_hostname : _('You'), mArray.openmptcprouter.remote_addr) + var title = String.format('
%s (%s)', mArray.openmptcprouter.remote_hostname ? mArray.openmptcprouter.remote_hostname : _('<%:You%>'), mArray.openmptcprouter.remote_addr) var statusMessageClass = ""; var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png"; var statusMessage = ""; @@ -130,7 +134,7 @@ } } temp += ''; - var equipmentIcon = ''; + var equipmentIcon = ''; var title = String.format("%s (%s)", mArray.openmptcprouter.hostname, mArray.openmptcprouter.local_addr); var statusMessageClass = ""; var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png"; @@ -143,24 +147,24 @@ content += "Version " + mArray.openmptcprouter.version; if (mArray.openmptcprouter.latest_version_omr != mArray.openmptcprouter.version && mArray.openmptcprouter.latest_version_omr != "") { - content += "
(" + _('Latest available version') + " " + mArray.openmptcprouter.latest_version_omr + ")"; + content += "
(" + '<%:Latest available version%>' + " " + mArray.openmptcprouter.latest_version_omr + ")"; } content += "
"; } if (mArray.openmptcprouter.loadavg) { - content += _('Load:') + " " + mArray.openmptcprouter.loadavg; + content += '<%:Load:%>' + " " + mArray.openmptcprouter.loadavg; content += "
"; } if (mArray.openmptcprouter.core_temp) { - content += _('Core temp:') + " " + (mArray.openmptcprouter.core_temp / 1000).toFixed(1) + " °"; + content += '<%:Core temp:%>' + " " + (mArray.openmptcprouter.core_temp / 1000).toFixed(1) + " °"; content += "
"; } if (mArray.openmptcprouter.uptime) { var date = new Date(null); - content += _('Uptime:') + " " + String.format('%t', mArray.openmptcprouter.uptime); + content += '<%:Uptime:%>' + " " + String.format('%t', mArray.openmptcprouter.uptime); content += "
"; } if (mArray.openmptcprouter.dhcpd) @@ -168,38 +172,46 @@ for ( dhcpd in mArray.openmptcprouter.dhcpd ) { var dhcp = mArray.openmptcprouter.dhcpd[dhcpd]; - content += String.format('%s %s %s
', dhcp.interface, _('address:') ,dhcp.router); - content += String.format('%s %s %s - %s
', dhcp.interface, _('range:'), dhcp.range_start, dhcp.range_end); + content += String.format('%s %s %s
', dhcp.interface, '<%:address:%>' ,dhcp.router); + content += String.format('%s %s %s - %s
', dhcp.interface, '<%:range:%>', dhcp.range_start, dhcp.range_end); } } - if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.service_addr != "") + if (mArray.openmptcprouter.shadowsocks_enabled == true && mArray.openmptcprouter.service_addr != "") { - if (mArray.openmptcprouter.socks_service == false) + if (mArray.openmptcprouter.shadowsocks_service == false) { - statusMessage += _('ShadowSocks is not running'); - if (mArray.openmptcprouter.socks_service_key == false && mArray.openmptcprouter.socks_service_method !== "none") + statusMessage += '<%:ShadowSocks is not running%>'; + if (mArray.openmptcprouter.shadowsocks_service_key == false && mArray.openmptcprouter.shadowsocks_service_method !== "none") { - statusMessage += ' (' + _('empty key') + ')'; + statusMessage += ' (' + '<%:empty key%>' + ')'; } statusMessage += '
'; } } + if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.service_addr != "") + { + if (mArray.openmptcprouter.v2ray_service == false) + { + statusMessage += '<%:V2Ray is not running%>'; + statusMessage += '
'; + } + } if (mArray.openmptcprouter.fsro == true) { - statusMessage += _('Filesystem is readonly') + '
'; + statusMessage += '<%:Filesystem is readonly%>' + '
'; } if (mArray.openmptcprouter.multi_vpn == true) { - statusMessage += _('More than one default VPN is enabled') + '
'; + statusMessage += '<%:More than one default VPN is enabled%>' + '
'; } if (mArray.openmptcprouter.tun_service == false && mArray.openmptcprouter.service_addr != "") { - statusMessage += _('VPN is not running') + '
'; + statusMessage += '<%:VPN is not running%>' + '
'; } if (mArray.openmptcprouter.dns == false) { - statusMessage += _('DNS issue: can\'t resolve hostname') + '
'; + statusMessage += '<%:DNS issue: can\'t resolve hostname%>' + '
'; } if(statusMessage !== "") @@ -208,22 +220,22 @@ statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png"; } else if (mArray.openmptcprouter.service_addr != "") { - if (mArray.openmptcprouter.socks_service_enabled == false) + if (mArray.openmptcprouter.v2ray_enabled == false && mArray.openmptcprouter.shadowsocks_enabled == false) { - statusMessage += _('ShadowSocks is DISABLED') + '
'; + statusMessage += '<%:Proxy is DISABLED%>' + '
'; } if (mArray.openmptcprouter.tun_state == "DOWN") { - statusMessage += _('VPN tunnel DOWN') + '
'; + statusMessage += '<%:VPN tunnel DOWN%>' + '
'; } if (mArray.openmptcprouter.ipv6 == "enabled") { if (mArray.openmptcprouter.tun6_state == "DOWN") { - statusMessage += _('VPN IPv6 tunnel DOWN') + '
'; + statusMessage += '<%:IPv6 tunnel DOWN%>' + '
'; } else if (mArray.openmptcprouter.wan_addr6 == '') { - statusMessage += _('No IPv6 access') + '
'; + statusMessage += '<%:No IPv6 access%>' + '
'; } } if (statusMessage !== "") @@ -237,38 +249,49 @@ temp += ''; temp += '
'; temp += ''; - temp += '
'; + temp += ''; var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png"; var equipmentIcon = ''; content = ""; statusMessage = ""; - if (mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr && mArray.openmptcprouter.wan_addr != "") + if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); + } else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip6) && mArray.openmptcprouter.wan_addr6 != "") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); + } else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr); statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; + } else if (mArray.openmptcprouter.wan_addr6 != "") + { + var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr6); + statusMessageClass = "warning"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr); } else if (mArray.openmptcprouter.external_check == false) { var title = String.format("%s ?", mArray.openmptcprouter.vps_hostname); } else { - var title = _('No output'); - statusMessage += _('No output') + '
'; + var title = '<%:No output%>'; + statusMessage += '<%:No output%>' + '
'; } - if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { - statusMessage += _('No VPS IP address, No WAN IP address') + '
'; + statusMessage += '<%:No server IP address, No WAN IP address%>' + '
'; } - if (mArray.openmptcprouter.service_addr !== "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN") + if (mArray.openmptcprouter.service_addr !== "" && (mArray.openmptcprouter.wan_addr !== "" || mArray.openmptcprouter.wan_addr6 !== "") && mArray.openmptcprouter.vps_status == "DOWN") { - statusMessage += _('Can\'t access and use server part') + '
'; + statusMessage += '<%:Can\'t access and use server part%>' + '
'; } if (statusMessage !== "") { @@ -277,21 +300,24 @@ } if (mArray.openmptcprouter.service_addr == "") { - statusMessage += _('No server defined') + '
'; + statusMessage += '<%:No server defined%>' + '
'; } else { if (mArray.openmptcprouter.vps_status == "DOWN") { - statusMessage += _('Can\'t ping server') + '
'; - } else if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + statusMessage += '<%:Can\'t ping server%>' + '
'; + } else if (mArray.openmptcprouter.shadowsocks_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 == "" && mArray.openmptcprouter.external_check == true) + statusMessage += '<%:Can\'t get public IP address from ShadowSocks%>' + '
'; + } else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) { - statusMessage += _('No WAN IP address detected in less than 1 second') + '
'; + statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '
'; + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.external_check == true) + { + statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
'; } if (mArray.openmptcprouter.vps_admin == false) { - statusMessage += _('Can\'t contact Server Admin Script'); + statusMessage += '<%:Can\'t contact Server Admin Script%>'; if (mArray.openmptcprouter.vps_admin_error_msg !== "") { statusMessage += ' (' + mArray.openmptcprouter.vps_admin_error_msg + ')'; @@ -300,11 +326,11 @@ } if (mArray.openmptcprouter.vps_mptcp == "0") { - statusMessage += _('MPTCP is not enabled on the server') + '
'; + statusMessage += '<%:MPTCP is not enabled on the server%>' + '
'; } if (mArray.openmptcprouter.vps_time_accurate == false) { - statusMessage += _('Big time difference between the server and the router') + '
'; + statusMessage += '<%:Big time difference between the server and the router%>' + '
'; } } if (statusMessage !== "" && statusMessageClass !== "error") @@ -314,37 +340,52 @@ } if (mArray.openmptcprouter.vps_omr_version) { - content += _('Version') + " " + mArray.openmptcprouter.vps_omr_version; + content += '<%:Version%>' + " " + mArray.openmptcprouter.vps_omr_version; if (mArray.openmptcprouter.vps_kernel) { content += " " + mArray.openmptcprouter.vps_kernel; } if (mArray.openmptcprouter.latest_version_vps !== mArray.openmptcprouter.vps_omr_version && mArray.openmptcprouter.latest_version_vps !== "") { - content += "
(" + _('Latest available version') + " " + mArray.openmptcprouter.latest_version_vps + ")"; + content += "
(" + '<%:Latest available version%>' + " " + mArray.openmptcprouter.latest_version_vps + ")"; } content += "
"; } if (mArray.openmptcprouter.vps_loadavg) { - content += _('Load:') + " " + mArray.openmptcprouter.vps_loadavg; + content += '<%:Load:%>' + " " + mArray.openmptcprouter.vps_loadavg; content += "
"; } if (mArray.openmptcprouter.vps_uptime) { var date = new Date(null); - content += _('Uptime:') + " " + String.format('%t', mArray.openmptcprouter.vps_uptime); + content += '<%:Uptime:%>' + " " + String.format('%t', mArray.openmptcprouter.vps_uptime); content += "
"; } if (mArray.openmptcprouter.server_mptcp == "disabled") { - statusMessage += _('MPTCP may not be enabled on the server') + '
'; + statusMessage += '<%:MPTCP may not be enabled on the server%>' + '
'; statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } if (mArray.openmptcprouter.wan_addr6) { - content += _('IPv6:') + " " + mArray.openmptcprouter.wan_addr6; + content += '<%:IPv6:%>' + " " + mArray.openmptcprouter.wan_addr6; + content += '
'; + } + if (mArray.openmptcprouter.proxy_traffic && mArray.openmptcprouter.proxy_traffic != 0) + { + content += '<%:Proxy traffic:%>' + " " + formatBytes(mArray.openmptcprouter.proxy_traffic); + content += '
'; + } + if (mArray.openmptcprouter.vpn_traffic && mArray.openmptcprouter.vpn_traffic != 0) + { + content += '<%:VPN traffic:%>' + " " + formatBytes(mArray.openmptcprouter.vpn_traffic); + content += '
'; + } + if (mArray.openmptcprouter.total_traffic && mArray.openmptcprouter.total_traffic != 0) + { + content += '<%:Total traffic:%>' + " " + formatBytes(mArray.openmptcprouter.total_traffic); content += '
'; } content += '
'; @@ -388,23 +429,37 @@ statusMessage = ""; } // Populate info - var wanip = mArray.wans[i].wanip; + var wanip = mArray.wans[i].wanip; if (anonymize == "true" && testPrivateIP(wanip) == false) { wanip=replaceLastNChars(wanip,"x",6); } - var ipaddr = mArray.wans[i].ipaddr; + var wanip6 = mArray.wans[i].wanip6; + if (anonymize == "true") + { + wanip6=replaceLastNChars(wanip6,"x",6); + } + var ipaddr = mArray.wans[i].ipaddr; if (anonymize == "true" && testPrivateIP(ipaddr) == false) { ipaddr=replaceLastNChars(ipaddr,"x",6); } - var whois = mArray.wans[i].whois; - var signal = mArray.wans[i].signal; + var ip6addr = mArray.wans[i].ip6addr; + if (anonymize == "true") + { + ip6addr=replaceLastNChars(ip6addr,"x",6); + } + var ifname = mArray.wans[i].ifname; + var iftype = mArray.wans[i].iftype; + var whois = mArray.wans[i].whois; + var whois6 = mArray.wans[i].whois6; + var signal = mArray.wans[i].signal; var multipath = mArray.wans[i].multipath; if(multipath == 'master') { master++; } + var zonewan = mArray.wans[i].zonewan; var latency = mArray.wans[i].latency; var mtu = mArray.wans[i].mtu; var operator = mArray.wans[i].operator; @@ -416,12 +471,20 @@ { gateway=replaceLastNChars(gateway,"x",6); } + var gateway6 = mArray.wans[i].gateway6; + if (anonymize == "true" && testPrivateIP(gateway6) == false) + { + gateway6=replaceLastNChars(gateway6,"x",10); + } var gw_ping = mArray.wans[i].gw_ping; + var gw_ping6 = mArray.wans[i].gw_ping6; var server_ping = mArray.wans[i].server_ping; + var server_http = mArray.wans[i].server_http; var ipv6_discover = mArray.wans[i].ipv6_discover; var multipath_available = mArray.wans[i].multipath_available; var multipath_state = mArray.wans[i].multipath_state; var duplicateif = mArray.wans[i].duplicateif; + var duplicatemac = mArray.wans[i].duplicatemac; // Generate template if(mArray.openmptcprouter.remote_from_lease == true && mArray.wans.length == 1) { @@ -434,41 +497,60 @@ if (mArray.wans[i].gateway !== "") { var title = mArray.wans[i].label + " (" + gateway + ")"; + } else if (mArray.wans[i].gateway6 !== "") + { + var title = mArray.wans[i].label + " (" + gateway6 + ")"; } else { var title = mArray.wans[i].label; } var content = ""; if(ipaddr !== '') { - content += String.format('%s %s
',_('ip address:'), ipaddr); + content += String.format('%s %s
','<%:ip address:%>', ipaddr); + } + if(ip6addr !== '' && gateway6 !== '') + { + content += String.format('%s %s
','<%:ipv6 address:%>', ip6addr); } if(wanip !== '') { - content += String.format('%s %s
',_('wan address:'), wanip); + content += String.format('%s %s
','<%:wan address:%>', wanip); + } + if(wanip6 !== '') + { + content += String.format('%s %s
','<%:wan ipv6 address:%>', wanip6); + } + if(ifname !== '' && ifname !== mArray.wans[i].label) + { + content += String.format('%s %s
','<%:interface:%>', ifname); } if(whois !== '') { - content += String.format('%s %s
',_('whois:'), whois); + content += String.format('%s %s
','<%:whois:%>', whois); + } + if(whois6 !== '' && whois6 != whois) + { + content += String.format('%s %s
','<%:whois:%>', whois6); } if(latency !== '') { - content += String.format('%s %s ms
',_('latency:'), latency); + content += String.format('%s %s ms
','<%:latency:%>', latency); } if(mtu !== '') { - content += String.format('%s %s
',_('mtu:'), mtu); + content += String.format('%s %s
','<%:mtu:%>', mtu); } if (operator !== '') { - content += String.format('%s %s
',_('operator:'), operator); + content += String.format('%s %s
','<%:operator:%>', operator); } if (phonenumber !== '' && anonymize !== 'true') { - content += String.format('%s %s
',_('phone number:'), phonenumber); + content += String.format('%s %s
','<%:phone number:%>', phonenumber); } if (donglestate !== '') { - content += String.format('%s %s
',_('state:'), donglestate); + content += String.format('%s %s
','<%:state:%>', donglestate); } if(signal !== '') @@ -488,66 +570,104 @@ { title += String.format(' %s',networktype); } - if(ipaddr == '') + if(ipaddr == '' && ip6addr == '') { - statusMessage += _('No IP defined') + '
'; + statusMessage += '<%:No IP defined%>' + '
'; } - if(gateway == '') + if(gateway == '' && gateway6 == '') { - statusMessage += _('No gateway defined') + '
'; - } else if(gw_ping == 'DOWN') + statusMessage += '<%:No gateway defined%>' + '
'; + } else if(gateway != '' && gw_ping == 'DOWN') { - statusMessage += _('Gateway DOWN') + '
'; + statusMessage += '<%:Gateway DOWN%>' + '
'; + } else if(gateway6 != '' && gw_ping6 == 'DOWN') + { + statusMessage += '<%:Gateway IPv6 DOWN%>' + '
'; } else if(multipath_available == 'ERROR') { - statusMessage += _('Multipath seems to be blocked on the connection') + '
'; + statusMessage += '<%:Multipath seems to be blocked on the connection%>' + '
'; } if(server_ping == 'DOWN' && mArray.openmptcprouter.service_addr !== "") { - statusMessage += _('No Server ping response after 1 second') + '
'; + statusMessage += '<%:No Server ping response after 1 second%>' + '
'; + } + if(server_http == 'DOWN' && mArray.openmptcprouter.service_addr !== "") + { + statusMessage += '<%:No Server http response after 1 second%>' + '
'; } if (stat == 'Offline' && ipaddr != '' && ipaddr == mArray.wans[i].gateway) { - statusMessage += _('Wan IP and gateway are identical') + '
'; + statusMessage += '<%:Wan IP and gateway are identical%>' + '
'; + statusMessageClass = "error"; + } + if (stat == 'Offline' && ip6addr != '' && ip6addr == mArray.wans[i].gateway6) + { + statusMessage += '<%:Wan IP and gateway are identical%>' + '
'; statusMessageClass = "error"; } if(multipath == 'master') { if (master > 1) { - statusMessage += _('Multipath master already defined') + '
'; + statusMessage += '<%:Multipath master already defined%>' + '
'; statusMessageClass = "error"; } if(multipath_state !== 'on' && multipath_state !== '') { - statusMessage += _('Multipath current state is ') + multipath_state + '
'; + statusMessage += '<%:Multipath current state is %>' + multipath_state + '
'; statusMessageClass = "error"; } } else { if(multipath !== multipath_state && multipath_state !== '') { - statusMessage += _('Multipath current state is ') + multipath_state + '
'; + statusMessage += '<%:Multipath current state is %>' + multipath_state + '
'; statusMessageClass = "error"; } } if(duplicateif) { - statusMessage += _('Network interface duplicated') + '
'; + statusMessage += '<%:Network interface duplicated%>' + '
'; + statusMessageClass = "error"; + } + if(iftype == "bridge") + { + statusMessage += '<%:Bridge can't have multipath enabled%>' + '
'; + statusMessageClass = "error"; + } + if(duplicatemac) + { + statusMessage += '<%:Network interface MAC address duplicated%>' + '
'; + statusMessageClass = "error"; + } + if(zonewan == "NO") + { + statusMessage += '<%:Network interface not in WAN firewall zone%>' + '
'; statusMessageClass = "error"; } if(ipv6_discover == 'DETECTED') { - statusMessage += _('IPv6 route received') + '
' + statusMessage += '<%:IPv6 route received%>' + '
' } - content += String.format('multipath: %s
',multipath); + if (statusMessage !== "" && statusMessageClass !== "error") + { + statusMessageClass = "warning"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; + } + content += String.format('<%:multipath:%> %s
',multipath); if(mArray.wans[i].qos && mArray.wans[i].download > 0 && mArray.wans[i].upload > 0) { - content += String.format('%s %s/%s kbps (%s)',_('traffic control:'), mArray.wans[i].download, mArray.wans[i].upload, mArray.wans[i].qos) + content += String.format('%s %s/%s kbps (%s)','<%:traffic control:%>', mArray.wans[i].download, mArray.wans[i].upload, mArray.wans[i].qos) } temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content); temp += '
'; } + if (mArray.wans.length == 0) + { + temp += '
  • '; + temp += '<%:No WAN with multipath enabled:%>'; + temp += '
  • '; + } for( var i = 0; i < mArray.tunnels.length; i++ ) { // Get link color @@ -626,79 +746,79 @@ var content = ""; if(ipaddr !== '') { - content += String.format('%s %s
    ',_('ip address:'), ipaddr); + content += String.format('%s %s
    ','<%:ip address:%>', ipaddr); } if(wanip !== '') { - content += String.format('%s %s
    ',_('wan address:'), wanip); + content += String.format('%s %s
    ','<%:wan address:%>', wanip); } if(whois !== '') { - content += String.format('%s %s
    ',_('whois:'), whois); + content += String.format('%s %s
    ','<%:whois:%>', whois); } if(latency !== '') { - content += String.format('%s %s ms
    ',_('latency:'), latency); + content += String.format('%s %s ms
    ','<%:latency:%>', latency); } if(mtu !== '') { - content += String.format('%s %s
    ',_('mtu:'), mtu); + content += String.format('%s %s
    ','<%:mtu:%>', mtu); } if(ipaddr == '') { - statusMessage += _('No IP defined') + '
    ' + statusMessage += '<%:No IP defined%>' + '
    ' } if(gateway == '') { - statusMessage += _('No gateway defined') + '
    ' + statusMessage += '<%:No gateway defined%>' + '
    ' } else if(gw_ping == 'DOWN') { - statusMessage += _('Gateway DOWN') + '
    ' + statusMessage += '<%:Gateway DOWN%>' + '
    ' } else if(multipath_available == 'ERROR') { - statusMessage += _('Multipath seems to be blocked on the connection') + '
    ' + statusMessage += '<%:Multipath seems to be blocked on the connection%>' + '
    ' } if(server_ping == 'DOWN') { - statusMessage += _('No Server ping response after 1 second') + '
    ' + statusMessage += '<%:No Server ping response after 1 second%>' + '
    ' } if (stat == 'Offline' && ipaddr != '' && ipaddr == mArray.tunnels[i].gateway) { - statusMessage += _('Wan IP and gateway are identical') + '
    '; + statusMessage += '<%:Wan IP and gateway are identical%>' + '
    '; statusMessageClass = "error"; } if(multipath == 'master') { if (master > 1) { - statusMessage += _('Multipath master already defined') + '
    '; + statusMessage += '<%:Multipath master already defined%>' + '
    '; statusMessageClass = "error"; } if(multipath_state !== 'on' && multipath_state !== '') { - statusMessage += _('Multipath current state is ') + multipath_state + '
    '; + statusMessage += '<%:Multipath current state is %>' + multipath_state + '
    '; statusMessageClass = "error"; } } else { if(multipath !== multipath_state && multipath_state !== '') { - statusMessage += _('Multipath current state is ') + multipath_state + '
    '; + statusMessage += '<%:Multipath current state is %>' + multipath_state + '
    '; statusMessageClass = "error"; } } if(duplicateif) { - statusMessage += _('Network interface duplicated') + '
    '; + statusMessage += '<%:Network interface duplicated%>' + '
    '; statusMessageClass = "error"; } if(ipv6_discover == 'DETECTED') { - statusMessage += _('IPv6 route received') + '
    ' + statusMessage += '<%:IPv6 route received%>' + '
    ' } - content += String.format('multipath: %s
    ',multipath); + content += String.format('<%:multipath:%> %s
    ',multipath); if(mArray.tunnels[i].qos && mArray.tunnels[i].download > 0 && mArray.tunnels[i].upload > 0) { - content += String.format('%s %s/%s kbps (%s)',_('traffic control:'), mArray.tunnels[i].download, mArray.tunnels[i].upload, mArray.tunnels[i].qos) + content += String.format('%s %s/%s kbps (%s)','<%:traffic control:%>', mArray.tunnels[i].download, mArray.tunnels[i].upload, mArray.tunnels[i].qos) } temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content); @@ -708,7 +828,7 @@ temp += ''; } if (mArray === null) { - temp += _('No data'); + temp += '<%:No data%>'; } temp += ''; // Close tree @@ -791,23 +911,21 @@