From 6dcee2e324bf9b2f1a49672d635808da6619c1b6 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 23 Jan 2022 17:34:29 +0100 Subject: [PATCH] gluon-web-network: update wired mesh settings for new role-based configuration --- package/gluon-web-network/i18n/de.po | 3 ++ package/gluon-web-network/i18n/fr.po | 3 ++ .../i18n/gluon-web-network.pot | 3 ++ .../gluon/config-mode/model/admin/network.lua | 47 ++++++++++--------- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/package/gluon-web-network/i18n/de.po b/package/gluon-web-network/i18n/de.po index 4a6bc8b5..77b3a6a3 100644 --- a/package/gluon-web-network/i18n/de.po +++ b/package/gluon-web-network/i18n/de.po @@ -28,6 +28,9 @@ msgstr "PoE-Passthrough aktivieren" msgid "Enable PoE Power Port %s" msgstr "PoE-Ausgabe auf Port %s aktivieren" +msgid "Enable meshing on the Ethernet interface" +msgstr "Mesh auf dem Ethernet-Port aktivieren" + msgid "Enable meshing on the LAN interface" msgstr "Mesh auf dem LAN-Port aktivieren" diff --git a/package/gluon-web-network/i18n/fr.po b/package/gluon-web-network/i18n/fr.po index 292d6e25..97067343 100644 --- a/package/gluon-web-network/i18n/fr.po +++ b/package/gluon-web-network/i18n/fr.po @@ -28,6 +28,9 @@ msgstr "" msgid "Enable PoE Power Port %s" msgstr "" +msgid "Enable meshing on the Ethernet interface" +msgstr "" + msgid "Enable meshing on the LAN interface" msgstr "Activer le réseau MESH sur le port LAN" diff --git a/package/gluon-web-network/i18n/gluon-web-network.pot b/package/gluon-web-network/i18n/gluon-web-network.pot index 913b78b3..a75929df 100644 --- a/package/gluon-web-network/i18n/gluon-web-network.pot +++ b/package/gluon-web-network/i18n/gluon-web-network.pot @@ -19,6 +19,9 @@ msgstr "" msgid "Enable PoE Power Port %s" msgstr "" +msgid "Enable meshing on the Ethernet interface" +msgstr "" + msgid "Enable meshing on the LAN interface" msgstr "" diff --git a/package/gluon-web-network/luasrc/lib/gluon/config-mode/model/admin/network.lua b/package/gluon-web-network/luasrc/lib/gluon/config-mode/model/admin/network.lua index dab31ec0..df92c965 100644 --- a/package/gluon-web-network/luasrc/lib/gluon/config-mode/model/admin/network.lua +++ b/package/gluon-web-network/luasrc/lib/gluon/config-mode/model/admin/network.lua @@ -76,36 +76,37 @@ end s = f:section(Section) -local mesh_wan = s:option(Flag, "mesh_wan", translate("Enable meshing on the WAN interface")) -mesh_wan.default = not uci:get_bool("network", "mesh_wan", "disabled") +local wired_mesh_help = { + single = translate('Enable meshing on the Ethernet interface'), + wan = translate('Enable meshing on the WAN interface'), + lan = translate('Enable meshing on the LAN interface'), +} -function mesh_wan:write(data) - uci:set("network", "mesh_wan", "disabled", not data) -end +local function wired_mesh(iface) + if not sysconfig[iface .. '_ifname'] then return end + local iface_roles = uci:get_list('gluon', 'iface_' .. iface, 'role') -if sysconfig.lan_ifname then - s = f:section(Section) + local option = s:option(Flag, 'mesh_' .. iface, wired_mesh_help[iface]) + option.default = util.contains(iface_roles, 'mesh') ~= false - local mesh_lan = s:option(Flag, "mesh_lan", translate("Enable meshing on the LAN interface")) - mesh_lan.default = not uci:get_bool("network", "mesh_lan", "disabled") - - function mesh_lan:write(data) - uci:set("network", "mesh_lan", "disabled", not data) - - local interfaces = uci:get_list("network", "client", "ifname") - - for lanif in sysconfig.lan_ifname:gmatch('%S+') do - if data then - util.remove_from_set(interfaces, lanif) - else - util.add_to_set(interfaces, lanif) - end + function option:write(data) + local roles = uci:get_list('gluon', 'iface_' .. iface, 'role') + if data then + util.add_to_set(roles, 'mesh') + else + util.remove_from_set(roles, 'mesh') end + uci:set_list('gluon', 'iface_' .. iface, 'role', roles) - uci:set_list("network", "client", "ifname", interfaces) + -- Reconfigure on next reboot + uci:set('gluon', 'core', 'reconfigure', true) end end +wired_mesh('single') +wired_mesh('wan') +wired_mesh('lan') + local section uci:foreach("system", "gpio_switch", function(si) if si[".name"]:match("poe") then @@ -160,7 +161,7 @@ function f:write() uci:delete("network", "wan6", "ip6gw") end - + uci:commit('gluon') uci:commit("network") uci:commit('system') end