mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-12 18:41:51 +00:00
Support multiple server in wizard and status
This commit is contained in:
parent
107e266fcd
commit
6ce9bb2827
3 changed files with 155 additions and 107 deletions
|
@ -32,9 +32,26 @@ function interface_from_device(dev)
|
|||
end
|
||||
|
||||
function wizard_add()
|
||||
local gostatus = true
|
||||
-- Add new server
|
||||
local add_server = luci.http.formvalue("add_server") or ""
|
||||
local add_server_name = luci.http.formvalue("add_server_name") or ""
|
||||
if add_server ~= "" and add_server_name ~= "" then
|
||||
ucic:set("openmptcprouter",add_server_name,"server")
|
||||
gostatus = false
|
||||
end
|
||||
|
||||
-- Remove existing server
|
||||
local delete_server = luci.http.formvaluetable("delete_server") or ""
|
||||
if delete_server ~= "" then
|
||||
for server, _ in pairs(delete_server) do
|
||||
ucic:delete("openmptcprouter",server)
|
||||
end
|
||||
end
|
||||
|
||||
-- Add new interface
|
||||
local add_interface = luci.http.formvalue("add_interface") or ""
|
||||
local add_interface_ifname = luci.http.formvalue("add_interface_ifname") or ""
|
||||
local gostatus = true
|
||||
if add_interface ~= "" then
|
||||
local i = 1
|
||||
local multipath_master = false
|
||||
|
@ -114,6 +131,7 @@ function wizard_add()
|
|||
gostatus = false
|
||||
end
|
||||
|
||||
-- Remove existing interface
|
||||
local delete_intf = luci.http.formvaluetable("delete") or ""
|
||||
if delete_intf ~= "" then
|
||||
for intf, _ in pairs(delete_intf) do
|
||||
|
@ -199,74 +217,91 @@ function wizard_add()
|
|||
ucic:commit("network")
|
||||
end
|
||||
|
||||
-- Get all servers ips
|
||||
local server_ip = luci.http.formvalue("server_ip") or ""
|
||||
-- We have an IP, so set it everywhere
|
||||
if server_ip ~= "" then
|
||||
local ss_ip
|
||||
-- Check if we have more than one IP, in this case use Nginx HA
|
||||
if (type(server_ip) == "table") then
|
||||
local ss_servers = {}
|
||||
local vpn_servers = {}
|
||||
local k = 0
|
||||
for _, ip in pairs(server_ip) do
|
||||
-- Retrieve all server settings
|
||||
local serversnb = 0
|
||||
local servers = luci.http.formvaluetable("server")
|
||||
for server, _ in pairs(servers) do
|
||||
local server_ip = luci.http.formvalue("%s.server_ip" % server) or ""
|
||||
|
||||
-- OpenMPTCProuter VPS
|
||||
local openmptcprouter_vps_key = luci.http.formvalue("%s.openmptcprouter_vps_key" % server) or ""
|
||||
ucic:set("openmptcprouter",server,"server")
|
||||
ucic:set("openmptcprouter",server,"username","openmptcprouter")
|
||||
ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key)
|
||||
ucic:set("openmptcprouter",server,"get_config","1")
|
||||
ucic:set("openmptcprouter",server,"ip",server_ip)
|
||||
ucic:save("openmptcprouter")
|
||||
if server_ip ~= "" then
|
||||
serversnb = serversnb + 1
|
||||
end
|
||||
end
|
||||
|
||||
local ss_servers_nginx = {}
|
||||
local ss_servers_ha = {}
|
||||
local vpn_servers = {}
|
||||
local k = 0
|
||||
local ss_ip
|
||||
|
||||
for server, _ in pairs(servers) do
|
||||
local server_ip = luci.http.formvalue("%s.server_ip" % server) or ""
|
||||
-- We have an IP, so set it everywhere
|
||||
if server_ip ~= "" then
|
||||
-- Check if we have more than one IP, in this case use Nginx HA
|
||||
if serversnb > 1 then
|
||||
if k == 0 then
|
||||
ss_ip=ip
|
||||
table.insert(ss_servers,ip .. ":65101 max_fails=3 fail_timeout=30s")
|
||||
ss_ip=server_ip
|
||||
table.insert(ss_servers_nginx,server_ip .. ":65101 max_fails=3 fail_timeout=30s")
|
||||
table.insert(ss_servers_ha,server_ip .. ":65101 weight 1 check")
|
||||
if vpn_port ~= "" then
|
||||
table.insert(vpn_servers,ip .. ":" .. vpn_port .. " max_fails=3 fail_timeout=30s")
|
||||
table.insert(vpn_servers,server_ip .. ":" .. vpn_port .. " max_fails=3 fail_timeout=30s")
|
||||
end
|
||||
ucic:set("qos","serverin","srchost",ip)
|
||||
ucic:set("qos","serverout","dsthost",ip)
|
||||
ucic:save("qos")
|
||||
ucic:commit("qos")
|
||||
else
|
||||
table.insert(ss_servers,ip .. ":65101 backup")
|
||||
table.insert(ss_servers_nginx,server_ip .. ":65101 backup")
|
||||
table.insert(ss_servers_ha,server_ip .. ":65101 weight 2 check")
|
||||
if vpn_port ~= "" then
|
||||
table.insert(vpn_servers,ip .. ":" .. vpn_port .. " backup")
|
||||
table.insert(vpn_servers,server_ip .. ":" .. vpn_port .. " backup")
|
||||
end
|
||||
end
|
||||
k = k + 1
|
||||
ucic:set("nginx-ha","ShadowSocks","enable","1")
|
||||
ucic:set("nginx-ha","VPN","enable","1")
|
||||
ucic:set("nginx-ha","ShadowSocks","upstreams",ss_servers_nginx)
|
||||
ucic:set("nginx-ha","VPN","upstreams",vpn_servers)
|
||||
ucic:set("haproxy-tcp","general","enable","0")
|
||||
ucic:set("haproxy-tcp","general","upstreams",ss_servers_ha)
|
||||
server_ip = "127.0.0.1"
|
||||
--ucic:set("shadowsocks-libev","sss0","server",ss_ip)
|
||||
else
|
||||
ucic:set("nginx-ha","ShadowSocks","enable","0")
|
||||
ucic:set("nginx-ha","VPN","enable","0")
|
||||
--ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||
--ucic:set("openmptcprouter","vps","ip",server_ip)
|
||||
--ucic:save("openmptcprouter")
|
||||
end
|
||||
ucic:set("nginx-ha","ShadowSocks","enable","1")
|
||||
ucic:set("nginx-ha","VPN","enable","1")
|
||||
ucic:set("nginx-ha","ShadowSocks","upstreams",ss_servers)
|
||||
ucic:set("nginx-ha","VPN","upstreams",vpn_servers)
|
||||
ucic:save("nginx-ha")
|
||||
ucic:commit("nginx-ha")
|
||||
server_ip = "127.0.0.1"
|
||||
ucic:set("shadowsocks-libev","sss0","server",ss_ip)
|
||||
ucic:save("shadowsocks-libev")
|
||||
ucic:commit("shadowsocks-libev")
|
||||
else
|
||||
ucic:set("nginx-ha","ShadowSocks","enable","0")
|
||||
ucic:set("nginx-ha","VPN","enable","0")
|
||||
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||
ucic:set("glorytun","vpn","host",server_ip)
|
||||
ucic:set("mlvpn","general","host",server_ip)
|
||||
luci.sys.call("uci -q del openvpn.omr.remote")
|
||||
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
||||
ucic:set("qos","serverin","srchost",server_ip)
|
||||
ucic:set("qos","serverout","dsthost",server_ip)
|
||||
ucic:save("qos")
|
||||
ucic:commit("qos")
|
||||
ucic:set("shadowsocks-libev","sss0","server",server_ip)
|
||||
ucic:save("shadowsocks-libev")
|
||||
ucic:commit("shadowsocks-libev")
|
||||
ucic:set("openmptcprouter","vps","ip",server_ip)
|
||||
ucic:save("openmptcprouter")
|
||||
end
|
||||
ucic:set("glorytun","vpn","host",server_ip)
|
||||
ucic:save("glorytun")
|
||||
ucic:commit("glorytun")
|
||||
ucic:set("mlvpn","general","host",server_ip)
|
||||
ucic:save("mlvpn")
|
||||
ucic:commit("mlvpn")
|
||||
luci.sys.call("uci -q del openvpn.omr.remote")
|
||||
luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip)
|
||||
ucic:save("openvpn")
|
||||
ucic:commit("openvpn")
|
||||
ucic:set("qos","serverin","srchost",server_ip)
|
||||
ucic:set("qos","serverout","dsthost",server_ip)
|
||||
ucic:save("qos")
|
||||
ucic:commit("qos")
|
||||
end
|
||||
|
||||
ucic:save("qos")
|
||||
ucic:commit("qos")
|
||||
ucic:save("nginx-ha")
|
||||
ucic:commit("nginx-ha")
|
||||
ucic:save("openvpn")
|
||||
ucic:commit("openvpn")
|
||||
ucic:save("mlvpn")
|
||||
ucic:commit("mlvpn")
|
||||
ucic:save("glorytun")
|
||||
ucic:commit("glorytun")
|
||||
ucic:save("shadowsocks-libev")
|
||||
ucic:commit("shadowsocks-libev")
|
||||
|
||||
|
||||
-- Set ShadowSocks settings
|
||||
local shadowsocks_key = luci.http.formvalue("shadowsocks_key")
|
||||
local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0"
|
||||
|
@ -359,10 +394,10 @@ function wizard_add()
|
|||
ucic:commit("openvpn")
|
||||
|
||||
-- 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 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)
|
||||
|
@ -598,18 +633,21 @@ function interfaces_status()
|
|||
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 ""
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" then
|
||||
local token = uci:get("openmptcprouter","vps","token") or ""
|
||||
if token ~= "" then
|
||||
local vpsinfo_json = sys.exec('curl -4 --max-time 2 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. mArray.openmptcprouter["service_addr"] .. ":65500/status")
|
||||
local vpsinfo = json.decode(vpsinfo_json) or ""
|
||||
if 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 or ""
|
||||
ucic:foreach("openmptcprouter", "server", function(s)
|
||||
local serverip = uci:get("openmptcprouter",s[".name"],"ip")
|
||||
if serverip ~= "" and (mArray.openmptcprouter["service_addr"] == serverip or serverip == mArray.openmptcprouter["wan_addr"]) then
|
||||
local token = uci:get("openmptcprouter",s[".name"],"token") or ""
|
||||
if token ~= "" then
|
||||
local vpsinfo_json = sys.exec('curl -4 --max-time 2 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":65500/status")
|
||||
local vpsinfo = json.decode(vpsinfo_json) or ""
|
||||
if 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 or ""
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- Check openmptcprouter service are running
|
||||
mArray.openmptcprouter["tun_service"] = false
|
||||
|
@ -702,7 +740,11 @@ function interfaces_status()
|
|||
mArray.openmptcprouter["uptime"] = sys.exec("cat /proc/uptime 2>/dev/null"):match("[%d%.]+")
|
||||
|
||||
|
||||
mArray.openmptcprouter["vps_status"] = "DOWN"
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then
|
||||
mArray.openmptcprouter["vps_status"] = "DOWN"
|
||||
else
|
||||
mArray.openmptcprouter["vps_status"] = "UP"
|
||||
end
|
||||
-- overview status
|
||||
mArray.wans = {}
|
||||
mArray.tunnels = {}
|
||||
|
@ -794,7 +836,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"] ~= "" then
|
||||
if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then
|
||||
local server_ping_test = sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. mArray.openmptcprouter["service_addr"])
|
||||
local server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'"))
|
||||
if server_ping_result ~= "" then
|
||||
|
@ -828,7 +870,7 @@ function interfaces_status()
|
|||
multipath_available_state_wan = ut.trim(sys.exec("omr-mptcp-intf " .. ifname .. " | grep 'Nay, Nay, Nay'"))
|
||||
if multipath_available_state_wan == "" then
|
||||
multipath_available = "OK"
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" then
|
||||
if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then
|
||||
mArray.openmptcprouter["server_mptcp"] = "disabled"
|
||||
end
|
||||
else
|
||||
|
|
|
@ -181,7 +181,7 @@
|
|||
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)
|
||||
if (mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || (mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.service_addr == "127.0.0.1"))
|
||||
{
|
||||
var title = String.format("OpenMPTCProuter Server (%s)", mArray.openmptcprouter.wan_addr);
|
||||
} else if (mArray.openmptcprouter.wan_addr !== "")
|
||||
|
|
|
@ -49,32 +49,49 @@ end
|
|||
<h2 name="content"><%:Wizard%></h2>
|
||||
<fieldset class="cbi-section" id="server">
|
||||
<legend><%:Server settings%></legend>
|
||||
<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">
|
||||
<label class="cbi-value-title" for="server_ip"><%:Server IP%></label>
|
||||
<div class="cbi-value-field">
|
||||
<%
|
||||
local has_nginxha = fs.access("/etc/config/nginx-ha")
|
||||
if has_nginxha then
|
||||
%>
|
||||
<div data-prefix="server_ip" data-browser-path="" data-dynlist="[[],[],null,false]" data-placeholder="123.123.123.123">
|
||||
<%
|
||||
end
|
||||
local k = 0
|
||||
for _,server in ipairs(servers_ip) do
|
||||
k = k+1
|
||||
%>
|
||||
<input name="server_ip" id="server_ip.<%=k%>" placeholder="Server IP" class="cbi-input-text" value="<%=server%>" data-type="ip4addr">
|
||||
<br />
|
||||
<%
|
||||
end
|
||||
%>
|
||||
<%
|
||||
uci:foreach("openmptcprouter","server", function(s)
|
||||
servername = s[".name"]
|
||||
%>
|
||||
<div class="cbi-section-remove right">
|
||||
<input type="submit" name="delete_server.<%=servername%>" onclick="this.form.cbi_state='del-section'; return true" value="<%:Delete%>" class="cbi-button" />
|
||||
<input type="hidden" name="server.<%=servername%>" value="<%=servername%>" />
|
||||
</div>
|
||||
<h3><%=servername%></h3>
|
||||
<div class="cbi-section-node" id="cbi-omr-wizard-<%=servername%>">
|
||||
<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-type="ip4addr">
|
||||
<div class="cbi-value-description">
|
||||
<%:Server IP will be set for ShadowSocks, Glorytun, OpenVPN and MLVPN%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cbi-value-description">
|
||||
<%:Server IP will be set for ShadowSocks, Glorytun, OpenVPN and MLVPN%>
|
||||
<br />
|
||||
<div class="cbi-value">
|
||||
<label class="cbi-value-title"><%:OpenMPTCProuter VPS key%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input type="text" name="<%=servername%>.openmptcprouter_vps_key" placeholder="OpenMPTCProuter VPS key" class="cbi-input-text" value="<%=uci:get("openmptcprouter",servername,"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>
|
||||
<%
|
||||
end)
|
||||
%>
|
||||
<div class="cbi-section-create">
|
||||
<div>
|
||||
<input type="text" class="cbi-section-create-name" id="cbi.cts.omr-bypass.server." name="add_server_name" data-type="uciname" data-optional="true" />
|
||||
</div>
|
||||
<input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" name="add_server" value="<%:Add server%>" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
</fieldset>
|
||||
<fieldset class="cbi-section" id="server_common">
|
||||
<legend><%:Common server settings%></legend>
|
||||
<div class="cbi-value">
|
||||
<label class="cbi-value-title"><%:Enable IPv6%></label>
|
||||
<div class="cbi-value-field">
|
||||
|
@ -85,17 +102,6 @@ end
|
|||
</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">
|
||||
|
|
Loading…
Reference in a new issue