mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Merge branch 'test' into develop
This commit is contained in:
commit
c782a5d552
35 changed files with 2070 additions and 438 deletions
|
@ -71,7 +71,7 @@ ul {
|
|||
-moz-transition: all 0.5s;
|
||||
}
|
||||
.tree ul ul {
|
||||
padding-left: 85px;
|
||||
padding-left: 5px;
|
||||
position: relative;
|
||||
}
|
||||
.tree > ul > li:first-child {
|
||||
|
@ -152,7 +152,7 @@ right connector from last child*/
|
|||
top: 50%;
|
||||
left: 0;
|
||||
border-top: 2px solid black;
|
||||
width: 85px;
|
||||
width: 7px;
|
||||
height: 100%;
|
||||
}
|
||||
.tree li a {
|
||||
|
@ -222,7 +222,7 @@ right connector from last child*/
|
|||
width: 2px;
|
||||
/*height: 50%;*/
|
||||
height: 55px;
|
||||
left: 200px;
|
||||
left: 240px;
|
||||
/* z-index: -10;*/
|
||||
}
|
||||
/*Time for some hover effects*/
|
||||
|
@ -243,9 +243,9 @@ Thanks :)*/
|
|||
.network-node {
|
||||
position: relative;
|
||||
background-color: #f3f3f3;
|
||||
padding: 12px;
|
||||
width: 400px;
|
||||
max-width: 400px;
|
||||
padding: 8px;
|
||||
width: 480px;
|
||||
max-width: 480px;
|
||||
box-sizing: border-box;
|
||||
min-height: 170px;
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ Thanks :)*/
|
|||
.network-node .info {
|
||||
position: relative;
|
||||
float: right;
|
||||
width: 250px;
|
||||
width: 330px;
|
||||
text-align: left;
|
||||
font-size: 12px;
|
||||
color: #757575;
|
||||
|
@ -319,7 +319,7 @@ Thanks :)*/
|
|||
width:5px;
|
||||
border-right:2px dotted black;
|
||||
height:70px;
|
||||
padding-right: 195px;
|
||||
padding-right: 240px;
|
||||
}
|
||||
#omr {
|
||||
min-height: 190px;
|
||||
|
|
|
@ -223,8 +223,10 @@ function wizard_add()
|
|||
local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or ""
|
||||
local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or ""
|
||||
local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or ""
|
||||
local ip6addr = luci.http.formvalue("cbid.network.%s.ip6addr" % intf) or ""
|
||||
local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or ""
|
||||
local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or ""
|
||||
local ip6gw = luci.http.formvalue("cbid.network.%s.ip6gw" % intf) or ""
|
||||
local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or ""
|
||||
local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or ""
|
||||
local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or ""
|
||||
|
@ -281,6 +283,13 @@ function wizard_add()
|
|||
ucic:set("network",intf,"netmask","")
|
||||
ucic:set("network",intf,"gateway","")
|
||||
end
|
||||
if ip6addr ~= "" then
|
||||
ucic:set("network",intf,"ip6addr",ip6addr)
|
||||
ucic:set("network",intf,"ip6gw",ip6gw)
|
||||
else
|
||||
ucic:set("network",intf,"ip6addr","")
|
||||
ucic:set("network",intf,"ip6gw","")
|
||||
end
|
||||
|
||||
ucic:delete("openmptcprouter",intf,"lc")
|
||||
ucic:save("openmptcprouter")
|
||||
|
@ -416,7 +425,8 @@ function wizard_add()
|
|||
local disablednb = 0
|
||||
local servers = luci.http.formvaluetable("server")
|
||||
for server, _ in pairs(servers) do
|
||||
local server_ip = luci.http.formvalue("%s.server_ip" % server) or ""
|
||||
local server_ip = {}
|
||||
server_ip[1] = luci.http.formvalue("%s.server_ip" % server) or ""
|
||||
local master = luci.http.formvalue("master") or ""
|
||||
|
||||
-- OpenMPTCProuter VPS
|
||||
|
@ -437,14 +447,14 @@ function wizard_add()
|
|||
if openmptcprouter_vps_disabled == "1" then
|
||||
disablednb = disablednb + 1
|
||||
end
|
||||
if server_ip ~= "" then
|
||||
if server_ip[1] ~= "" then
|
||||
serversnb = serversnb + 1
|
||||
end
|
||||
ucic:set("openmptcprouter",server,"server")
|
||||
ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username)
|
||||
ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key)
|
||||
ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled)
|
||||
ucic:set("openmptcprouter",server,"ip",server_ip)
|
||||
ucic:set_list("openmptcprouter",server,"ip",server_ip)
|
||||
ucic:set("openmptcprouter",server,"port","65500")
|
||||
ucic:save("openmptcprouter")
|
||||
end
|
||||
|
|
|
@ -231,14 +231,25 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
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);
|
||||
|
@ -248,11 +259,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
var title = '<%:No output%>';
|
||||
statusMessage += '<%:No output%>' + '<br/>';
|
||||
}
|
||||
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 server IP address, No WAN IP address%>' + '<br/>';
|
||||
}
|
||||
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%>' + '<br/>';
|
||||
}
|
||||
|
@ -274,7 +285,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
} else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true)
|
||||
{
|
||||
statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '<br/>';
|
||||
} else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true)
|
||||
} 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%>' + '<br/>';
|
||||
}
|
||||
|
@ -392,18 +403,21 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
statusMessage = "";
|
||||
}
|
||||
// Populate info
|
||||
var wanip = mArray.wans[i].wanip;
|
||||
var wanip = mArray.wans[i].wanip;
|
||||
var wanip6 = mArray.wans[i].wanip6;
|
||||
if (anonymize == "true" && testPrivateIP(wanip) == false)
|
||||
{
|
||||
wanip=replaceLastNChars(wanip,"x",6);
|
||||
}
|
||||
var ipaddr = mArray.wans[i].ipaddr;
|
||||
var ipaddr = mArray.wans[i].ipaddr;
|
||||
var ip6addr = mArray.wans[i].ip6addr;
|
||||
if (anonymize == "true" && testPrivateIP(ipaddr) == false)
|
||||
{
|
||||
ipaddr=replaceLastNChars(ipaddr,"x",6);
|
||||
}
|
||||
var whois = mArray.wans[i].whois;
|
||||
var signal = mArray.wans[i].signal;
|
||||
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')
|
||||
{
|
||||
|
@ -420,7 +434,13 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
{
|
||||
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 ipv6_discover = mArray.wans[i].ipv6_discover;
|
||||
var multipath_available = mArray.wans[i].multipath_available;
|
||||
|
@ -438,6 +458,9 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
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;
|
||||
}
|
||||
|
@ -446,14 +469,26 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
{
|
||||
content += String.format('%s <strong>%s</strong><br />','<%:ip address:%>', ipaddr);
|
||||
}
|
||||
if(ip6addr !== '')
|
||||
{
|
||||
content += String.format('%s <strong>%s</strong><br />','<%:ipv6 address:%>', ip6addr);
|
||||
}
|
||||
if(wanip !== '')
|
||||
{
|
||||
content += String.format('%s <strong>%s</strong><br />','<%:wan address:%>', wanip);
|
||||
}
|
||||
if(wanip6 !== '' && gateway6 != '')
|
||||
{
|
||||
content += String.format('%s <strong>%s</strong><br />','<%:wan ipv6 address:%>', wanip6);
|
||||
}
|
||||
if(whois !== '')
|
||||
{
|
||||
content += String.format('%s %s<br />','<%:whois:%>', whois);
|
||||
}
|
||||
if(whois6 !== '')
|
||||
{
|
||||
content += String.format('%s %s<br />','<%:whois:%>', whois6);
|
||||
}
|
||||
if(latency !== '')
|
||||
{
|
||||
content += String.format('%s %s ms<br />','<%:latency:%>', latency);
|
||||
|
@ -492,14 +527,17 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
{
|
||||
title += String.format(' <i>%s</i>',networktype);
|
||||
}
|
||||
if(ipaddr == '')
|
||||
if(ipaddr == '' && ip6addr == '')
|
||||
{
|
||||
statusMessage += '<%:No IP defined%>' + '<br />';
|
||||
}
|
||||
if(gateway == '')
|
||||
if(gateway == '' && gateway6 == '')
|
||||
{
|
||||
statusMessage += '<%:No gateway defined%>' + '<br />';
|
||||
} else if(gw_ping == 'DOWN')
|
||||
{
|
||||
statusMessage += '<%:Gateway DOWN%>' + '<br />';
|
||||
} else if(gw_ping6 == 'DOWN')
|
||||
{
|
||||
statusMessage += '<%:Gateway DOWN%>' + '<br />';
|
||||
} else if(multipath_available == 'ERROR')
|
||||
|
@ -515,6 +553,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
statusMessage += '<%:Wan IP and gateway are identical%>' + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
if (stat == 'Offline' && ip6addr != '' && ipaddr == mArray.wans[i].gateway6)
|
||||
{
|
||||
statusMessage += '<%:Wan IP and gateway are identical%>' + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
if(multipath == 'master')
|
||||
{
|
||||
if (master > 1)
|
||||
|
@ -557,6 +600,12 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm
|
|||
|
||||
temp += '</a></li>';
|
||||
}
|
||||
if (mArray.wans.length == 0)
|
||||
{
|
||||
temp += '<li>';
|
||||
temp += '<%:No WAN with multipath enabled:%>';
|
||||
temp += '</li>';
|
||||
}
|
||||
for( var i = 0; i < mArray.tunnels.length; i++ )
|
||||
{
|
||||
// Get link color
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
<div class="cbi-value">
|
||||
<label class="cbi-value-title" for="server_ip"><%:Server IP%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input name="<%=servername%>.server_ip" id="<%=servername%>.server_ip" placeholder="<%:Server IP%>" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"ip")%>" data-optional="false">
|
||||
<input name="<%=servername%>.server_ip" id="<%=servername%>.server_ip" placeholder="<%:Server IP%>" class="cbi-input-text" value="<%=uci:get_list("openmptcprouter",servername,"ip")[1]%>" data-optional="false">
|
||||
<div class="cbi-value-description">
|
||||
<%:Server IP will be set for proxy and VPN%>
|
||||
</div>
|
||||
|
@ -147,7 +147,7 @@
|
|||
<div class="cbi-value">
|
||||
<label class="cbi-value-title"><%:Enable IPv6%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input class="cbi-input-checkbox" type="checkbox" name="enableipv6" value="0" <% if uci:get("openmptcprouter","settings","disable_ipv6") == "0" then %>checked<% end %> />
|
||||
<input class="cbi-input-checkbox" type="checkbox" id="enableipv6" name="enableipv6" value="0" <% if uci:get("openmptcprouter","settings","disable_ipv6") == "0" then %>checked<% end %> />
|
||||
<br />
|
||||
<div class="cbi-value-description">
|
||||
<%:You should disable IPv6 here if server doesn't provide IPv6.%>
|
||||
|
@ -511,6 +511,7 @@
|
|||
<select class="cbi-input-select" data-update="change" id="cbid.network.<%=ifname%>.proto" name="cbid.network.<%=ifname%>.proto" size="1">
|
||||
<option id="cbid.network.<%=ifname%>.proto-static" value="static"<% if uci:get("network",ifname,"proto") == "static" or uci:get("network",ifname,"proto") == nil then findproto = 1 %> selected="selected"<% end %>><%:Static address%></option>
|
||||
<option id="cbid.network.<%=ifname%>.proto-dhcp" value="dhcp"<% if uci:get("network",ifname,"proto") == "dhcp" then findproto = 1 %> selected="selected"<% end %>><%:DHCP%></option>
|
||||
<option id="cbid.network.<%=ifname%>.proto-dhcpv6" value="dhcpv6"<% if uci:get("network",ifname,"proto") == "dhcpv6" then findproto = 1 %> selected="selected"<% end %>><%:DHCPv6%></option>
|
||||
<option id="cbid.network.<%=ifname%>.proto-modemmanager" value="modemmanager"<% if uci:get("network",ifname,"proto") == "modemmanager" then findproto = 1 %> selected="selected"<% end %>><%:ModemManager%></option>
|
||||
<option id="cbid.network.<%=ifname%>.proto-ncm" value="ncm"<% if uci:get("network",ifname,"proto") == "ncm" then findproto = 1 %> selected="selected"<% end %>><%:NCM%></option>
|
||||
<option id="cbid.network.<%=ifname%>.proto-pppoe" value="pppoe"<% if uci:get("network",ifname,"proto") == "pppoe" then findproto = 1 %> selected="selected"<% end %>><%:PPPoE%></option>
|
||||
|
@ -523,7 +524,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-intf" data-depends="[{"cbid.network.<%=ifname%>.proto":"static"},{"cbid.network.<%=ifname%>.proto":"dhcp"}]" data-index="4">
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-intf" data-depends="[{"cbid.network.<%=ifname%>.proto":"static"},{"cbid.network.<%=ifname%>.proto":"dhcp"},{"cbid.network.<%=ifname%>.proto":"dhcpv6"}]" data-index="4">
|
||||
<label class="cbi-value-title"><%:Physical interface%></label>
|
||||
<div class="cbi-value-field">
|
||||
<select class="cbi-input-select" data-update="change" id="cbid.network.<%=ifname%>.intf" name="cbid.network.<%=ifname%>.intf" size="1">
|
||||
|
@ -576,6 +577,60 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%
|
||||
ipv6list = uci:get_list("network",ifname,"ip6addr")
|
||||
for key, value in pairs(ipv6list) do
|
||||
%>
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ipv6address" data-index="8">
|
||||
<label class="cbi-value-title"><%:IPv6 address%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input type="text" id="cbid.network.<%=ifname%>.ip6addr" name="cbid.network.<%=ifname%>.ip6addr" class="cbi-input-text" value="<%=value%>" data-type="ip6addr">
|
||||
<br />
|
||||
<div class="cbi-value-description">
|
||||
<%:Set an IP in the same network as the modem%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%
|
||||
end
|
||||
if table.getn(ipv6list) ~= 0 then
|
||||
%>
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ip6gw" data-index="9">
|
||||
<label class="cbi-value-title"><%:IPv6 gateway%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input type="text" id="cbid.network.<%=ifname%>.ip6gw" name="cbid.network.<%=ifname%>.ip6gw" class="cbi-input-text" value="<%=uci:get("network",ifname,"ip6gw")%>" data-type="ip6addr">
|
||||
<br />
|
||||
<div class="cbi-value-description">
|
||||
<%:Set here IP of the modem%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%
|
||||
else
|
||||
%>
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ipv6address" data-depends="[{"enableipv6":"0"},{"cbid.network.<%=ifname%>.proto":"static"},{"cbid.network.<%=ifname%>.type":"macvlan"}]" data-index="8">
|
||||
<label class="cbi-value-title"><%:IPv6 address%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input type="text" id="cbid.network.<%=ifname%>.ip6addr" name="cbid.network.<%=ifname%>.ip6addr" class="cbi-input-text" value="" data-type="ip6addr">
|
||||
<br />
|
||||
<div class="cbi-value-description">
|
||||
<%:Set an IP in the same network as the modem%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-ip6gw" data-depends="[{"enableipv6":"0"},{"cbid.network.<%=ifname%>.proto":"static"},{"cbid.network.<%=ifname%>.type":"macvlan"}]" data-index="9">
|
||||
<label class="cbi-value-title"><%:IPv6 gateway%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input type="text" id="cbid.network.<%=ifname%>.ip6gw" name="cbid.network.<%=ifname%>.ip6gw" class="cbi-input-text" value="<%=uci:get("network",ifname,"ip6gw")%>" data-type="ip6addr">
|
||||
<br />
|
||||
<div class="cbi-value-description">
|
||||
<%:Set here IP of the modem%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%
|
||||
end
|
||||
%>
|
||||
<div class="cbi-value" id="cbi-network-<%=ifname%>-device-ncm" data-depends="[{"cbid.network.<%=ifname%>.proto":"ncm"}]" data-index="5">
|
||||
<label class="cbi-value-title"><%:Device%></label>
|
||||
<div class="cbi-value-field">
|
||||
|
|
|
@ -28,8 +28,10 @@ get_ip_from_website() {
|
|||
}
|
||||
|
||||
[ -z "$intf" ] && return
|
||||
ip=""
|
||||
config_load openmptcprouter
|
||||
config_foreach get_ip_from_server server
|
||||
[ -z "$ip" ] && get_ip_from_website
|
||||
echo $ip
|
||||
if [ -n "$(ip -4 a show dev $intf)" ]; then
|
||||
ip=""
|
||||
config_load openmptcprouter
|
||||
config_foreach get_ip_from_server server
|
||||
[ -z "$ip" ] && get_ip_from_website
|
||||
echo $ip
|
||||
fi
|
37
luci-app-openmptcprouter/root/bin/omr-ip6-intf
Executable file
37
luci-app-openmptcprouter/root/bin/omr-ip6-intf
Executable file
|
@ -0,0 +1,37 @@
|
|||
#!/bin/sh
|
||||
. /lib/functions.sh
|
||||
|
||||
intf=$1
|
||||
|
||||
get_ip_from_server() {
|
||||
serverip=$(uci -q get openmptcprouter.$1.ip)
|
||||
serverport=$(uci -q get openmptcprouter.$1.port)
|
||||
getip="$(curl -s -k -6 -m 2 --interface $intf https://$serverip:$serverport/clienthost)"
|
||||
[ -n "$getip" ] && getip=$(echo $getip | jsonfilter -e '@.client_host')
|
||||
if [ -n "$(echo "$getip" | grep :)" ]; then
|
||||
ip=$getip
|
||||
break
|
||||
fi
|
||||
}
|
||||
|
||||
get_ip_from_website() {
|
||||
check_ipv6_website="$(uci -q get openmptcprouter.settings.check_ipv6_website)"
|
||||
[ -z "$check_ipv6_website" ] && check_ipv6_website="http://ipv6.openmptcprouter.com"
|
||||
checkip=$(echo $check_ipv6_website | sed -e 's/https:\/\///' -e 's/http:\/\///' | xargs dig +short AAAA | tr -d "\n")
|
||||
ipset add ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1
|
||||
getip="$(curl -s -6 -m 2 --interface $intf $check_ipv6_website)"
|
||||
ipset del ss_rules6_dst_bypass_all $checkip > /dev/null 2>&1
|
||||
if [ -n "$(echo "$getip" | grep :)" ]; then
|
||||
ip=$getip
|
||||
break
|
||||
fi
|
||||
}
|
||||
|
||||
[ -z "$intf" ] && return
|
||||
if [ -n "$(ip -6 a show dev $intf)" ]; then
|
||||
ip=""
|
||||
config_load openmptcprouter
|
||||
config_foreach get_ip_from_server server
|
||||
[ -z "$ip" ] && get_ip_from_website
|
||||
echo $ip
|
||||
fi
|
|
@ -1,7 +1,16 @@
|
|||
#!/bin/sh
|
||||
INTERFACE=$2
|
||||
if [ -z "$INTERFACE" ]; then
|
||||
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $1
|
||||
SERVER=$1
|
||||
if [ -n "$(resolveip -4 $SERVER)" ]; then
|
||||
if [ -z "$INTERFACE" ]; then
|
||||
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER
|
||||
else
|
||||
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER
|
||||
fi
|
||||
else
|
||||
tracebox -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $1
|
||||
if [ -z "$INTERFACE" ]; then
|
||||
tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" $SERVER
|
||||
else
|
||||
tracebox -6 -m 20 -l "pkt = ip{dst=to} / tcp{dst=65101} / MPCAPABLE / MSS / WSCALE if string.find(tostring(tracebox(pkt)),'-TCPOptionMPTCPCapable') then print 'MPTCP disabled' elseif string.find(tostring(tracebox(pkt)),'MPTCP') then print 'MPTCP enabled' end" -i $INTERFACE $SERVER
|
||||
fi
|
||||
fi
|
|
@ -18,31 +18,12 @@ omr_intf_check() {
|
|||
omr_intf_set() {
|
||||
local device
|
||||
local ifname
|
||||
local multipath
|
||||
config_get multipath "$1" multipath
|
||||
config_get ifname "$1" ifname
|
||||
config_get device "$1" device
|
||||
config_get proto "$1" proto
|
||||
config_get type "$1" type
|
||||
config_get addlatency "$1" addlatency
|
||||
[ -z "$addlatency" ] && addlatency=0
|
||||
devicename=$(echo "$device" | cut -d'/' -f3)
|
||||
|
||||
[ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]')
|
||||
|
||||
if [ -n "$ifname" ]; then
|
||||
if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then
|
||||
tc qdisc del dev ${ifname} root netem
|
||||
fi
|
||||
if [ "$addlatency" != "0" ]; then
|
||||
if [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then
|
||||
tc qdisc add dev ${ifname} root netem delay ${addlatency}ms
|
||||
elif [ "$(tc qdisc show dev $ifname | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then
|
||||
tc qdisc replace dev ${ifname} root netem delay ${addlatency}ms
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$type" != "macvlan" ] && [ -n "$ifname" ] && [ -f /sys/class/net/${ifname}/device/uevent ]; then
|
||||
devicepath=$(readlink -f /sys/class/net/${ifname})
|
||||
if [ -n "$devicepath" ] && [ "$(echo ${devicepath} | grep virtual)" = "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PRODUCT)" != "" ] && [ "$(cat /sys/class/net/${ifname}/device/uevent | grep PCI_SLOT_NAME)" = "" ]; then
|
||||
|
@ -63,6 +44,15 @@ omr_intf_set() {
|
|||
}
|
||||
|
||||
omr_set_settings() {
|
||||
local device
|
||||
local ifname
|
||||
local multipath
|
||||
config_get multipath "$1" multipath
|
||||
config_get ifname "$1" ifname
|
||||
config_get device "$1" device
|
||||
config_get proto "$1" proto
|
||||
config_get type "$1" type
|
||||
config_get addlatency "$1" addlatency
|
||||
[ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "omrvpn" ] && [ "$1" != "glorytun" ] && return
|
||||
|
||||
uci -q set openmptcprouter.$1=interface
|
||||
|
@ -73,6 +63,25 @@ omr_set_settings() {
|
|||
else
|
||||
uci -q set network.$1.ipv6=1
|
||||
fi
|
||||
|
||||
[ -z "$addlatency" ] && addlatency=0
|
||||
devicename=$(echo "$device" | cut -d'/' -f3)
|
||||
|
||||
[ -z "$ifname" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]')
|
||||
|
||||
if [ -n "$ifname" ]; then
|
||||
if [ "$addlatency" = "0" ] && [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then
|
||||
tc qdisc del dev ${ifname} root netem
|
||||
fi
|
||||
if [ "$addlatency" != "0" ]; then
|
||||
if [ "$(tc qdisc show dev $ifname | grep delay)" != "" ]; then
|
||||
tc qdisc add dev ${ifname} root netem delay ${addlatency}ms
|
||||
elif [ "$(tc qdisc show dev $ifname | awk '/delay/ { print $10 }' | sed 's/ms//')" != "$addlatency" ]; then
|
||||
tc qdisc replace dev ${ifname} root netem delay ${addlatency}ms
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
start_service() {
|
||||
|
|
|
@ -545,7 +545,14 @@ function update_vps()
|
|||
local vpsgettoken = sys.exec("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null")
|
||||
end
|
||||
|
||||
function get_rootfs()
|
||||
local rootfs = {}
|
||||
rootfs['format'] = luci.util.trim(sys.exec("mount | awk 'NR==1{print $5}'"))
|
||||
return rootfs
|
||||
end
|
||||
|
||||
function get_ip(interface)
|
||||
local ut = require "luci.util"
|
||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
||||
local ip = ""
|
||||
if dump and dump['ipv4-address'] then
|
||||
|
@ -563,6 +570,42 @@ function get_ip(interface)
|
|||
end
|
||||
end
|
||||
end
|
||||
if ip == "" then
|
||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
||||
if dump and dump['l3_device'] then
|
||||
local ifname = dump['l3_device']
|
||||
ip = ut.trim(sys.exec("ip -4 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname))
|
||||
end
|
||||
end
|
||||
return ip
|
||||
end
|
||||
|
||||
function get_ip6(interface)
|
||||
local ut = require "luci.util"
|
||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
||||
local ip = ""
|
||||
if dump and dump['ipv6-address'] then
|
||||
local _, ipv6address
|
||||
for _, ipv6address in ipairs(dump['ipv6-address']) do
|
||||
ip = dump['ipv6-address'][_].address
|
||||
end
|
||||
end
|
||||
if ip == "" then
|
||||
local dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {})
|
||||
if dump and dump['ipv6-address'] then
|
||||
local _, ipv6address
|
||||
for _, ipv6address in ipairs(dump['ipv6-address']) do
|
||||
ip = dump['ipv6-address'][_].address
|
||||
end
|
||||
end
|
||||
end
|
||||
if ip == "" then
|
||||
local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
||||
if dump and dump['l3_device'] then
|
||||
local ifname = dump['l3_device']
|
||||
ip = ut.trim(sys.exec("ip -6 -br addr ls dev %s | awk -F'[ /]+' '{print $3}'" % ifname))
|
||||
end
|
||||
end
|
||||
return ip
|
||||
end
|
||||
|
||||
|
@ -625,6 +668,56 @@ function get_gateway(interface)
|
|||
return gateway
|
||||
end
|
||||
|
||||
function get_gateway6(interface)
|
||||
local gateway = ""
|
||||
local dump = nil
|
||||
|
||||
dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
|
||||
|
||||
if dump and dump.route then
|
||||
local _, route
|
||||
for _, route in ipairs(dump.route) do
|
||||
if dump.route[_].target == "::" then
|
||||
gateway = dump.route[_].nexthop
|
||||
end
|
||||
end
|
||||
end
|
||||
if gateway == "" then
|
||||
if dump and dump.inactive and dump.inactive.route then
|
||||
local _, route
|
||||
for _, route in ipairs(dump.inactive.route) do
|
||||
if dump.inactive.route[_].target == "::" then
|
||||
gateway = dump.inactive.route[_].nexthop
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if gateway == "" then
|
||||
dump = require("luci.util").ubus("network.interface.%s_6" % interface, "status", {})
|
||||
|
||||
if dump and dump.route then
|
||||
local _, route
|
||||
for _, route in ipairs(dump.route) do
|
||||
if dump.route[_].target == "::" then
|
||||
gateway = dump.route[_].nexthop
|
||||
end
|
||||
end
|
||||
end
|
||||
if gateway == "" then
|
||||
if dump and dump.inactive and dump.inactive.route then
|
||||
local _, route
|
||||
for _, route in ipairs(dump.inactive.route) do
|
||||
if dump.inactive.route[_].target == "::" then
|
||||
gateway = dump.inactive.route[_].nexthop
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return gateway
|
||||
end
|
||||
|
||||
-- This function come from OverTheBox by OVH with many changes
|
||||
-- Copyright 2015 OVH <OverTheBox@ovh.net>
|
||||
-- Simon Lelievre (simon.lelievre@corp.ovh.com)
|
||||
|
@ -689,16 +782,25 @@ function interfaces_status()
|
|||
if mArray.openmptcprouter["dns"] == true then
|
||||
-- wanaddr
|
||||
--mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or ""
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" then
|
||||
mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1"))
|
||||
mArray.openmptcprouter["service_addr_ip6"] = ut.trim(sys.exec("resolveip -6 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1"))
|
||||
end
|
||||
|
||||
if uci:get("openmptcprouter","settings","external_check") ~= "0" and mArray.openmptcprouter["dns"] == true then
|
||||
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website))
|
||||
if mArray.openmptcprouter["wan_addr"] == "" then
|
||||
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'"))
|
||||
if mArray.openmptcprouter["service_addr_ip"] ~= "" and mArray.openmptcprouter["service_addr_ip"] ~= nil then
|
||||
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("curl -4 -s -m " .. timeout .. " " .. check_ipv4_website))
|
||||
if mArray.openmptcprouter["wan_addr"] == "" then
|
||||
mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig -4 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'"))
|
||||
end
|
||||
end
|
||||
if mArray.openmptcprouter["ipv6"] == "enabled" then
|
||||
if mArray.openmptcprouter["ipv6"] == "enabled" or ( mArray.openmptcprouter["service_addr_ip6"] ~= "" and mArray.openmptcprouter["service_addr_ip6"] ~= nil) 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("curl -6 -s -m " .. timeout .. " " .. check_ipv6_website))
|
||||
if mArray.openmptcprouter["wan_addr6"] == "" then
|
||||
mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("dig -6 TXT +timeout=" .. timeout .. " +tries=1 +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'\"' '{print $2}'"))
|
||||
end
|
||||
end
|
||||
end
|
||||
mArray.openmptcprouter["external_check"] = true
|
||||
|
@ -720,9 +822,6 @@ function interfaces_status()
|
|||
end
|
||||
end
|
||||
end
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" then
|
||||
mArray.openmptcprouter["service_addr_ip"] = ut.trim(sys.exec("resolveip -4 -t 1 " .. mArray.openmptcprouter["service_addr"] .. " | head -n 1"))
|
||||
end
|
||||
end
|
||||
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then
|
||||
|
@ -738,92 +837,105 @@ function interfaces_status()
|
|||
mArray.openmptcprouter["vps_hostname"] = "Server"
|
||||
-- Get VPS info
|
||||
ucic:foreach("openmptcprouter", "server", function(s)
|
||||
local serverip = uci:get("openmptcprouter",s[".name"],"ip") or ""
|
||||
local serverips = uci:get("openmptcprouter",s[".name"],"ip") or { "" }
|
||||
local master = uci:get("openmptcprouter",s[".name"],"master") or "1"
|
||||
if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip) then
|
||||
mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or ""
|
||||
mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or ""
|
||||
mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or ""
|
||||
timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2"
|
||||
if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then
|
||||
mArray.openmptcprouter["vps_admin_error"] = true
|
||||
end
|
||||
local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500"
|
||||
local token = uci:get("openmptcprouter",s[".name"],"token") or ""
|
||||
if token ~= "" then
|
||||
local vpsinfo_json = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status')
|
||||
if vpsinfo_json ~= "" and vpsinfo_json ~= nil then
|
||||
local status, vpsinfo = pcall(function()
|
||||
return json.decode(vpsinfo_json)
|
||||
end)
|
||||
if status and vpsinfo.vps ~= nil then
|
||||
mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or ""
|
||||
mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or ""
|
||||
mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or ""
|
||||
mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or ""
|
||||
mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or ""
|
||||
if vpsinfo.vps.kernel ~= nil then
|
||||
mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or ""
|
||||
end
|
||||
if vpsinfo.vps.omr_version ~= nil then
|
||||
mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or ""
|
||||
end
|
||||
if vpsinfo.vps.time ~= "" then
|
||||
if math.abs(os.time() - vpsinfo.vps.time) > 10 then
|
||||
mArray.openmptcprouter["vps_time_accurate"] = false
|
||||
else
|
||||
mArray.openmptcprouter["vps_time_accurate"] = true
|
||||
for key, value in pairs(serverips) do
|
||||
serverip = value
|
||||
if serverip ~= "" and (master == "1" or mArray.openmptcprouter["wan_addr"] == serverip or mArray.openmptcprouter["wan_addr6"] == serverip) and mArray.openmptcprouter["vps_admin"] == false then
|
||||
mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or ""
|
||||
mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or ""
|
||||
mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or ""
|
||||
timeout = uci:get("openmptcprouter","settings","status_vps_timeout") or "2"
|
||||
if uci:get("openmptcprouter",s[".name"],"admin_error") == "1" then
|
||||
mArray.openmptcprouter["vps_admin_error"] = true
|
||||
end
|
||||
local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500"
|
||||
local token = uci:get("openmptcprouter",s[".name"],"token") or ""
|
||||
if token ~= "" then
|
||||
local vpsinfo_json = ""
|
||||
if mArray.openmptcprouter["service_addr_ip"] ~= "" then
|
||||
vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status')
|
||||
end
|
||||
if mArray.openmptcprouter["service_addr_ip6"] ~= "" then
|
||||
vpsinfo_json = sys.exec('curl --max-time ' .. timeout .. ' -s -k -H "Authorization: Bearer ' .. token .. '" https://[' .. serverip .. ']:' .. adminport .. '/status')
|
||||
end
|
||||
if vpsinfo_json ~= "" and vpsinfo_json ~= nil then
|
||||
local status, vpsinfo = pcall(function()
|
||||
return json.decode(vpsinfo_json)
|
||||
end)
|
||||
if status and vpsinfo.vps ~= nil then
|
||||
mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or ""
|
||||
mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or ""
|
||||
mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp.enabled or ""
|
||||
mArray.openmptcprouter["vps_hostname"] = vpsinfo.vps.hostname or ""
|
||||
mArray.openmptcprouter["vps_time"] = vpsinfo.vps.time or ""
|
||||
if vpsinfo.vps.kernel ~= nil then
|
||||
mArray.openmptcprouter["vps_kernel"] = vpsinfo.vps.kernel or ""
|
||||
end
|
||||
if vpsinfo.vps.omr_version ~= nil then
|
||||
mArray.openmptcprouter["vps_omr_version"] = vpsinfo.vps.omr_version or ""
|
||||
end
|
||||
if vpsinfo.vps.time ~= "" then
|
||||
if math.abs(os.time() - vpsinfo.vps.time) > 10 then
|
||||
mArray.openmptcprouter["vps_time_accurate"] = false
|
||||
else
|
||||
mArray.openmptcprouter["vps_time_accurate"] = true
|
||||
end
|
||||
end
|
||||
mArray.openmptcprouter["vps_admin"] = true
|
||||
mArray.openmptcprouter["vps_status"] = "UP"
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = ""
|
||||
else
|
||||
uci:set("openmptcprouter",s[".name"],"admin_error","1")
|
||||
mArray.openmptcprouter["vps_admin_error"] = true
|
||||
uci:delete("openmptcprouter",s[".name"],"token")
|
||||
uci:save("openmptcprouter",s[".name"])
|
||||
uci:commit("openmptcprouter",s[".name"])
|
||||
mArray.openmptcprouter["vps_admin"] = false
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error"
|
||||
end
|
||||
mArray.openmptcprouter["vps_admin"] = true
|
||||
mArray.openmptcprouter["vps_status"] = "UP"
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = ""
|
||||
if status and vpsinfo.vpn ~= nil then
|
||||
mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0"
|
||||
mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0"
|
||||
mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"]
|
||||
else
|
||||
mArray.openmptcprouter["vpn_traffic_rx"] = "0"
|
||||
mArray.openmptcprouter["vpn_traffic_tx"] = "0"
|
||||
mArray.openmptcprouter["vpn_traffic"] = "0"
|
||||
end
|
||||
if status and vpsinfo.shadowsocks ~= nil then
|
||||
mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0"
|
||||
else
|
||||
mArray.openmptcprouter["ss_traffic"] = "0"
|
||||
end
|
||||
if status and vpsinfo.v2ray ~= nil then
|
||||
mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0"
|
||||
mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0"
|
||||
mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"]
|
||||
else
|
||||
mArray.openmptcprouter["v2ray_traffic_rx"] = "0"
|
||||
mArray.openmptcprouter["v2ray_traffic_tx"] = "0"
|
||||
mArray.openmptcprouter["v2ray_traffic"] = "0"
|
||||
end
|
||||
mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"]
|
||||
mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"]
|
||||
else
|
||||
uci:set("openmptcprouter",s[".name"],"admin_error","1")
|
||||
mArray.openmptcprouter["vps_admin_error"] = true
|
||||
uci:delete("openmptcprouter",s[".name"],"token")
|
||||
uci:save("openmptcprouter",s[".name"])
|
||||
uci:commit("openmptcprouter",s[".name"])
|
||||
mArray.openmptcprouter["vps_admin"] = false
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error"
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = "No result"
|
||||
end
|
||||
if status and vpsinfo.vpn ~= nil then
|
||||
mArray.openmptcprouter["vpn_traffic_rx"] = vpsinfo.vpn.rx or "0"
|
||||
mArray.openmptcprouter["vpn_traffic_tx"] = vpsinfo.vpn.tx or "0"
|
||||
mArray.openmptcprouter["vpn_traffic"] = mArray.openmptcprouter["vpn_traffic_tx"] + mArray.openmptcprouter["vpn_traffic_rx"]
|
||||
else
|
||||
mArray.openmptcprouter["vpn_traffic_rx"] = "0"
|
||||
mArray.openmptcprouter["vpn_traffic_tx"] = "0"
|
||||
mArray.openmptcprouter["vpn_traffic"] = "0"
|
||||
end
|
||||
if status and vpsinfo.shadowsocks ~= nil then
|
||||
mArray.openmptcprouter["ss_traffic"] = vpsinfo.shadowsocks.traffic or "0"
|
||||
else
|
||||
mArray.openmptcprouter["ss_traffic"] = "0"
|
||||
end
|
||||
if status and vpsinfo.v2ray ~= nil then
|
||||
mArray.openmptcprouter["v2ray_traffic_rx"] = vpsinfo.v2ray.rx or "0"
|
||||
mArray.openmptcprouter["v2ray_traffic_tx"] = vpsinfo.v2ray.tx or "0"
|
||||
mArray.openmptcprouter["v2ray_traffic"] = mArray.openmptcprouter["v2ray_traffic_tx"] + mArray.openmptcprouter["v2ray_traffic_rx"]
|
||||
else
|
||||
mArray.openmptcprouter["v2ray_traffic_rx"] = "0"
|
||||
mArray.openmptcprouter["v2ray_traffic_tx"] = "0"
|
||||
mArray.openmptcprouter["v2ray_traffic"] = "0"
|
||||
end
|
||||
mArray.openmptcprouter["proxy_traffic"] = mArray.openmptcprouter["ss_traffic"] + mArray.openmptcprouter["v2ray_traffic"]
|
||||
mArray.openmptcprouter["total_traffic"] = mArray.openmptcprouter["proxy_traffic"] + mArray.openmptcprouter["vpn_traffic"]
|
||||
else
|
||||
mArray.openmptcprouter["vps_admin"] = false
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = "No result"
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available"
|
||||
end
|
||||
else
|
||||
mArray.openmptcprouter["vps_admin"] = false
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = "No token yet available"
|
||||
end
|
||||
if mArray.openmptcprouter["vps_admin"] == false then
|
||||
local vpstest = sys.exec('curl -4 --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/')
|
||||
if vpstest == "" then
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer"
|
||||
if mArray.openmptcprouter["vps_admin"] == false then
|
||||
if mArray.openmptcprouter["service_addr_ip"] ~= "" then
|
||||
local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://' .. serverip .. ':' .. adminport .. '/')
|
||||
elseif mArray.openmptcprouter["service_addr_ip6"] ~= "" then
|
||||
local vpstest = sys.exec('curl --max-time ' .. timeout .. ' -s -k https://[' .. serverip .. ']:' .. adminport .. '/')
|
||||
end
|
||||
if vpstest == "" then
|
||||
mArray.openmptcprouter["vps_admin_error_msg"] = mArray.openmptcprouter["vps_admin_error_msg"] .. " - No API script answer"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -859,7 +971,7 @@ function interfaces_status()
|
|||
else
|
||||
mArray.openmptcprouter["tun_state"] = "DOWN"
|
||||
end
|
||||
if mArray.openmptcprouter["ipv6"] == "enabled" then
|
||||
if mArray.openmptcprouter["ipv6"] == "enabled" or mArray.openmptcprouter["service_addr_ip6"] ~= "" then
|
||||
local tunnel_ipv6_gw = uci:get("network","omr6in4","gateway")
|
||||
local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 " .. tunnel_ipv6_gw .. "%6in4-omr6in4 | grep '100% packet loss'"))
|
||||
if tunnel_ping6_test == "" then
|
||||
|
@ -875,6 +987,8 @@ function interfaces_status()
|
|||
end
|
||||
elseif uci:get("openmptcprouter","settings","vpn") == "none" then
|
||||
mArray.openmptcprouter["tun_service"] = true
|
||||
mArray.openmptcprouter["tun_state"] = "NONE"
|
||||
mArray.openmptcprouter["tun6_state"] = "NONE"
|
||||
end
|
||||
|
||||
mArray.openmptcprouter["multi_vpn"] = false
|
||||
|
@ -996,7 +1110,9 @@ function interfaces_status()
|
|||
local interface = section[".name"]
|
||||
local net = ntm:get_network(interface)
|
||||
local ipaddr = net:ipaddr() or ""
|
||||
local ip6addr = net:ip6addr() or ""
|
||||
local gateway = section["gateway"] or ""
|
||||
local gateway6 = section["ip6gw"] or ""
|
||||
local multipath = section["multipath"]
|
||||
local enabled = section["auto"]
|
||||
|
||||
|
@ -1034,7 +1150,13 @@ function interfaces_status()
|
|||
if ipaddr == "" and ifname ~= nil and ifname ~= "" then
|
||||
ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'"))
|
||||
end
|
||||
if ipaddr == "" then
|
||||
if ip6addr == "" and ifname ~= nil and ifname ~= "" then
|
||||
ip6addr = ut.trim(sys.exec("ip -6 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'"))
|
||||
end
|
||||
if ip6addr == "" and ifname ~= nil and ifname ~= "" then
|
||||
ip6addr = ut.trim(sys.exec("ip -6 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'"))
|
||||
end
|
||||
if ipaddr == "" and ip6addr == "" then
|
||||
connectivity = "ERROR"
|
||||
end
|
||||
|
||||
|
@ -1071,8 +1193,10 @@ function interfaces_status()
|
|||
|
||||
-- Detect WAN gateway status
|
||||
local gw_ping = "UP"
|
||||
if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then
|
||||
local gw_ping6 = "UP"
|
||||
if ifname ~= nil and not (ifname:match("^tun.*") or 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'"))
|
||||
gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'"))
|
||||
end
|
||||
|
||||
if gateway == "" then
|
||||
|
@ -1086,18 +1210,40 @@ function interfaces_status()
|
|||
end
|
||||
end
|
||||
end
|
||||
if gateway6 == "" then
|
||||
gateway6 = get_gateway6(interface)
|
||||
end
|
||||
if gateway6 == "" and ifname ~= nil and ifname ~= "" then
|
||||
if fs.access("/sys/class/net/" .. ifname) then
|
||||
gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'"))
|
||||
if gateway6 == "" then
|
||||
gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep default | awk '{print $3}' | tr -d '\n'"))
|
||||
end
|
||||
end
|
||||
end
|
||||
local signal = ""
|
||||
local operator = ""
|
||||
local phonenumber = ""
|
||||
local donglestate = ""
|
||||
local networktype = ""
|
||||
if gateway ~= "" then
|
||||
if gateway ~= "" or gateway6 ~= "" then
|
||||
if uci:get("openmptcprouter", "settings", "disablegwping") ~= "1" and connectivity ~= "ERROR" then
|
||||
local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'"))
|
||||
if gw_ping_test ~= "" then
|
||||
gw_ping = "DOWN"
|
||||
if connectivity == "OK" then
|
||||
connectivity = "WARNING"
|
||||
if gateway ~= "" then
|
||||
local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'"))
|
||||
if gw_ping_test ~= "" then
|
||||
gw_ping = "DOWN"
|
||||
if connectivity == "OK" then
|
||||
connectivity = "WARNING"
|
||||
end
|
||||
end
|
||||
end
|
||||
if gateway6 ~= "" then
|
||||
local gw_ping6_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway6 .. " | grep '100% packet loss'"))
|
||||
if gw_ping6_test ~= "" then
|
||||
gw_ping6 = "DOWN"
|
||||
if connectivity == "OK" then
|
||||
connectivity = "WARNING"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1111,7 +1257,7 @@ function interfaces_status()
|
|||
networktype = ut.trim(sys.exec("echo '".. intfdata .. "' | awk -F';' '{print $5}'"))
|
||||
end
|
||||
end
|
||||
elseif gateway == "" then
|
||||
elseif gateway == "" and gateway6 == "" then
|
||||
gw_ping = "DOWN"
|
||||
connectivity = "ERROR"
|
||||
end
|
||||
|
@ -1147,7 +1293,7 @@ function interfaces_status()
|
|||
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
|
||||
if ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and ipaddr ~= "" and connectivity ~= "ERROR" then
|
||||
if ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and (ipaddr ~= "" or ip6addr ~= "") and connectivity ~= "ERROR" then
|
||||
local serverip = mArray.openmptcprouter["service_addr"]
|
||||
if serverip == "127.0.0.1" then
|
||||
serverip = mArray.openmptcprouter["wan_addr"]
|
||||
|
@ -1170,7 +1316,7 @@ function interfaces_status()
|
|||
|
||||
local multipath_available = ""
|
||||
local multipath_available_state = ""
|
||||
if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and gateway ~= "" and gw_ping == "UP" then
|
||||
if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and (gateway ~= "" or gateway6 ~= "") and (gw_ping == "UP" or gw_ping6 == "UP") then
|
||||
-- Test if multipath can work on the connection
|
||||
local multipath_available_state = uci:get("openmptcprouter",interface,"mptcp_status") or ""
|
||||
if multipath_available_state == "" then
|
||||
|
@ -1207,7 +1353,9 @@ function interfaces_status()
|
|||
-- end
|
||||
local mtu = ""
|
||||
local whois = ""
|
||||
local whois6 = ""
|
||||
local publicIP = ""
|
||||
local publicIP6 = ""
|
||||
|
||||
if connectivity ~= "ERROR" then
|
||||
if ifname ~= nil and ifname:match("^tun.*") and interface:match("^ovpn.*") then
|
||||
|
@ -1215,24 +1363,39 @@ function interfaces_status()
|
|||
if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||
publicIP = ut.trim(sys.exec("omr-ip-intf " .. get_device(interface:sub(5))))
|
||||
end
|
||||
publicIP6 = uci:get("openmptcprouter",interface:sub(5),"publicip6") or ""
|
||||
if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||
publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. get_device(interface:sub(5))))
|
||||
end
|
||||
else
|
||||
publicIP = uci:get("openmptcprouter",interface,"publicip") or ""
|
||||
if ifname ~= nil and publicIP == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||
publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname))
|
||||
end
|
||||
publicIP6 = uci:get("openmptcprouter",interface,"publicip6") or ""
|
||||
if ifname ~= nil and publicIP6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||
publicIP6 = ut.trim(sys.exec("omr-ip6-intf " .. ifname))
|
||||
end
|
||||
end
|
||||
if publicIP ~= "" then
|
||||
whois = uci:get("openmptcprouter",interface,"asn") or ""
|
||||
if whois == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true 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'"))
|
||||
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
|
||||
end
|
||||
if publicIP6 ~= "" then
|
||||
whois6 = uci:get("openmptcprouter",interface,"asn") or ""
|
||||
if whois6 == "" and mArray.openmptcprouter["external_check"] ~= false and mArray.openmptcprouter["dns"] == true then
|
||||
whois6 = ut.trim(sys.exec("whois " .. publicIP6 .. " | grep -i 'netname' | awk '{print $2}'"))
|
||||
--whois6 = ut.trim(sys.exec("wget -6 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP6 .. "' | jsonfilter -q -e '@.as_description'"))
|
||||
end
|
||||
end
|
||||
if ifname ~= "" and ifname ~= nil then
|
||||
if fs.access("/sys/class/net/" .. ifname) then
|
||||
mtu = ut.trim(sys.exec("cat /sys/class/net/" .. ifname .. "/mtu | tr -d '\n'"))
|
||||
if mtu == "" and interface ~= nil then
|
||||
mtu = uci:get("openmptcprouter",interface,"mtu") or ""
|
||||
mtu = uci:get("openmptcprouter",interface,"mtu") or ""
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1249,17 +1412,22 @@ function interfaces_status()
|
|||
--link = net:adminlink() or "",
|
||||
ifname = ifname,
|
||||
ipaddr = ipaddr,
|
||||
ip6addr = ip6addr,
|
||||
gateway = gateway,
|
||||
gateway6 = gateway6,
|
||||
multipath = section["multipath"],
|
||||
status = connectivity,
|
||||
wanip = publicIP,
|
||||
wanip6 = publicIP6,
|
||||
latency = latency,
|
||||
mtu = mtu,
|
||||
whois = whois or "unknown",
|
||||
whois6 = whois6 or "unknown",
|
||||
qos = section["trafficcontrol"],
|
||||
download = section["download"],
|
||||
upload = section["upload"],
|
||||
gw_ping = gw_ping,
|
||||
gw_ping6 = gw_ping6,
|
||||
server_ping = server_ping,
|
||||
ipv6_discover = ipv6_discover,
|
||||
multipath_available = multipath_available,
|
||||
|
@ -1350,6 +1518,11 @@ function _ipv6_discover(interface)
|
|||
end
|
||||
|
||||
local methods = {
|
||||
getrootfs = {
|
||||
call = function()
|
||||
return get_rootfs()
|
||||
end
|
||||
},
|
||||
status = {
|
||||
call = function()
|
||||
return interfaces_status()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue