luci-mod-network: wireless.js: issue wifi restart via file/exec rpc call
authorJo-Philipp Wich <jo@mein.io>
Thu, 31 Oct 2019 16:27:36 +0000 (17:27 +0100)
committerJo-Philipp Wich <jo@mein.io>
Fri, 1 Nov 2019 11:03:33 +0000 (12:03 +0100)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json
modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js
modules/luci-mod-network/luasrc/controller/admin/network.lua

index 880a633947cfb8f0e2623fa7e97aef8def3ed277..cd37f4d49f3a79aea33905aae012c06507e6197b 100644 (file)
@@ -64,6 +64,7 @@
                                "/sbin/firstboot": [ "exec" ],
                                "/sbin/reboot": [ "exec" ],
                                "/sbin/sysupgrade": [ "exec" ],
+                               "/sbin/wifi": [ "exec" ],
                                "/bin/tar": [ "exec" ],
                                "/bin/umount": [ "exec" ],
                                "/tmp/backup.tar.gz": [ "write" ],
index 194b2a3df9d20799446e0f82f2c656e8a6099d3b..847a712c3066e4d2e9872e77a93efe72707d7b63 100644 (file)
@@ -1,4 +1,5 @@
 'use strict';
+'require fs';
 'require rpc';
 'require uci';
 'require form';
@@ -1908,11 +1909,9 @@ return L.view.extend({
 
                                        if (dsc.getAttribute('restart') == '') {
                                                dsc.setAttribute('restart', '1');
-                                               tasks.push(L.Request.post(
-                                                       L.url('admin/network/wireless_reconnect', section_ids[i]),
-                                                       'token=' + L.env.token,
-                                                       { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
-                                               ).catch(function() {}));
+                                               tasks.push(fs.exec('/sbin/wifi', ['up', section_ids[i]]).catch(function(e) {
+                                                       L.ui.addNotification(null, E('p', e.message));
+                                               }));
                                        }
                                        else if (dsc.getAttribute('restart') == '1') {
                                                dsc.removeAttribute('restart');
index 662fe8cf8892dd3bff769bfe6bfa4045204270dd..49ed78a0eaddc5761b36a76f0bc3612a61397e3a 100644 (file)
@@ -31,9 +31,6 @@ function index()
                        end)
 
                if has_wifi then
-                       page = entry({"admin", "network", "wireless_reconnect"}, post("wifi_reconnect"), nil)
-                       page.leaf = true
-
                        page = entry({"admin", "network", "wireless"}, view("network/wireless"), _('Wireless'), 15)
                        page.leaf = true
                end
@@ -158,16 +155,6 @@ function iface_down(iface, force)
        luci.http.status(404, "No such interface")
 end
 
-function wifi_reconnect(radio)
-       local rc = luci.sys.call("env -i /sbin/wifi up %s >/dev/null" % luci.util.shellquote(radio))
-
-       if rc == 0 then
-               luci.http.status(200, "Reconnected")
-       else
-               luci.http.status(500, "Error")
-       end
-end
-
 function diag_command(cmd, addr)
        if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
                luci.http.prepare_content("text/plain")