From 08684e90bb4dd77a4d377e91c61d3bc3cf6ea847 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
Date: Tue, 24 May 2022 10:52:32 +0200
Subject: [PATCH] web-private-wifi: add warning about mesh on wan

---
 .../config-mode/model/admin/privatewifi.lua    | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua b/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua
index 8be95ed6c..4f4cf4590 100644
--- a/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua
+++ b/package/gluon-web-private-wifi/luasrc/lib/gluon/config-mode/model/admin/privatewifi.lua
@@ -1,5 +1,6 @@
 local uci = require("simple-uci").cursor()
 local wireless = require 'gluon.wireless'
+local util = require 'gluon.util'
 
 -- where to read the configuration from
 local primary_iface = 'wan_radio0'
@@ -13,9 +14,26 @@ local s = f:section(Section, nil, translate(
 	.. 'at the same time.'
 ))
 
+local uplink_interfaces = util.get_role_interfaces(uci, 'uplink')
+local mesh_on_wan = false
+
+for _, iface in ipairs(util.get_role_interfaces(uci, 'mesh')) do
+	if util.contains(uplink_interfaces, iface) then
+		mesh_on_wan = true
+	end
+end
+
 local enabled = s:option(Flag, "enabled", translate("Enabled"))
 enabled.default = uci:get('wireless', primary_iface) and not uci:get_bool('wireless', primary_iface, "disabled")
 
+local warning = s:element('model/warning', {
+	content = mesh_on_wan and translate(
+		'Meshing on WAN interface is enabled.' ..
+		'This can lead to problems.'
+	) or nil,
+}, 'warning')
+warning:depends(enabled, true)
+
 local ssid = s:option(Value, "ssid", translate("Name (SSID)"))
 ssid:depends(enabled, true)
 ssid.datatype = "maxlength(32)"
-- 
GitLab