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

Fix in VPS script and little change in status page

This commit is contained in:
Ycarus (Yannick Chabanois) 2019-08-07 23:09:02 +02:00
parent d8adb2b6ab
commit 4b84f92a88
4 changed files with 76 additions and 110 deletions

View file

@ -456,8 +456,8 @@ function wizard_add()
if dsvpn_key ~= "" then
ucic:set("dsvpn","vpn","port","65011")
ucic:set("dsvpn","vpn","key",dsvpn_key)
ucic:set("glorytun","vpn","localip","10.255.251.2")
ucic:set("glorytun","vpn","remoteip","10.255.251.1")
ucic:set("dsvpn","vpn","localip","10.255.251.2")
ucic:set("dsvpn","vpn","remoteip","10.255.251.1")
ucic:set("network","omr6in4","ipaddr","10.255.251.2")
ucic:set("network","omr6in4","peeraddr","10.255.251.1")
ucic:set("network","omrvpn","proto","none")
@ -764,6 +764,14 @@ end
-- Modified by Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
-- Under GPL3+
function interfaces_status()
local ut = require "luci.util"
local rv = ut.ubus("openmptcprouter", "status", {}) or {_=0}
luci.http.prepare_content("application/json")
luci.http.write_json(rv)
end
function old_interfaces_status()
local ut = require "luci.util"
local ntm = require "luci.model.network".init()
local uci = require "luci.model.uci".cursor()

View file

@ -59,17 +59,25 @@
temp += '<a href="#">';
var equipmentIcon = '<img src="<%=resource%>/computer.png" />';
if (mArray.openmptcprouter.remote_from_lease)
if (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)
if (mArray.openmptcprouter.remote_from_lease)
{
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 statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";
var statusMessage = "";
} else {
var title = String.format("%s (%s)",'You', mArray.openmptcprouter.remote_addr);
var statusMessageClass = "warning";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
var statusMessage = _('Your IP was not leased by this router');
}
} else {
var title = String.format('<br /><strong>%s</strong>', _('You'))
var statusMessageClass = "";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";
var statusMessage = "";
} else {
var title = String.format("%s (%s)",'You', mArray.openmptcprouter.remote_addr);
var statusMessageClass = "warning";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png";
var statusMessage = _('Your IP was not leased by this router');
}
var content = "";

View file

@ -7,7 +7,7 @@ local json = require("luci.json")
local fs = require("nixio.fs")
local net = require "luci.model.network".init()
local ucic = luci.model.uci.cursor()
local json = require "luci.jsonc"
local jsonc = require "luci.jsonc"
function interface_from_device(dev)
for _, iface in ipairs(net:get_networks()) do
@ -233,7 +233,7 @@ function default_vpn(default_vpn)
vpn_intf = "tun0"
--ucic:set("network","omrvpn","proto","dhcp")
ucic:set("network","omrvpn","proto","none")
if default_vpn == "glorytun" then
if default_vpn == "glorytun_udp" then
ucic:set("glorytun","vpn","proto","udp")
ucic:set("glorytun","vpn","localip","10.255.254.2")
ucic:set("glorytun","vpn","remoteip","10.255.254.1")
@ -251,10 +251,10 @@ function default_vpn(default_vpn)
vpn_intf = "tun0"
--ucic:set("network","omrvpn","proto","dhcp")
ucic:set("network","omrvpn","proto","none")
ucic:set("dsvpn","vpn","localip","10.255.254.2")
ucic:set("dsvpn","vpn","remoteip","10.255.254.1")
ucic:set("network","omr6in4","ipaddr","10.255.254.2")
ucic:set("network","omr6in4","peeraddr","10.255.254.1")
ucic:set("dsvpn","vpn","localip","10.255.251.2")
ucic:set("dsvpn","vpn","remoteip","10.255.251.1")
ucic:set("network","omr6in4","ipaddr","10.255.251.2")
ucic:set("network","omr6in4","peeraddr","10.255.251.1")
elseif default_vpn == "mlvpn" then
vpn_port = 65201
vpn_intf = "mlvpn0"
@ -338,83 +338,6 @@ function server_settings(server,server_ip,openmptcprouter_vps_key)
ucic:commit("shadowsocks-libev")
end
function server_failover(server,master)
if master == server or master == "" then
ucic:set("openmptcprouter",server,"get_config","1")
ucic:set("openmptcprouter",server,"master","1")
ucic:set("openmptcprouter",server,"backup","0")
else
ucic:set("openmptcprouter",server,"get_config","0")
ucic:set("openmptcprouter",server,"master","0")
ucic:set("openmptcprouter",server,"backup","1")
end
local ss_servers_nginx = {}
local ss_servers_ha = {}
local vpn_servers = {}
local k = 0
local ss_ip
-- 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 master == server then
ss_ip=server_ip
table.insert(ss_servers_nginx,server_ip .. ":65101 max_fails=2 fail_timeout=20s")
table.insert(ss_servers_ha,server_ip .. ":65101 check")
if vpn_port ~= "" then
table.insert(vpn_servers,server_ip .. ":" .. vpn_port .. " max_fails=2 fail_timeout=20s")
end
else
table.insert(ss_servers_nginx,server_ip .. ":65101 backup")
table.insert(ss_servers_ha,server_ip .. ":65101 backup")
if vpn_port ~= "" then
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("shadowsocks-libev","sss0","server",server_ip)
ucic:set("glorytun","vpn","host",server_ip)
ucic:set("dsvpn","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)
end
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("dsvpn")
ucic:commit("dsvpn")
ucic:save("glorytun")
ucic:commit("glorytun")
ucic:save("shadowsocks-libev")
ucic:commit("shadowsocks-libev")
end
function set_shadowsocks(shadowsocks_key)
-- Set ShadowSocks settings
ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key)
@ -925,8 +848,13 @@ function interfaces_status()
mptcp[ipaddr].ipaddr= ipaddr
end
mArray.openmptcprouter['model'] = sys.exec("ubus call system board | jsonfilter -q -e '@.model' 2>/dev/nul")
local board_name = sys.exec("ubus call system board | jsonfilter -q -e '@.board_name' 2>/dev/nul")
-- retrieve core temperature
--mArray.openmptcprouter["core_temp"] = sys.exec("cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>/dev/null"):match("%d+")
if board_name:match("^raspberrypi.*") then
mArray.openmptcprouter["core_temp"] = sys.exec("cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null"):match("%d+")
end
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%.]+")
@ -1482,7 +1410,7 @@ local methods = {
}
local function parseInput()
local parse = json.new()
local parse = jsonc.new()
local done, err
while true do
@ -1495,7 +1423,7 @@ local function parseInput()
end
if not done then
print(json.stringify({ error = err or "Incomplete input" }))
print(jsonc.stringify({ error = err or "Incomplete input" }))
os.exit(1)
end
@ -1505,12 +1433,12 @@ end
local function validateArgs(func, uargs)
local method = methods[func]
if not method then
print(json.stringify({ error = "Method not found" }))
print(jsonc.stringify({ error = "Method not found" }))
os.exit(1)
end
if type(uargs) ~= "table" then
print(json.stringify({ error = "Invalid arguments" }))
print(jsonc.stringify({ error = "Invalid arguments" }))
os.exit(1)
end
@ -1522,7 +1450,7 @@ local function validateArgs(func, uargs)
if margs[k] == nil or
(v ~= nil and type(v) ~= type(margs[k]))
then
print(json.stringify({ error = "Invalid arguments" }))
print(jsonc.stringify({ error = "Invalid arguments" }))
os.exit(1)
end
end
@ -1532,11 +1460,11 @@ end
if arg[1] == "list" then
local _, method, rv = nil, nil, {}
for _, method in pairs(methods) do rv[_] = method.args or {} end
print((json.stringify(rv):gsub(":%[%]", ":{}")))
print((jsonc.stringify(rv):gsub(":%[%]", ":{}")))
elseif arg[1] == "call" then
local args = parseInput()
local method = validateArgs(arg[2], args)
local result, code = method.call(args)
print((json.stringify(result):gsub("^%[%]$", "{}")))
print((jsonc.stringify(result):gsub("^%[%]$", "{}")))
os.exit(code or 0)
end

View file

@ -54,7 +54,7 @@ _set_json() {
_set_glorytun_vps() {
local enabled port key
enabled="$(uci -q get glorytun.vpn.enable)"
[ "$enabled" != "1" ] && echo "Glorytun disabled"
[ "$enabled" != "1" ] && echo "Glorytun disabled" && return
port="$(uci -q get glorytun.vpn.port)"
key="$(uci -q get glorytun.vpn.key)"
chacha="$(uci -q get glorytun.vpn.chacha20)"
@ -63,7 +63,7 @@ _set_glorytun_vps() {
else
chacha="false"
fi
[ -z "$key" ] && echo "Glorytun key not set"
[ -z "$key" ] && echo "Glorytun key not set" && return
local current_port current_key current_chacha
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
@ -82,7 +82,7 @@ _set_glorytun_vps() {
_set_openvpn_vps() {
local enabled port key
enabled="$(uci -q get openvpn.omr.enabled)"
[ "$enabled" != "1" ] && echo "OpenVPN disabled"
[ "$enabled" != "1" ] && echo "OpenVPN disabled" && return
port="$(uci -q get openvpn.omr.port)"
keyfile="$(uci -q get openvpn.omr.secret)"
if [ -n "$keyfile" ]; then
@ -90,7 +90,7 @@ _set_openvpn_vps() {
else
key=""
fi
[ -z "$key" ] && echo "OpenVPN key not set"
[ -z "$key" ] && echo "OpenVPN key not set" && return
local current_port current_key
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
@ -397,6 +397,16 @@ _set_config_from_vps() {
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
# Set current VPN
current_vpn="$(echo "$vps_config" | jsonfilter -q -e '@.vpn.current')"
if [ -n "$current_vpn" ]; then
uci -q batch <<-EOF >/dev/null
set openmptcprouter.settings.vpn=${current_vpn}
EOF
fi
current_vpn="$(uci -q get openmptcprouter.settings.vpn)"
# Shadowsocks settings
shadowsocks_disabled="$(uci -q get openmptcprouter.settings.shadowsocks_disable)"
[ -z "$shadowsocks_disabled" ] && shadowsocks_disabled=0
@ -475,9 +485,15 @@ _set_config_from_vps() {
echo $openvpn_key | base64 -d > /etc/luci-uploads/openvpn.key
openvpn_port="$(echo "$vps_config" | jsonfilter -q -e '@.openvpn.port')"
[ -z "$openvpn_port" ] && openvpn_port="65001"
vpn="$(uci -q get openmptcprouter.settings.vpn)"
openvpn_state=0
if [ "$vpn" = "openvpn" ]; then
openvpn_state=1
fi
uci -q batch <<-EOF >/dev/null
set openvpn.omr.port=$openvpn_port
set openvpn.omr.secret="/etc/luci-uploads/openvpn.key"
set openvpn.omr.enabled=$openvpn_state
commit openvpn
EOF
logger -t "OMR-VPS" "OpenVPN restart..."
@ -487,8 +503,14 @@ _set_config_from_vps() {
# MLVPN settings
mlvpn_key="$(echo "$vps_config" | jsonfilter -q -e '@.mlvpn.key')"
if [ -n "$mlvpn_key" ] && [ "$mlvpn_key" != "$(uci -q get mlvpn.general.password)" ]; then
vpn="$(uci -q get openmptcprouter.settings.vpn)"
mlvpn_state=0
if [ "$vpn" = "mlvpn" ]; then
mlvpn_state=1
fi
uci -q batch <<-EOF >/dev/null
set mlvpn.general.password=$mlvpn_key
set mlvpn.general.enable=$mlvpn_state
commit mlvpn
EOF
logger -t "OMR-VPS" "MLVPN restart..."
@ -498,8 +520,13 @@ _set_config_from_vps() {
# DSVPN settings
dsvpn_key="$(echo "$vps_config" | jsonfilter -q -e '@.dsvpn.key')"
if [ -n "$dsvpn_key" ] && [ "$dsvpn_key" != "$(uci -q get dsvpn.vpn.key)" ]; then
dsvpn_state=0
if [ "$vpn" = "dsvpn" ]; then
dsvpn_state=1
fi
uci -q batch <<-EOF >/dev/null
set dsvpn.vpn.key=$dsvpn_key
set dsvpn.vpn.enable=$dsvpn_state
commit dsvpn
EOF
logger -t "OMR-VPS" "DSVPN restart..."
@ -568,12 +595,6 @@ _set_config_from_vps() {
commit iperf
EOF
# Set current VPN
current_vpn="$(echo "$vps_config" | jsonfilter -q -e '@.vpn.current')"
uci -q batch <<-EOF >/dev/null
set openmptcprouter.settings.vpn=${current_vpn}
EOF
# Get available server
available_vpn="$(echo "$vps_config" | jsonfilter -q -e '@.vpn.available' | sed -e 's/\[ //' -e 's/ \]//' -e 's/,//g')"
uci -q batch <<-EOF >/dev/null
@ -588,6 +609,7 @@ _set_config_from_vps() {
fi
uci -q batch <<-EOF >/dev/null
set openmptcprouter.${servername}.get_config=0
commit openmptcprouter
EOF
}