mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Changes for MPTCPoverVPN
This commit is contained in:
parent
3f2d37f810
commit
1400f7b0aa
4 changed files with 184 additions and 8 deletions
|
@ -311,7 +311,7 @@
|
|||
temp += '</a></td></tr></table>';
|
||||
temp += '</td>';
|
||||
}
|
||||
if (mArray !== null && mArray.wans)
|
||||
if (mArray !== null && (mArray.wans || mArray.tunnels))
|
||||
{
|
||||
temp += '<td><ul>';
|
||||
var master = 0;
|
||||
|
@ -471,6 +471,162 @@
|
|||
|
||||
temp += '</a></li>';
|
||||
}
|
||||
for( var i = 0; i < mArray.tunnels.length; i++ )
|
||||
{
|
||||
// Get link color
|
||||
mArray.tunnels[i].color = stringToColour(mArray.tunnels[i].name)
|
||||
// Mwan status infos and colors
|
||||
var stat = '';
|
||||
var cssc = '';
|
||||
switch (mArray.tunnels[i].status)
|
||||
{
|
||||
case 'OK':
|
||||
stat = 'Online';
|
||||
cssc = 'rgb(144, 240, 144)';
|
||||
statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";
|
||||
statusMessageClass = "";
|
||||
statusMessage = "";
|
||||
break;
|
||||
case 'ERROR':
|
||||
stat = 'Offline';
|
||||
cssc = 'rgb(240, 144, 144)';
|
||||
statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png";
|
||||
statusMessageClass = "error";
|
||||
statusMessage = "";
|
||||
break;
|
||||
default:
|
||||
stat = 'Unknown';
|
||||
cssc = 'rgb(144, 240, 144)';
|
||||
statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
|
||||
statusMessageClass = "warning";
|
||||
statusMessage = "";
|
||||
}
|
||||
// Populate info
|
||||
var wanip = mArray.tunnels[i].wanip;
|
||||
if (anonymize == "true" && testPrivateIP(wanip) == false)
|
||||
{
|
||||
wanip=replaceLastNChars(wanip,"x",6);
|
||||
}
|
||||
var ipaddr = mArray.tunnels[i].ipaddr;
|
||||
if (anonymize == "true" && testPrivateIP(ipaddr) == false)
|
||||
{
|
||||
ipaddr=replaceLastNChars(ipaddr,"x",6);
|
||||
}
|
||||
var whois = mArray.tunnels[i].whois;
|
||||
var multipath = mArray.tunnels[i].multipath;
|
||||
if(multipath == 'master')
|
||||
{
|
||||
master++;
|
||||
}
|
||||
var latency = mArray.tunnels[i].latency;
|
||||
var mtu = mArray.tunnels[i].mtu;
|
||||
var gateway = mArray.tunnels[i].gateway;
|
||||
if (anonymize == "true" && testPrivateIP(gateway) == false)
|
||||
{
|
||||
gateway=replaceLastNChars(gateway,"x",6);
|
||||
}
|
||||
var gw_ping = mArray.tunnels[i].gw_ping;
|
||||
var server_ping = mArray.tunnels[i].server_ping;
|
||||
var ipv6_discover = mArray.tunnels[i].ipv6_discover;
|
||||
var multipath_available = mArray.tunnels[i].multipath_available;
|
||||
var multipath_state = mArray.tunnels[i].multipath_state;
|
||||
var duplicateif = mArray.tunnels[i].duplicateif;
|
||||
// Generate template
|
||||
if(mArray.openmptcprouter.remote_from_lease == true && mArray.tunnels.length == 1)
|
||||
{
|
||||
temp += String.format('<li class="subnode-only-child"><a href="%q">', mArray.tunnels[i].link);
|
||||
} else {
|
||||
temp += String.format('<li><a href="%q">', mArray.tunnels[i].link);
|
||||
}
|
||||
|
||||
var equipmentIcon = String.format('<embed id="modem_%s" onload="setColorSVG(\'modem_%s\', \'%s\')" src="<%=resource%>/modem.svg" />', mArray.tunnels[i].name, mArray.tunnels[i].name, mArray.tunnels[i].color);
|
||||
if (mArray.tunnels[i].gateway !== "")
|
||||
{
|
||||
var title = mArray.tunnels[i].label + " (" + mArray.tunnels[i].gateway + ")";
|
||||
} else {
|
||||
var title = mArray.tunnels[i].label;
|
||||
}
|
||||
var content = "";
|
||||
if(ipaddr !== '')
|
||||
{
|
||||
content += String.format('%s <strong>%s</strong><br />',_('ip address:'), ipaddr);
|
||||
}
|
||||
if(wanip !== '')
|
||||
{
|
||||
content += String.format('%s <strong>%s</strong><br />',_('wan address:'), wanip);
|
||||
}
|
||||
if(whois !== '')
|
||||
{
|
||||
content += String.format('%s %s<br />',_('whois:'), whois);
|
||||
}
|
||||
if(latency !== '')
|
||||
{
|
||||
content += String.format('%s %s ms<br />',_('latency:'), latency);
|
||||
}
|
||||
if(mtu !== '')
|
||||
{
|
||||
content += String.format('%s %s<br />',_('mtu:'), mtu);
|
||||
}
|
||||
if(ipaddr == '')
|
||||
{
|
||||
statusMessage += _('No IP defined') + '<br />'
|
||||
}
|
||||
if(gateway == '')
|
||||
{
|
||||
statusMessage += _('No gateway defined') + '<br />'
|
||||
} else if(gw_ping == 'DOWN')
|
||||
{
|
||||
statusMessage += _('Gateway DOWN') + '<br />'
|
||||
} else if(multipath_available == 'ERROR')
|
||||
{
|
||||
statusMessage += _('Multipath seems to be blocked on the connection') + '<br />'
|
||||
}
|
||||
if(server_ping == 'DOWN')
|
||||
{
|
||||
statusMessage += _('No Server ping response after 1 second') + '<br />'
|
||||
}
|
||||
if (stat == 'Offline' && ipaddr != '' && ipaddr == mArray.tunnels[i].gateway)
|
||||
{
|
||||
statusMessage += _('Wan IP and gateway are identical') + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
if(multipath == 'master')
|
||||
{
|
||||
if (master > 1)
|
||||
{
|
||||
statusMessage += _('Multipath master already defined') + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
if(multipath_state !== 'on' && multipath_state !== '')
|
||||
{
|
||||
statusMessage += _('Multipath current state is ') + multipath_state + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
} else {
|
||||
if(multipath !== multipath_state && multipath_state !== '')
|
||||
{
|
||||
statusMessage += _('Multipath current state is ') + multipath_state + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
}
|
||||
if(duplicateif)
|
||||
{
|
||||
statusMessage += _('Network interface duplicated') + '<br />';
|
||||
statusMessageClass = "error";
|
||||
}
|
||||
if(ipv6_discover == 'DETECTED')
|
||||
{
|
||||
statusMessage += _('IPv6 route received') + '<br />'
|
||||
}
|
||||
content += String.format('multipath: %s<br />',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)
|
||||
}
|
||||
temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content);
|
||||
|
||||
temp += '</a></li>';
|
||||
}
|
||||
temp += '</ul></td>';
|
||||
temp += '</tr></table>';
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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}"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue