1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-15 03:51:51 +00:00

Change wizard interface, add VPS admin support,...

This commit is contained in:
Ycarus 2018-11-27 15:21:47 +01:00
parent 7f8f15b6fa
commit 0c54e920d8
11 changed files with 402 additions and 238 deletions

View file

@ -197,6 +197,9 @@ right connector from last child*/
height: 30px; height: 30px;
z-index: -10; z-index: -10;
} }
.remote-from-lease a {
height: 90px;
}
.tree li#networkRootNode { .tree li#networkRootNode {
padding: 25px 0 0 0; padding: 25px 0 0 0;
} }
@ -242,6 +245,7 @@ Thanks :)*/
width: 400px; width: 400px;
max-width: 400px; max-width: 400px;
box-sizing: border-box; box-sizing: border-box;
height: 170px;
} }
.network-node .equipment-icon { .network-node .equipment-icon {
position: relative; position: relative;
@ -301,4 +305,19 @@ Thanks :)*/
} }
#networkRootNode table td { #networkRootNode table td {
border-top: 0px; border-top: 0px;
}
.vertdash {
width:5px;
border-right:2px dotted black;
height:70px;
padding-right: 195px;
}
#omr {
height: 190px;
}
#omr-vps {
height: 160px;
}
.space {
height: 55px;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -17,8 +17,6 @@ function index()
entry({"admin", "system", "openmptcprouter", "interfaces_status"}, call("interfaces_status")).leaf = true entry({"admin", "system", "openmptcprouter", "interfaces_status"}, call("interfaces_status")).leaf = true
entry({"admin", "system", "openmptcprouter", "settings"}, template("openmptcprouter/settings"), _("Advanced Settings"), 3).leaf = true entry({"admin", "system", "openmptcprouter", "settings"}, template("openmptcprouter/settings"), _("Advanced Settings"), 3).leaf = true
entry({"admin", "system", "openmptcprouter", "settings_add"}, post("settings_add")).leaf = true entry({"admin", "system", "openmptcprouter", "settings_add"}, post("settings_add")).leaf = true
entry({"admin", "system", "openmptcprouter", "mptcp_check"}, template("openmptcprouter/mptcp_check"), _("MPTCP Support Check"), 3).leaf = true
entry({"admin", "system", "openmptcprouter", "mptcp_check_trace"}, post("mptcp_check_trace")).leaf = true
end end
function interface_from_device(dev) function interface_from_device(dev)
@ -127,16 +125,20 @@ function wizard_add()
ucic:save("qos") ucic:save("qos")
ucic:commit("qos") ucic:commit("qos")
luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. intf) luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. intf)
gostatus = false
end end
gostatus = false
end end
-- Set interfaces settings -- Set interfaces settings
local interfaces = luci.http.formvaluetable("intf") local interfaces = luci.http.formvaluetable("intf")
for intf, _ in pairs(interfaces) do for intf, _ in pairs(interfaces) do
local proto = luci.http.formvalue("cbid.network.%s.proto" % intf) or "static"
local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or "" local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or ""
local netmask = luci.http.formvalue("cbid.network.%s.netmask" % 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 gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or ""
if proto ~= "other" then
ucic:set("network",intf,"proto",proto)
end
ucic:set("network",intf,"ipaddr",ipaddr) ucic:set("network",intf,"ipaddr",ipaddr)
ucic:set("network",intf,"netmask",netmask) ucic:set("network",intf,"netmask",netmask)
ucic:set("network",intf,"gateway",gateway) ucic:set("network",intf,"gateway",gateway)
@ -193,9 +195,6 @@ function wizard_add()
ucic:save("network") ucic:save("network")
ucic:commit("network") ucic:commit("network")
end end
ucic:set("openmptcprouter","settings","vpn",default_vpn)
ucic:save("openmptcprouter")
ucic:commit("openmptcprouter")
-- Get all servers ips -- Get all servers ips
local server_ip = luci.http.formvalue("server_ip") or "" local server_ip = luci.http.formvalue("server_ip") or ""
@ -246,6 +245,8 @@ function wizard_add()
ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("shadowsocks-libev","sss0","server",server_ip)
ucic:save("shadowsocks-libev") ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev") ucic:commit("shadowsocks-libev")
ucic:set("openmptcprouter","vps","ip",server_ip)
ucic:save("openmptcprouter")
end end
ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun","vpn","host",server_ip)
ucic:save("glorytun") ucic:save("glorytun")
@ -265,16 +266,17 @@ function wizard_add()
-- Set ShadowSocks settings -- Set ShadowSocks settings
local shadowsocks_key = luci.http.formvalue("shadowsocks_key") local shadowsocks_key = luci.http.formvalue("shadowsocks_key")
local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0"
if shadowsocks_key ~= "" then if shadowsocks_key ~= "" then
ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key) ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key)
ucic:set("shadowsocks-libev","sss0","method","chacha20") ucic:set("shadowsocks-libev","sss0","method","chacha20")
ucic:set("shadowsocks-libev","sss0","server_port","65101") ucic:set("shadowsocks-libev","sss0","server_port","65101")
ucic:set("shadowsocks-libev","sss0","disabled",0) ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable)
ucic:save("shadowsocks-libev") ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev") ucic:commit("shadowsocks-libev")
else else
ucic:set("shadowsocks-libev","sss0","key","") ucic:set("shadowsocks-libev","sss0","key","")
ucic:set("shadowsocks-libev","sss0","disabled",1) ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable)
ucic:save("shadowsocks-libev") ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev") ucic:commit("shadowsocks-libev")
luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null")
@ -331,7 +333,7 @@ function wizard_add()
ucic:save("mlvpn") ucic:save("mlvpn")
ucic:commit("mlvpn") ucic:commit("mlvpn")
else else
ucic:set("mlvpn","general","enable",0) --ucic:set("mlvpn","general","enable",0)
ucic:set("mlvpn","general","password","") ucic:set("mlvpn","general","password","")
ucic:save("mlvpn") ucic:save("mlvpn")
ucic:commit("mlvpn") ucic:commit("mlvpn")
@ -368,8 +370,23 @@ function wizard_add()
ucic:commit("openvpn") ucic:commit("openvpn")
end end
-- OpenMPTCProuter VPS
local openmptcprouter_vps_key = luci.http.formvalue("openmptcprouter_vps_key") or ""
ucic:set("openmptcprouter","vps","username","openmptcprouter")
ucic:set("openmptcprouter","vps","password",openmptcprouter_vps_key)
ucic:set("openmptcprouter","vps","get_config","1")
local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0"
ucic:set("openmptcprouter","settings","shadowsocks_disable",shadowsocks_disable)
ucic:set("openmptcprouter","settings","vpn",default_vpn)
ucic:save("openmptcprouter")
ucic:commit("openmptcprouter")
-- Restart all -- Restart all
luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null")
if openmptcprouter_vps_key ~= "" then
luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null")
os.execute("sleep 2")
end
luci.sys.call("/etc/init.d/shadowsocks restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/shadowsocks restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null")
luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null")
@ -384,6 +401,10 @@ function wizard_add()
end end
function settings_add() function settings_add()
-- Redirects all ports from VPS to OpenMPTCProuter
local redirect_ports = luci.http.formvalue("redirect_ports") or "0"
ucic:set("openmptcprouter","vps","redirect_ports",redirect_ports)
-- Set tcp_keepalive_time -- Set tcp_keepalive_time
local tcp_keepalive_time = luci.http.formvalue("tcp_keepalive_time") local tcp_keepalive_time = luci.http.formvalue("tcp_keepalive_time")
luci.sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time) luci.sys.exec("sysctl -w net.ipv4.tcp_keepalive_time=%s" % tcp_keepalive_time)
@ -514,6 +535,7 @@ function interfaces_status()
mArray.openmptcprouter = {} mArray.openmptcprouter = {}
--mArray.openmptcprouter["version"] = ut.trim(sys.exec("cat /etc/os-release | grep VERSION= | sed -e 's:VERSION=::'")) --mArray.openmptcprouter["version"] = ut.trim(sys.exec("cat /etc/os-release | grep VERSION= | sed -e 's:VERSION=::'"))
mArray.openmptcprouter["version"] = uci:get("openmptcprouter", "settings", "version") or ut.trim(sys.exec("cat /etc/os-release | grep VERSION= | sed -e 's:VERSION=::' -e 's/^.//' -e 's/.$//'")) mArray.openmptcprouter["version"] = uci:get("openmptcprouter", "settings", "version") or ut.trim(sys.exec("cat /etc/os-release | grep VERSION= | sed -e 's:VERSION=::' -e 's/^.//' -e 's/.$//'"))
mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", "vps", "omr_version") or ""
mArray.openmptcprouter["latest_version_omr"] = uci:get("openmptcprouter", "latest_versions", "omr") or "" mArray.openmptcprouter["latest_version_omr"] = uci:get("openmptcprouter", "latest_versions", "omr") or ""
mArray.openmptcprouter["latest_version_vps"] = uci:get("openmptcprouter", "latest_versions", "vps") or "" mArray.openmptcprouter["latest_version_vps"] = uci:get("openmptcprouter", "latest_versions", "vps") or ""
@ -540,7 +562,7 @@ function interfaces_status()
local tracker_ip = "" local tracker_ip = ""
if mArray.openmptcprouter["dns"] == true then if mArray.openmptcprouter["dns"] == true then
-- shadowsocksaddr -- shadowsocksaddr
mArray.openmptcprouter["ss_addr"] = uci:get("openmptcprouter","vps","ipv4") or "" mArray.openmptcprouter["ss_addr"] = uci:get("openmptcprouter","vps","public_detected_ipv4") or ""
if mArray.openmptcprouter["ss_addr"] == "" then if mArray.openmptcprouter["ss_addr"] == "" then
tracker_ip = uci:get("shadowsocks-libev","tracker","local_address") or "" tracker_ip = uci:get("shadowsocks-libev","tracker","local_address") or ""
if tracker_ip ~= "" then if tracker_ip ~= "" then
@ -552,7 +574,7 @@ function interfaces_status()
-- wanaddr -- wanaddr
mArray.openmptcprouter["wan_addr"] = sys.exec("wget -4 -qO- -T 1 http://ip.openmptcprouter.com") mArray.openmptcprouter["wan_addr"] = sys.exec("wget -4 -qO- -T 1 http://ip.openmptcprouter.com")
if mArray.openmptcprouter["ipv6"] == "enabled" then if mArray.openmptcprouter["ipv6"] == "enabled" then
mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","vps","ipv6") or "" mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","vps","public_detected_ipv6") or ""
if mArray.openmptcprouter["wan_addr6"] == "" then if mArray.openmptcprouter["wan_addr6"] == "" then
mArray.openmptcprouter["wan_addr6"] = sys.exec("wget -6 -qO- -T 1 http://ipv6.openmptcprouter.com") mArray.openmptcprouter["wan_addr6"] = sys.exec("wget -6 -qO- -T 1 http://ipv6.openmptcprouter.com")
end end
@ -569,6 +591,11 @@ function interfaces_status()
end end
end end
-- Get VPS info
mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter","vps","kernel") or ""
mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter","vps","machine") or ""
mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter","vps","omr_version") or ""
-- Check openmptcprouter service are running -- Check openmptcprouter service are running
mArray.openmptcprouter["tun_service"] = false mArray.openmptcprouter["tun_service"] = false
mArray.openmptcprouter["tun_state"] = "" mArray.openmptcprouter["tun_state"] = ""
@ -659,6 +686,8 @@ function interfaces_status()
mArray.openmptcprouter["loadavg"] = sys.exec("cat /proc/loadavg 2>/dev/null"):match("[%d%.]+ [%d%.]+ [%d%.]+") mArray.openmptcprouter["loadavg"] = sys.exec("cat /proc/loadavg 2>/dev/null"):match("[%d%.]+ [%d%.]+ [%d%.]+")
mArray.openmptcprouter["uptime"] = sys.exec("cat /proc/uptime 2>/dev/null"):match("[%d%.]+") mArray.openmptcprouter["uptime"] = sys.exec("cat /proc/uptime 2>/dev/null"):match("[%d%.]+")
mArray.openmptcprouter["vps_status"] = "DOWN"
-- overview status -- overview status
mArray.wans = {} mArray.wans = {}
mArray.tunnels = {} mArray.tunnels = {}
@ -753,6 +782,7 @@ function interfaces_status()
connectivity = "WARNING" connectivity = "WARNING"
end end
else else
mArray.openmptcprouter["vps_status"] = "UP"
server_ping = "UP" server_ping = "UP"
latency = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | cut -d '/' -s -f5 | cut -d '.' -f1")) latency = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | cut -d '/' -s -f5 | cut -d '.' -f1"))
end end
@ -927,29 +957,6 @@ function _ipv6_discover(interface)
return ra6_result return ra6_result
end end
function mptcp_check_trace(iface)
luci.http.prepare_content("text/plain")
local tracebox
local uci = require "luci.model.uci".cursor()
local interface = get_device(iface)
local server = uci:get("shadowsocks-libev", "sss0", "server") or ""
if server == "" then return end
if interface == "" then
tracebox = io.popen("tracebox -s /usr/share/tracebox/omr-mptcp-trace.lua " .. server)
else
tracebox = io.popen("tracebox -s /usr/share/tracebox/omr-mptcp-trace.lua -i " .. interface .. " " .. server)
end
if tracebox then
while true do
local ln = tracebox:read("*l")
if not ln then break end
luci.http.write(ln)
luci.http.write("\n")
end
end
return
end
function set_ipv6_state(disable_ipv6) function set_ipv6_state(disable_ipv6)
-- Disable/Enable IPv6 support -- Disable/Enable IPv6 support
luci.sys.exec("sysctl -w net.ipv6.conf.all.disable_ipv6=%s" % disable_ipv6) luci.sys.exec("sysctl -w net.ipv6.conf.all.disable_ipv6=%s" % disable_ipv6)
@ -980,16 +987,16 @@ function set_ipv6_state(disable_ipv6)
else else
-- ucic:set("dhcp","lan","dhcpv6","server") -- ucic:set("dhcp","lan","dhcpv6","server")
-- ucic:set("dhcp","lan","ra","server") -- ucic:set("dhcp","lan","ra","server")
-- ucic:set("dhcp","lan","ra_default","0") -- ucic:set("dhcp","lan","ra_default","1")
ucic:set("shadowsocks-libev","hi","local_address","::") ucic:set("shadowsocks-libev","hi","local_address","::")
end end
ucic:save("dhcp") ucic:save("dhcp")
ucic:commit("dhcp") ucic:commit("dhcp")
if disable_ipv6 == "1" then --if disable_ipv6 == "1" then
luci.sys.exec("/etc/init.d/odhcpd stop >/dev/null 2>&1") -- luci.sys.exec("/etc/init.d/odhcpd stop >/dev/null 2>&1")
luci.sys.exec("/etc/init.d/odhcpd disable >/dev/null 2>&1") -- luci.sys.exec("/etc/init.d/odhcpd disable >/dev/null 2>&1")
--else --else
-- luci.sys.exec("/etc/init.d/odhcpd start >/dev/null 2>&1") -- luci.sys.exec("/etc/init.d/odhcpd start >/dev/null 2>&1")
-- luci.sys.exec("/etc/init.d/odhcpd enable >/dev/null 2>&1") -- luci.sys.exec("/etc/init.d/odhcpd enable >/dev/null 2>&1")
end --end
end end

View file

@ -1,73 +0,0 @@
<%+header%>
<%
local uci = require("luci.model.uci").cursor()
local sys = require "luci.sys"
local ifaces = sys.net:devices()
local net = require "luci.model.network".init()
%>
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.193.28471-ee087a1"></script>
<script type="text/javascript">//<![CDATA[
var stxhr = new XHR();
function update_mptcp(interface)
{
var trace = document.getElementById('tracebox');
if (trace)
{
trace.innerHTML =
'<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' + '<%:Waiting for command to complete...%>'
;
stxhr.post('<%=url('admin/system/openmptcprouter')%>/mptcp_check_trace/' + interface, { token: '<%=token%>' },
function(x)
{
if (x.responseText)
{
trace.innerHTML = String.format('<pre>%s</pre>', x.responseText );
} else {
trace.innerHTML = '<pre><%:Error%></pre>';
}
}
);
}
}
//]]></script>
<% if stderr and #stderr > 0 then %><pre class="error"><%=pcdata(stderr)%></pre><% end %>
<form class="inline" method="post" action="<%=url('admin/system/openmptcprouter/mptcp_check_trace')%>">
<div class="cbi-map">
<h2 name="content"><%:MPTCP Support Check%></h2>
<div class="cbi-map-descr"><%:Check if MPTCP between interface and server is working.%></div>
<fieldset class="cbi-section" id="networks">
<legend><%:Settings%></legend>
<div class="cbi-section-descr"></div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Interface%></label>
<div class="cbi-value-field">
<select class="cbi-input-select" name="interface" size="1">
<%
for _, iface in ipairs(net:get_networks()) do
local ifname = iface:name()
local multipath = uci:get("network",ifname,"multipath")
if multipath ~= "off" then
%>
<option value="<%=ifname%>"><%=ifname%></option>
<%
end
end
%>
</select>
</div>
</div>
<input type="button" value="<%:Test%>" class="cbi-button cbi-button-apply" onclick="update_mptcp(this.form.interface.value)" />
</fieldset>
</div>
</form>
<div class="cbi-section">
<span id="tracebox"></span>
</div>
<%+footer%>

View file

@ -5,6 +5,26 @@
<div class="cbi-map"> <div class="cbi-map">
<h2 name="content"><%:Advanced Settings%></h2> <h2 name="content"><%:Advanced Settings%></h2>
<fieldset class="cbi-section" id="networks"> <fieldset class="cbi-section" id="networks">
<legend><%:VPS settings%></legend>
<div class="cbi-section-descr"></div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Redirects all ports from VPS to OpenMPTCProuter%></label>
<div class="cbi-value-field">
<input type="checkbox" name="redirect_ports" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("openmptcprouter","vps","redirect_ports") == "1" then %>checked<% end %>>
</div>
</div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Enable ShadowSocks OBFS%></label>
<div class="cbi-value-field">
<input type="checkbox" name="obfs" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("shadowsocks-libev","tracker","obfs") == "1" then %>checked<% end %>>
<br />
<div class="cbi-value-description">
<%:OBFS will be enabled on both side%>
</div>
</div>
</div>
</fieldset>
<fieldset class="cbi-section" id="networks">
<legend><%:Networks settings%></legend> <legend><%:Networks settings%></legend>
<div class="cbi-section-descr"></div> <div class="cbi-section-descr"></div>
<div class="cbi-value"> <div class="cbi-value">
@ -35,16 +55,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Enable ShadowSocks OBFS%></label>
<div class="cbi-value-field">
<input type="checkbox" name="obfs" class="cbi-input-checkbox" value="1" <% if luci.model.uci.cursor():get("shadowsocks-libev","tracker","obfs") == "1" then %>checked<% end %>>
<br />
<div class="cbi-value-description">
<%:OBFS must be enabled on VPS%>
</div>
</div>
</div>
</fieldset> </fieldset>
<% if nixio.fs.access("/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq") then %> <% if nixio.fs.access("/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq") then %>
<fieldset class="cbi-section" id="system"> <fieldset class="cbi-section" id="system">

View file

@ -22,7 +22,13 @@
-- Copyright 2018 Ycarus (Yannick Chabanois) ycarus@zugaina.org -- Copyright 2018 Ycarus (Yannick Chabanois) ycarus@zugaina.org
-- --
-- Small changes to make this work with OpenMPTCProuter -- Small changes to make this work with OpenMPTCProuter
-- New features: DNS detection, IPv6 route received,... -- New features:
-- * DNS detection
-- * IPv6 route received
-- * latest version available
-- * MPTCP server status
-- * Server status, errors,icon,...
-- * Many tests
-%> -%>
<%+header%> <%+header%>
<link rel="stylesheet" type="text/css" href="<%=resource%>/openmptcprouter/css/wanstatus.css?v=git-18.120.38690-2678b12"/> <link rel="stylesheet" type="text/css" href="<%=resource%>/openmptcprouter/css/wanstatus.css?v=git-18.120.38690-2678b12"/>
@ -37,35 +43,45 @@
{ {
mArray.openmptcprouter.wan_addr=replaceLastNChars(mArray.openmptcprouter.wan_addr,"x",6); mArray.openmptcprouter.wan_addr=replaceLastNChars(mArray.openmptcprouter.wan_addr,"x",6);
mArray.openmptcprouter.wan_addr6=replaceLastNChars(mArray.openmptcprouter.wan_addr6,"x",10); mArray.openmptcprouter.wan_addr6=replaceLastNChars(mArray.openmptcprouter.wan_addr6,"x",10);
mArray.openmptcprouter.service_addr=replaceLastNChars(mArray.openmptcprouter.service_addr,"x",6);
} }
var status = document.getElementById('openmptcprouter_status'); var status = document.getElementById('openmptcprouter_status');
var stepbar = false;
var temp = '<figure class="tree">'; var temp = '<figure class="tree">';
temp += '<ul>'; temp += '<ul>';
if (mArray.openmptcprouter) if (mArray.openmptcprouter)
{ {
temp += '<li class="remote-from-lease">';
temp += '<a href="#">';
var equipmentIcon = '<img src="<%=resource%>/computer.png" />';
if (mArray.openmptcprouter.remote_from_lease) if (mArray.openmptcprouter.remote_from_lease)
{ {
if (stepbar)
stepbar.securedNetwork.status = "done";
temp += '<li class="remote-from-lease">';
temp += '<a href="#">';
var equipmentIcon = '<img src="<%=resource%>/computer.png" />';
var title = String.format('<br /><strong>%s (%s)</strong>', mArray.openmptcprouter.remote_hostname ? mArray.openmptcprouter.remote_hostname : 'You', mArray.openmptcprouter.remote_addr) var title = String.format('<br /><strong>%s (%s)</strong>', mArray.openmptcprouter.remote_hostname ? mArray.openmptcprouter.remote_hostname : 'You', mArray.openmptcprouter.remote_addr)
var statusMessageClass = ""; var statusMessageClass = "";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png"; var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";
var statusMessage = ""; var statusMessage = "";
var content = ""; } else {
var title = String.format("You (%s)", mArray.openmptcprouter.remote_addr);
temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content); var statusMessageClass = "warning";
temp += '</a>' var statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
var statusMessage = "Your IP was not leased by openmptcprouter";
} }
var content = "";
temp += '<li id="networkRootNode"><table><tr><td><a href="#">'; temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content);
temp += '</a>';
temp += '<li id="networkRootNode"><table><tr><td><table>';
if (mArray.wans)
{
for( var j = 0; j < mArray.wans.length; j++ )
{
temp += '<tr class="space"><td></td></tr>';
}
}
temp += '<tr><td></td></tr><tr><td><a href="#" id="omr">';
var equipmentIcon = '<img src="<%=resource%>/overthebox.png" style:"top: 0px;" />'; var equipmentIcon = '<img src="<%=resource%>/overthebox.png" style:"top: 0px;" />';
var title = String.format("openmptcprouter (%s)", mArray.openmptcprouter.wan_addr || mArray.openmptcprouter.ss_addr || mArray.openmptcprouter.local_addr); var title = String.format("OpenMPTCProuter (%s)", mArray.openmptcprouter.local_addr);
var statusMessageClass = ""; var statusMessageClass = "";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png"; var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";
var statusMessage = ""; var statusMessage = "";
@ -75,7 +91,7 @@
{ {
//content += "Version " + mArray.openmptcprouter.version.replace(/\"/g,''); //content += "Version " + mArray.openmptcprouter.version.replace(/\"/g,'');
content += "Version " + mArray.openmptcprouter.version; content += "Version " + mArray.openmptcprouter.version;
if (mArray.openmptcprouter.latest_version_omr != mArray.openmptcprouter.version) if (mArray.openmptcprouter.latest_version_omr != mArray.openmptcprouter.version && mArray.openmptcprouter.latest_version_omr != "")
{ {
content += "<br><i>(Latest available version " + mArray.openmptcprouter.latest_version_omr + ")</i>"; content += "<br><i>(Latest available version " + mArray.openmptcprouter.latest_version_omr + ")</i>";
} }
@ -101,45 +117,27 @@
{ {
for ( dhcpd in mArray.openmptcprouter.dhcpd ) for ( dhcpd in mArray.openmptcprouter.dhcpd )
{ {
if (stepbar)
stepbar.dhcp.status = "done"
var dhcp = mArray.openmptcprouter.dhcpd[dhcpd]; var dhcp = mArray.openmptcprouter.dhcpd[dhcpd];
content += String.format('<span style="text-transform:capitalize;">%s</span> address: %s<br />', dhcp.interface, dhcp.router) content += String.format('<span style="text-transform:capitalize;">%s</span> address: %s<br />', dhcp.interface, dhcp.router);
content += String.format('<span style="text-transform:capitalize;">%s</span> range: %s - %s<br />', dhcp.interface, dhcp.range_start, dhcp.range_end) content += String.format('<span style="text-transform:capitalize;">%s</span> range: %s - %s<br />', dhcp.interface, dhcp.range_start, dhcp.range_end);
} }
} }
else
{
temp += String.format('lan (%s)', mArray.openmptcprouter.local_addr);
}
if (mArray.openmptcprouter.socks_service_enabled == true) { if (mArray.openmptcprouter.socks_service_enabled == true)
{
if (mArray.openmptcprouter.socks_service == false) if (mArray.openmptcprouter.socks_service == false)
{ {
statusMessage += 'ShadowSocks is not running<br/>'; statusMessage += 'ShadowSocks is not running<br/>';
} }
if (mArray.openmptcprouter.server_mptcp == "disabled")
{
statusMessage += 'MPTCP may not be enabled on the server<br/>';
}
} }
if (mArray.openmptcprouter.tun_service == false) if (mArray.openmptcprouter.tun_service == false)
{ {
statusMessage += 'GloryTUN is not running<br/>'; statusMessage += 'GloryTUN is not running<br/>';
} }
if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "")
{
statusMessage += 'No VPS IP address, No WAN IP address<br/>';
}
if (mArray.openmptcprouter.dns == false) if (mArray.openmptcprouter.dns == false)
{ {
statusMessage += 'DNS issue: can\'t resolve hostname<br/>'; statusMessage += 'DNS issue: can\'t resolve hostname<br/>';
} }
if (mArray.openmptcprouter.wan_addr6)
{
content += "IPv6: " + mArray.openmptcprouter.wan_addr6;
content += "<br />";
}
if(statusMessage !== "") if(statusMessage !== "")
{ {
@ -152,7 +150,7 @@
} else if (mArray.openmptcprouter.ss_addr == "") } else if (mArray.openmptcprouter.ss_addr == "")
{ {
statusMessage += 'Can\'t get public IP address from ShadowSocks<br/>'; statusMessage += 'Can\'t get public IP address from ShadowSocks<br/>';
} }
if (mArray.openmptcprouter.tun_state == "DOWN") if (mArray.openmptcprouter.tun_state == "DOWN")
{ {
statusMessage += 'VPN tunnel DOWN<br/>'; statusMessage += 'VPN tunnel DOWN<br/>';
@ -174,7 +172,65 @@
} }
} }
temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content); temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content);
temp += '</a></td>' temp += '</a>';
temp += '</td></tr>';
temp += '<tr><td><div class="vertdash" ></div></td></tr>';
temp += '<tr><td>';
temp += '<a href="#" id="omr-vps">';
var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";
var equipmentIcon = '<img src="<%=resource%>/server.png" />';
if (mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr)
{
var title = String.format("OpenMPTCProuter Server (%s)", mArray.openmptcprouter.wan_addr);
} else if (mArray.openmptcprouter.wan_addr !== "")
{
var title = String.format("Direct output (%s)", mArray.openmptcprouter.wan_addr);
} else {
var title = "No output";
}
content = "";
statusMessage = "";
if (mArray.openmptcprouter.vps_status == "DOWN")
{
statusMessage += 'Can\'t ping server<br/>';
}
if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "")
{
statusMessage += 'No VPS IP address, No WAN IP address<br/>';
}
if (mArray.openmptcprouter.socks_service_enabled == true && mArray.openmptcprouter.ss_addr == "")
{
statusMessage += 'Can\'t get public IP address from ShadowSocks<br/>';
}
if (statusMessage !== "")
{
statusMessageClass = "error";
statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png";
}
if (mArray.openmptcprouter.vps_omr_version)
{
content += "Version " + mArray.openmptcprouter.vps_omr_version;
if (mArray.openmptcprouter.latest_version_vps !== mArray.openmptcprouter.vps_omr_version && mArray.openmptcprouter.latest_version_vps !== "")
{
content += "<br><i>(Latest available version " + mArray.openmptcprouter.latest_version_vps + ")</i>";
}
}
if (mArray.openmptcprouter.server_mptcp == "disabled")
{
statusMessage += 'MPTCP may not be enabled on the server<br/>';
statusMessageClass = "warning";
statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
}
if (mArray.openmptcprouter.wan_addr6)
{
content += "IPv6: " + mArray.openmptcprouter.wan_addr6;
content += '<br />';
}
content += '<br />';
temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content);
temp += '</a></td></tr></table>';
temp += '</td>';
} }
if (mArray.wans) if (mArray.wans)
{ {
@ -241,7 +297,12 @@
} }
var equipmentIcon = String.format('<embed id="modem_%s" onload="setColorSVG(\'modem_%s\', \'%s\')" src="<%=resource%>/modem.svg" />', mArray.wans[i].name, mArray.wans[i].name, mArray.wans[i].color); var equipmentIcon = String.format('<embed id="modem_%s" onload="setColorSVG(\'modem_%s\', \'%s\')" src="<%=resource%>/modem.svg" />', mArray.wans[i].name, mArray.wans[i].name, mArray.wans[i].color);
var title = mArray.wans[i].label + " (" + mArray.wans[i].gateway + ")"; if (mArray.wans[i].gateway !== "")
{
var title = mArray.wans[i].label + " (" + mArray.wans[i].gateway + ")";
} else {
var title = mArray.wans[i].label;
}
//var content = String.format('%s<br />wan address: <strong>%s</strong><br />whois: %s<br />latency: %s ms<br />multipath: %s', stat, wanip, whois, latency, multipath); //var content = String.format('%s<br />wan address: <strong>%s</strong><br />whois: %s<br />latency: %s ms<br />multipath: %s', stat, wanip, whois, latency, multipath);
var content = ""; var content = "";
if(wanip !== '') if(wanip !== '')
@ -305,37 +366,10 @@
temp += '</a></li>'; temp += '</a></li>';
} }
temp += '</ul></td>';
// Check temp += '</tr></table>';
if (mArray.openmptcprouter && mArray.openmptcprouter.remote_from_lease == false)
{
if (stepbar)
{
stepbar.securedNetwork.status = "doing";
}
temp += '<li>';
temp += '<a href="#">';
var equipmentIcon = '<img src="<%=resource%>/computer.png" />';
var title = String.format("You (%s)", mArray.openmptcprouter.remote_addr);
var statusMessageClass = "warning";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
var statusMessage = "Your IP was not leased by openmptcprouter";
//var content = "Please unplug and plug your ethernet cable or turn off and on your Wifi";
var content = ""
temp += getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass,statusMessage,content);
temp += '</a></li>';
}
temp += '</ul></td></tr></table>';
} }
temp += '</li>'; temp += '</li>';
if (mArray.openmptcprouter && mArray.openmptcprouter.remote_from_lease)
temp += '</ul></li>';
// Close tree // Close tree
temp += '</ul>'; temp += '</ul>';
temp += '</figure>'; temp += '</figure>';
@ -361,18 +395,18 @@
function getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass, statusMessage, content) function getNetworkNodeTemplate(equipmentIcon, statusIcon, title, statusMessageClass, statusMessage, content)
{ {
return String.format( '<div class="network-node">' + return String.format('<div class="network-node">' +
'<div class="equipment-icon">%s</div>' + '<div class="equipment-icon">%s</div>' +
'<div class="status-icon"><img src="%s" /></div>' + '<div class="status-icon"><img src="%s" /></div>' +
'<div class="info">' + '<div class="info">' +
'<div class="title">%s</div>' + '<div class="title">%s</div>' +
'<div class="status-message %s">%s</div>' + '<div class="status-message %s">%s</div>' +
'<div class="content">%s</div>' + '<div class="content">%s</div>' +
'<div class="clear"></div>' + '<div class="clear"></div>' +
'</div>' + '</div>' +
'<div class="clear"></div>' + '<div class="clear"></div>' +
'</div>', '</div>',
equipmentIcon, statusIcon, title, statusMessageClass, statusMessage, content); equipmentIcon, statusIcon, title, statusMessageClass, statusMessage, content);
} }
function stringToColour(str) { function stringToColour(str) {

View file

@ -33,13 +33,22 @@ end
%> %>
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.243.49640-2f13420" data-strings="{&#34;path&#34;:{&#34;resource&#34;:&#34;\/luci-static\/resources&#34;,&#34;browser&#34;:&#34;\/cgi-bin\/luci\/admin\/filebrowser&#34;}}"></script> <script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.243.49640-2f13420" data-strings="{&#34;path&#34;:{&#34;resource&#34;:&#34;\/luci-static\/resources&#34;,&#34;browser&#34;:&#34;\/cgi-bin\/luci\/admin\/filebrowser&#34;}}"></script>
<script src="/luci-static/resources/xhr.js?v=git-18.324.48426-65adb4e"></script>
<script>
function jsshowadv() {
if(document.getElementById('showadv').checked){
document.getElementById('advancedsettings').style.display='inline';
} else {
document.getElementById('advancedsettings').style.display='none';
}
}
</script>
<% if stderr and #stderr > 0 then %><pre class="error"><%=pcdata(stderr)%></pre><% end %> <% if stderr and #stderr > 0 then %><pre class="error"><%=pcdata(stderr)%></pre><% end %>
<form class="inline" method="post" action="<%=url('admin/system/openmptcprouter/wizard_add')%>" enctype="multipart/form-data"> <form class="inline" method="post" action="<%=url('admin/system/openmptcprouter/wizard_add')%>" enctype="multipart/form-data">
<div class="cbi-map"> <div class="cbi-map">
<h2 name="content"><%:Wizard%></h2> <h2 name="content"><%:Wizard%></h2>
<fieldset class="cbi-section" id="server"> <fieldset class="cbi-section" id="server">
<legend><%:Server settings%></legend> <legend><%:Server settings%></legend>
<div class="cbi-section-descr"><%:Put the values given by OpenMPTCProuter VPS script.%></div> <div class="cbi-section-descr"><%:Put the values given by OpenMPTCProuter VPS script.%></div>
<div class="cbi-value cbi-value-last" id="server_ip" data-depends="[]" data-index="0"> <div class="cbi-value cbi-value-last" id="server_ip" data-depends="[]" data-index="0">
<label class="cbi-value-title" for="server_ip"><%:Server IP%></label> <label class="cbi-value-title" for="server_ip"><%:Server IP%></label>
@ -66,16 +75,58 @@ end
</div> </div>
</div> </div>
<br /> <br />
<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="1" <% if tonumber((luci.sys.exec("sysctl net.ipv6.conf.all.disable_ipv6")):match(" %d+")) == 0 then %>checked<% end %> />
<br />
<div class="cbi-value-description">
<%:You should disable IPv6 here if server doesn't provide IPv6.%>
</div>
</div>
</div>
<br />
<div class="cbi-value">
<label class="cbi-value-title"><%:OpenMPTCProuter VPS key%></label>
<div class="cbi-value-field">
<input type="text" name="openmptcprouter_vps_key" placeholder="OpenMPTCProuter VPS key" class="cbi-input-text" value="<%=uci:get("openmptcprouter","vps","password")%>" data-type="base64">
<br />
<div class="cbi-value-description">
<%:Key to configure and retrieve others keys from OpenMPTCProuter VPS. Empty to disable.%>
</div>
</div>
</div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Advanced settings%></label>
<div class="cbi-value-field">
<input type="checkbox" class="cbi-input-checkbox" id="showadv" value="1" onclick="jsshowadv()" />
</div>
</div>
</fieldset>
<span id="advancedsettings" style="display:none;">
<fieldset class="cbi-section" id="shadowsocks">
<legend><%:ShadowSocks settings%></legend>
<div class="cbi-section-descr"><%:By default ShadowSocks is used for TCP traffic.%></div>
<div class="cbi-value"> <div class="cbi-value">
<label class="cbi-value-title"><%:ShadowSocks key%></label> <label class="cbi-value-title"><%:ShadowSocks key%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input type="text" name="shadowsocks_key" placeholder="ShadowSocks key" class="cbi-input-text" value="<%=uci:get("shadowsocks-libev","sss0","key")%>" data-type="base64"> <input type="text" name="shadowsocks_key" placeholder="ShadowSocks key" class="cbi-input-text" value="<%=uci:get("shadowsocks-libev","sss0","key")%>" data-type="base64">
<br /> <br />
<div class="cbi-value-description"> <div class="cbi-value-description">
<%:ShadowSocks is used for TCP. Empty to disable.%> <%:ShadowSocks is used for TCP.%>
</div> </div>
</div> </div>
</div> </div>
<div class="cbi-value">
<label class="cbi-value-title"><%:Disable ShadowSocks%></label>
<div class="cbi-value-field">
<input class="cbi-input-checkbox" type="checkbox" name="disableshadowsocks" value="1" <% if uci:get("shadowsocks-libev","sss0","disabled") == 1 then %>checked<% end %> />
</div>
</div>
</fieldset>
<fieldset class="cbi-section" id="vpn">
<legend><%:VPN settings%></legend>
<div class="cbi-section-descr"><%:By default VPN is used for any traffic that is not TCP.%></div>
<% if nixio.fs.access("/usr/sbin/glorytun") or nixio.fs.access("/usr/sbin/glorytun-udp") then %> <% if nixio.fs.access("/usr/sbin/glorytun") or nixio.fs.access("/usr/sbin/glorytun-udp") then %>
<div class="cbi-value"> <div class="cbi-value">
<label class="cbi-value-title"><%:Glorytun key%></label> <label class="cbi-value-title"><%:Glorytun key%></label>
@ -129,17 +180,8 @@ end
</div> </div>
</div> </div>
</div> </div>
<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="1" <% if tonumber((luci.sys.exec("sysctl net.ipv6.conf.all.disable_ipv6")):match(" %d+")) == 0 then %>checked<% end %> />
<br />
<div class="cbi-value-description">
<%:You should disable IPv6 here if server doesn't provide IPv6.%>
</div>
</div>
</div>
</fieldset> </fieldset>
</span>
<fieldset class="cbi-section" id="interfaces"> <fieldset class="cbi-section" id="interfaces">
<legend><%:Interfaces settings%></legend> <legend><%:Interfaces settings%></legend>
<div class="cbi-section-descr"><%:You must disable DHCP on your modems and set IP in different networks.%></div> <div class="cbi-section-descr"><%:You must disable DHCP on your modems and set IP in different networks.%></div>
@ -155,26 +197,40 @@ end
<h3><%=ifname%></h3> <h3><%=ifname%></h3>
<fieldset class="cbi-section-node" id="cbi-openmptcprouter-<%=ifname%>"> <fieldset class="cbi-section-node" id="cbi-openmptcprouter-<%=ifname%>">
<input type="hidden" name="intf.<%=ifname%>" value="<%=ifname%>" /> <input type="hidden" name="intf.<%=ifname%>" value="<%=ifname%>" />
<div class="cbi-value"> <div class="cbi-value" id="cbi-network-<%=ifname%>-proto" data-index="1">
<label class="cbi-value-title"><%:Protocol%></label>
<div class="cbi-value-field">
<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" then %>selected="selected"<% end %>><%:Static address%></option>
<option id="cbid.network.<%=ifname%>.proto-dhcp" value="dhcp"<% if uci:get("network",ifname,"proto") == "dhcp" then %>selected="selected"<% end %>><%:DHCP%></option>
<option id="cbid.network.<%=ifname%>.proto-other" value="other"<% if uci:get("network",ifname,"proto") ~= "static" and uci:get("network",ifname,"proto") ~= "dhcp" then %>selected="selected"<% end %>><%:Other%></option>
</select>
<br />
<div class="cbi-value-description">
<%:You can use DHCP if you have multiple real ethernet ports. Select other if you want to use another protocol available in Network Interfaces page.%>
</div>
</div>
</div>
<div class="cbi-value" id="cbi-network-<%=ifname%>-address" data-depends="[{&#34;cbid.network.<%=ifname%>.proto&#34;:&#34;static&#34;}]" data-index="2">
<label class="cbi-value-title"><%:IPv4 address%></label> <label class="cbi-value-title"><%:IPv4 address%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input type="text" name="cbid.network.<%=ifname%>.ipaddr" class="cbi-input-text" value="<%=uci:get("network",ifname,"ipaddr")%>" data-type="ip4addr"> <input type="text" id="cbid.network.<%=ifname%>.ipaddr" name="cbid.network.<%=ifname%>.ipaddr" class="cbi-input-text" value="<%=uci:get("network",ifname,"ipaddr")%>" data-type="ip4addr">
<br /> <br />
<div class="cbi-value-description"> <div class="cbi-value-description">
<%:Set an IP in the same network as the modem%> <%:Set an IP in the same network as the modem%>
</div> </div>
</div> </div>
</div> </div>
<div class="cbi-value"> <div class="cbi-value" id="cbi-network-<%=ifname%>-netmask" data-depends="[{&#34;cbid.network.<%=ifname%>.proto&#34;:&#34;static&#34;}]" data-index="3">
<label class="cbi-value-title"><%:IPv4 netmask%></label> <label class="cbi-value-title"><%:IPv4 netmask%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input type="text" name="cbid.network.<%=ifname%>.netmask" class="cbi-input-text" value="<%=uci:get("network",ifname,"netmask") or "255.255.255.0"%>" data-type="ip4addr"> <input type="text" id="cbid.network.<%=ifname%>.netmask" name="cbid.network.<%=ifname%>.netmask" class="cbi-input-text" value="<%=uci:get("network",ifname,"netmask") or "255.255.255.0"%>" data-type="ip4addr">
</div> </div>
</div> </div>
<div class="cbi-value"> <div class="cbi-value" id="cbi-network-<%=ifname%>-gateway" data-depends="[{&#34;cbid.network.<%=ifname%>.proto&#34;:&#34;static&#34;}]" data-index="4">
<label class="cbi-value-title"><%:IPv4 gateway%></label> <label class="cbi-value-title"><%:IPv4 gateway%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input type="text" name="cbid.network.<%=ifname%>.gateway" class="cbi-input-text" value="<%=uci:get("network",ifname,"gateway")%>" data-type="ip4addr"> <input type="text" id="cbid.network.<%=ifname%>.gateway" name="cbid.network.<%=ifname%>.gateway" class="cbi-input-text" value="<%=uci:get("network",ifname,"gateway")%>" data-type="ip4addr">
<br /> <br />
<div class="cbi-value-description"> <div class="cbi-value-description">
<%:Set here IP of the modem%> <%:Set here IP of the modem%>
@ -192,7 +248,7 @@ end
upload = uci:get("qos",ifname,"upload") upload = uci:get("qos",ifname,"upload")
end end
%> %>
<div class="cbi-value"> <div class="cbi-value" data-index="5">
<label class="cbi-value-title"><%:Download speed (Kb/s)%></label> <label class="cbi-value-title"><%:Download speed (Kb/s)%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input type="text" name="cbid.sqm.<%=ifname%>.download" class="cbi-input-text" value="<%=download%>" data-type="uinteger"> <input type="text" name="cbid.sqm.<%=ifname%>.download" class="cbi-input-text" value="<%=download%>" data-type="uinteger">
@ -202,7 +258,7 @@ end
</div> </div>
</div> </div>
</div> </div>
<div class="cbi-value"> <div class="cbi-value" data-index="6">
<label class="cbi-value-title"><%:Upload speed (Kb/s)%></label> <label class="cbi-value-title"><%:Upload speed (Kb/s)%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input type="text" name="cbid.sqm.<%=ifname%>.upload" class="cbi-input-text" value="<%=upload%>" data-type="uinteger"> <input type="text" name="cbid.sqm.<%=ifname%>.upload" class="cbi-input-text" value="<%=upload%>" data-type="uinteger">

View file

@ -18,6 +18,15 @@ msgstr "Ajouter une interface"
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "Configuration avancé" msgstr "Configuration avancé"
msgid "Advanced settings"
msgstr "Configuration avancé"
msgid "By default ShadowSocks is used for TCP traffic."
msgstr "ShadowSocks est utilisé pour le trafic TCP."
msgid "By default VPN is used for any traffic that is not TCP."
msgstr "Par défaut le VPN est utilisé pour le trafic n'étant pas du TCP."
msgid "Check if MPTCP between interface and server is working." msgid "Check if MPTCP between interface and server is working."
msgstr "Vérifie le fonctionnement de MPTCP entre l'interface et le serveur." msgstr "Vérifie le fonctionnement de MPTCP entre l'interface et le serveur."
@ -25,6 +34,9 @@ msgid "Connection with lowest RTT is used as master interface"
msgstr "" msgstr ""
"La connexion avec le plus faible RTT est utilisé en temps qu'interface maître" "La connexion avec le plus faible RTT est utilisé en temps qu'interface maître"
msgid "DHCP"
msgstr ""
msgid "Default VPN" msgid "Default VPN"
msgstr "VPN par défaut" msgstr "VPN par défaut"
@ -34,6 +46,9 @@ msgstr "Supprimer"
msgid "Disable IPv6" msgid "Disable IPv6"
msgstr "Désactiver IPv6" msgstr "Désactiver IPv6"
msgid "Disable ShadowSocks"
msgstr "Désactiver ShadowSocks"
msgid "Download speed (Kb/s)" msgid "Download speed (Kb/s)"
msgstr "Vitesse de téléchargement (Kb/s)" msgstr "Vitesse de téléchargement (Kb/s)"
@ -76,6 +91,13 @@ msgstr "Nom de l'interface"
msgid "Interfaces settings" msgid "Interfaces settings"
msgstr "Paramètres des interfaces" msgstr "Paramètres des interfaces"
msgid ""
"Key to configure and retrieve others keys from OpenMPTCProuter VPS. Empty to "
"disable."
msgstr ""
"Clef pour configurer et récupérer les autres clefs depuis OpenMPTCProuter "
"VPS. Vide pour désactiver."
msgid "Loading" msgid "Loading"
msgstr "Chargement" msgstr "Chargement"
@ -100,18 +122,30 @@ msgstr "Aperçu réseau"
msgid "Networks settings" msgid "Networks settings"
msgstr "Paramètres réseaux" msgstr "Paramètres réseaux"
msgid "OBFS must be enabled on VPS" msgid "OBFS will be enabled on both side"
msgstr "OBFS doit être activé sur le VPS" msgstr "OBFS sera activé des deux côtés"
msgid "OpenMPTCProuter" msgid "OpenMPTCProuter"
msgstr "" msgstr ""
msgid "OpenMPTCProuter VPS key"
msgstr "Clef d'OpenMPTCProuter VPS"
msgid "OpenVPN key" msgid "OpenVPN key"
msgstr "Clef OpenVPN" msgstr "Clef OpenVPN"
msgid "Other"
msgstr "Autre"
msgid "Protocol"
msgstr "Protocole"
msgid "Put the values given by OpenMPTCProuter VPS script." msgid "Put the values given by OpenMPTCProuter VPS script."
msgstr "Mettez les valeurs données par le script OpenMPTCProuter VPS." msgstr "Mettez les valeurs données par le script OpenMPTCProuter VPS."
msgid "Redirects all ports from VPS to OpenMPTCProuter"
msgstr "Rédiriger tous les ports du VPS vers OpenMPTCProuter"
msgid "Save & Apply" msgid "Save & Apply"
msgstr "Sauvegarder et Appliquer" msgstr "Sauvegarder et Appliquer"
@ -160,12 +194,18 @@ msgstr "Paramètres"
msgid "Settings Wizard" msgid "Settings Wizard"
msgstr "Assistant de configuration" msgstr "Assistant de configuration"
msgid "ShadowSocks is used for TCP. Empty to disable." msgid "ShadowSocks is used for TCP."
msgstr "ShadowSocks est utilisé pour le TCP. Videz pour désactiver." msgstr "ShadowSocks est utilisé pour le TCP."
msgid "ShadowSocks key" msgid "ShadowSocks key"
msgstr "Clef de ShadowSocks" msgstr "Clef de ShadowSocks"
msgid "ShadowSocks settings"
msgstr "Paramètres de ShadowSocks"
msgid "Static address"
msgstr "Adresse statique"
msgid "Status" msgid "Status"
msgstr "État" msgstr "État"
@ -178,12 +218,26 @@ msgstr "Teste"
msgid "Upload speed (Kb/s)" msgid "Upload speed (Kb/s)"
msgstr "Vitesse d'envoi (Kb/s)" msgstr "Vitesse d'envoi (Kb/s)"
msgid "VPN settings"
msgstr "Paramètres du VPN"
msgid "VPS settings"
msgstr "Paramètres du VPS"
msgid "Waiting for command to complete..." msgid "Waiting for command to complete..."
msgstr "En attente de la réponse de la commande..." msgstr "En attente de la réponse de la commande..."
msgid "Wizard" msgid "Wizard"
msgstr "Assistant" msgstr "Assistant"
msgid ""
"You can use DHCP if you have multiple real ethernet ports. Select other if "
"you want to use another protocol available in Network Interfaces page."
msgstr ""
"Vous pouvez utiliser DHCP si vous avez plusieurs ports réseau physique. "
"Choisissez autre si vous utilisez un autre protocole dans la page Réseau "
"Interfaces."
msgid "You must disable DHCP on your modems and set IP in different networks." msgid "You must disable DHCP on your modems and set IP in different networks."
msgstr "" msgstr ""
"Vous devez désactiver DHCP sur vos modems et configurer leurs IP dans des " "Vous devez désactiver DHCP sur vos modems et configurer leurs IP dans des "
@ -199,6 +253,12 @@ msgstr ""
msgid "You should disable IPv6 here if server doesn't provide IPv6." msgid "You should disable IPv6 here if server doesn't provide IPv6."
msgstr "Vous devriez désactiver IPv6 ici si le serveur ne supporte pas IPv6." msgstr "Vous devriez désactiver IPv6 ici si le serveur ne supporte pas IPv6."
#~ msgid "OBFS must be enabled on VPS"
#~ msgstr "OBFS doit être activé sur le VPS"
#~ msgid "ShadowSocks is used for TCP. Empty to disable."
#~ msgstr "ShadowSocks est utilisé pour le TCP. Videz pour désactiver."
#~ msgid "" #~ msgid ""
#~ "Set value between 80-95% of max download speed link. Empty to disable." #~ "Set value between 80-95% of max download speed link. Empty to disable."
#~ msgstr "" #~ msgstr ""

View file

@ -7,12 +7,24 @@ msgstr ""
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "" msgstr ""
msgid "Advanced settings"
msgstr ""
msgid "By default ShadowSocks is used for TCP traffic."
msgstr ""
msgid "By default VPN is used for any traffic that is not TCP."
msgstr ""
msgid "Check if MPTCP between interface and server is working." msgid "Check if MPTCP between interface and server is working."
msgstr "" msgstr ""
msgid "Connection with lowest RTT is used as master interface" msgid "Connection with lowest RTT is used as master interface"
msgstr "" msgstr ""
msgid "DHCP"
msgstr ""
msgid "Default VPN" msgid "Default VPN"
msgstr "" msgstr ""
@ -22,6 +34,9 @@ msgstr ""
msgid "Disable IPv6" msgid "Disable IPv6"
msgstr "" msgstr ""
msgid "Disable ShadowSocks"
msgstr ""
msgid "Download speed (Kb/s)" msgid "Download speed (Kb/s)"
msgstr "" msgstr ""
@ -64,6 +79,11 @@ msgstr ""
msgid "Interfaces settings" msgid "Interfaces settings"
msgstr "" msgstr ""
msgid ""
"Key to configure and retrieve others keys from OpenMPTCProuter VPS. Empty to "
"disable."
msgstr ""
msgid "Loading" msgid "Loading"
msgstr "" msgstr ""
@ -88,18 +108,30 @@ msgstr ""
msgid "Networks settings" msgid "Networks settings"
msgstr "" msgstr ""
msgid "OBFS must be enabled on VPS" msgid "OBFS will be enabled on both side"
msgstr "" msgstr ""
msgid "OpenMPTCProuter" msgid "OpenMPTCProuter"
msgstr "" msgstr ""
msgid "OpenMPTCProuter VPS key"
msgstr ""
msgid "OpenVPN key" msgid "OpenVPN key"
msgstr "" msgstr ""
msgid "Other"
msgstr ""
msgid "Protocol"
msgstr ""
msgid "Put the values given by OpenMPTCProuter VPS script." msgid "Put the values given by OpenMPTCProuter VPS script."
msgstr "" msgstr ""
msgid "Redirects all ports from VPS to OpenMPTCProuter"
msgstr ""
msgid "Save & Apply" msgid "Save & Apply"
msgstr "" msgstr ""
@ -141,12 +173,18 @@ msgstr ""
msgid "Settings Wizard" msgid "Settings Wizard"
msgstr "" msgstr ""
msgid "ShadowSocks is used for TCP. Empty to disable." msgid "ShadowSocks is used for TCP."
msgstr "" msgstr ""
msgid "ShadowSocks key" msgid "ShadowSocks key"
msgstr "" msgstr ""
msgid "ShadowSocks settings"
msgstr ""
msgid "Static address"
msgstr ""
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@ -159,12 +197,23 @@ msgstr ""
msgid "Upload speed (Kb/s)" msgid "Upload speed (Kb/s)"
msgstr "" msgstr ""
msgid "VPN settings"
msgstr ""
msgid "VPS settings"
msgstr ""
msgid "Waiting for command to complete..." msgid "Waiting for command to complete..."
msgstr "" msgstr ""
msgid "Wizard" msgid "Wizard"
msgstr "" msgstr ""
msgid ""
"You can use DHCP if you have multiple real ethernet ports. Select other if "
"you want to use another protocol available in Network Interfaces page."
msgstr ""
msgid "You must disable DHCP on your modems and set IP in different networks." msgid "You must disable DHCP on your modems and set IP in different networks."
msgstr "" msgstr ""

View file

@ -1,4 +1,6 @@
#!/bin/sh /etc/rc.common #!/bin/sh /etc/rc.common
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
# Released under GPL 3. See LICENSE for the full terms.
START=5 START=5
@ -38,17 +40,17 @@ set_ipv6_state() {
uci -q set shadowsocks-libev.hi.local_address="::" uci -q set shadowsocks-libev.hi.local_address="::"
fi fi
uci -q commit dhcp uci -q commit dhcp
if [ "$disable_ipv6" == "1" ]; then #if [ "$disable_ipv6" == "1" ]; then
/etc/init.d/odhcpd stop >/dev/null 2>&1 # /etc/init.d/odhcpd stop >/dev/null 2>&1
/etc/init.d/odhcpd disable >/dev/null 2>&1 # /etc/init.d/odhcpd disable >/dev/null 2>&1
fi #fi
} }
start_service() { start_service() {
local scaling_min_freq scaling_max_freq local scaling_min_freq scaling_max_freq
config_load openmptcprouter #config_load openmptcprouter
config_foreach omr_intf_del interface #config_foreach omr_intf_del interface
config_load network config_load network
config_foreach omr_intf_set interface config_foreach omr_intf_set interface

View file

@ -27,9 +27,9 @@ if [ "$(uci -q ucitrack.@network[-1].affects | grep openmptcprouter)" = "" ]; th
commit ucitrack commit ucitrack
EOF EOF
fi fi
if [ "$(uci -q get openmptcprouter.vps)" = "" ]; then if [ "$(uci -q get openmptcprouter.vps)" != "server" ]; then
uci -q batch <<-EOF uci -q batch <<-EOF
set openmptcprouter.vps=vps set openmptcprouter.vps=server
commit openmptcprouter commit openmptcprouter
EOF EOF
fi fi