From 085c4a08f5bf50919731304a962cfcd2b592d523 Mon Sep 17 00:00:00 2001 From: Ansuel Smith Date: Sat, 18 Sep 2021 16:25:23 +0200 Subject: [PATCH] luci-mod-status: fix wrong logic for maclist adding feature Currently any new entry added to the black/whitelist deletes the others. Fix this and improve the rule apply by firstly disconnect the wifi client. Fixes: #5343 Signed-off-by: Ansuel Smith --- .../resources/view/status/include/60_wifi.js | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js index b03d1f4111..333884449f 100644 --- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js +++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js @@ -48,21 +48,18 @@ return baseclass.extend({ ev.currentTarget.disabled = true; ev.currentTarget.blur(); - if (exec == 'addlist') { - var macs = [ mac ] + /* Disconnect client before adding to maclist */ + wifinet.disconnectClient(mac, true, 5, 60000); - for (var mac in this.iface_maclist) { - macs.push(mac) - } + if (exec == 'addlist') { + wifinet.maclist.push(mac); - uci.set('wireless', wifinet.sid, 'maclist', macs); + uci.set('wireless', wifinet.sid, 'maclist', wifinet.maclist); return uci.save() .then(L.bind(L.ui.changes.init, L.ui.changes)) .then(L.bind(L.ui.changes.displayChanges, L.ui.changes)); } - - wifinet.disconnectClient(mac, true, 5, 60000); }, handleGetWPSStatus: function(wifinet) { @@ -234,14 +231,14 @@ return baseclass.extend({ var rows = []; for (var i = 0; i < networks.length; i++) { - var macfilter = uci.get('wireless', networks[i].sid, 'macfilter'); + var macfilter = uci.get('wireless', networks[i].sid, 'macfilter'), + maclist = {}; if (macfilter != null && macfilter != 'disable') { - this.isDeviceAdded = {}; - var macs = L.toArray(uci.get('wireless', networks[i].sid, 'maclist')); - for (var j = 0; j < macs.length; j++) { - var mac = macs[j].toUpperCase(); - this.isDeviceAdded[mac] = true; + networks[i].maclist = L.toArray(uci.get('wireless', networks[i].sid, 'maclist')); + for (var j = 0; j < networks[i].maclist.length; j++) { + var mac = networks[i].maclist[j].toUpperCase(); + maclist[mac] = true; } } @@ -324,7 +321,7 @@ return baseclass.extend({ if (assoclist.firstElementChild.childNodes.length < 6) assoclist.firstElementChild.appendChild(E('th', { 'class': 'th cbi-section-actions' })); - if (macfilter != null && macfilter != 'disable' && !this.isDeviceAdded[bss.mac]) { + if (macfilter != null && macfilter != 'disable' && !maclist[bss.mac]) { row.push(new L.ui.ComboButton('button', { 'addlist': macfilter == 'allow' ? _('Add to Whitelist') : _('Add to Blacklist'), 'disconnect': _('Disconnect') -- 2.30.2