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

Better server ping check in OpenMPTCProuter local API

This commit is contained in:
Ycarus (Yannick Chabanois) 2024-08-02 14:34:24 +02:00
parent 52e3e73d48
commit 33905981ea

View file

@ -1504,6 +1504,8 @@ function interfaces_status()
local current = uci:get("openmptcprouter",s[".name"],"current") or "0" local current = uci:get("openmptcprouter",s[".name"],"current") or "0"
if current == "1" then if current == "1" then
for key, value in pairs(serverips) do for key, value in pairs(serverips) do
server_ping = value
if server_ping ~= "UP" then
local serverip = mArray.openmptcprouter["service_addr"] local serverip = mArray.openmptcprouter["service_addr"]
if serverip == "127.0.0.1" then if serverip == "127.0.0.1" then
serverip = mArray.openmptcprouter["wan_addr"] serverip = mArray.openmptcprouter["wan_addr"]
@ -1517,22 +1519,28 @@ function interfaces_status()
serverip = value serverip = value
end end
if serverip ~= "" then if serverip ~= "" then
local server_ping_test = sys.exec("ping -B -w 1 -c 1 -I " .. ifname .. " " .. serverip) local server_ping_test = sys.exec("ping -B -w 1 -c 1 -I " .. ifname .. " " .. serverip .. " 2>&1")
local server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'")) local server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'"))
local server_ping_nobind = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep 'Address not available'")) local server_ping_nobind = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep 'Address not available'"))
if server_ping_result ~= "" then local server_ping_error = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep -i 'error'"))
if server_ping_error ~= "" then
server_ping = "DOWN" server_ping = "DOWN"
--if connectivity == "OK" then if connectivity == "OK" then
-- connectivity = "WARNING" connectivity = "WARNING"
--end end
elseif server_ping_result ~= "" then
server_ping = "DOWN"
if connectivity == "OK" then
connectivity = "WARNING"
end
elseif server_ping_nobind ~= "" then elseif server_ping_nobind ~= "" then
server_ping_test = sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. serverip) server_ping_test = sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. serverip)
server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'")) server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'"))
if server_ping_result ~= "" then if server_ping_result ~= "" then
server_ping = "DOWN" server_ping = "DOWN"
--if connectivity == "OK" then if connectivity == "OK" then
-- connectivity = "WARNING" connectivity = "WARNING"
--end end
else else
mArray.openmptcprouter["vps_status"] = "UP" mArray.openmptcprouter["vps_status"] = "UP"
server_ping = "UP" server_ping = "UP"
@ -1546,6 +1554,7 @@ function interfaces_status()
end end
end end
end end
end
end) end)
end end
if adminport == "" then if adminport == "" then