fix(i18n,watchdog): полная актуализация русской локализации интерфейса и исправление детекции WAN в Watchdog

This commit is contained in:
Dushnilin
2026-08-16 16:01:37 +03:00
parent 61b34bb949
commit 5adda4bba7
6 changed files with 1056 additions and 772 deletions
@@ -758,31 +758,52 @@ function controller(bus, opts) {
uci_core.get("network", "wan", "ifname") || "");
if (device == "" && def_dev != null)
device = def_dev;
if (device == "") {
let def_route = command_capture("ip -4 route show default 2>/dev/null").output;
let m_dev = match(def_route, /dev\s+([^\s]+)/);
if (m_dev) device = m_dev[1];
let no_address = true;
let no_gateway = (def_dev == null);
// 1. Проверяем статус интерфейса через netifd ubus
let ubus_data = command_output_from_args([ "ubus", "-S", "call", "network.interface.wan", "status" ]);
let ubus_obj = parse_json(ubus_data);
let iface = "";
if (type(ubus_obj) == "object" && ubus_obj.up == true) {
iface = ubus_obj.l3_device || ubus_obj.device || "";
let addrs = common.array_or_empty(ubus_obj["ipv4-address"]);
let addrs6 = common.array_or_empty(ubus_obj["ipv6-address"]);
if (length(addrs) > 0 || length(addrs6) > 0) {
no_address = false;
}
if (length(common.array_or_empty(ubus_obj.route)) > 0 || (ubus_obj.data && ubus_obj.data.gateway)) {
no_gateway = false;
}
}
if (device == "") device = "eth0";
let iface = (proto == "pppoe") ? "pppoe-wan" : device;
let addr_out = command_capture("ip addr show " + shell_quote(iface) + " 2>/dev/null").output;
let no_address = index(addr_out, "inet ") < 0;
if (iface == "") {
if (device != "")
iface = (proto == "pppoe") ? "pppoe-wan" : device;
else
iface = (proto == "pppoe") ? "pppoe-wan" : "eth0";
}
// 2. Если адрес еще не подтвержден ubus, проверяем ip addr
if (no_address) {
let ubus_data = command_output_from_args([ "ubus", "-S", "call", "network.interface.wan", "status" ]);
try {
let ubus_obj = json(ubus_data);
if (type(ubus_obj) == "object" && ubus_obj.up && length(common.array_or_empty(ubus_obj["ipv4-address"])) > 0) {
no_address = false;
}
} catch (e) {}
let addr_out = command_capture("ip addr show " + shell_quote(iface) + " 2>/dev/null").output;
if (index(addr_out, "inet ") >= 0 || index(addr_out, "inet6 ") >= 0) {
no_address = false;
}
}
let no_gateway = def_dev == null;
// 3. Если шлюз еще не подтвержден, проверяем таблицы маршрутизации
if (no_gateway) {
let route_out = command_capture("ip route 2>/dev/null").output;
no_gateway = index(route_out, "default") < 0;
let route_out = command_capture("ip -4 route show default 2>/dev/null").output;
if (index(route_out, "default") >= 0) {
no_gateway = false;
} else {
let route_all = command_capture("ip route 2>/dev/null").output;
if (index(route_all, "default") >= 0) {
no_gateway = false;
}
}
}
if (!no_address && !no_gateway) {