luci-mod-network: interfaces.js: issue iface restart via file/exec rpc call
authorJo-Philipp Wich <jo@mein.io>
Thu, 31 Oct 2019 16:37:55 +0000 (17:37 +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/interfaces.js
modules/luci-mod-network/luasrc/controller/admin/network.lua

index cd37f4d49f3a79aea33905aae012c06507e6197b..098af140da1d2fb054f0080ca460d423c0ce8fad 100644 (file)
@@ -62,6 +62,7 @@
                                "/etc/sysupgrade.conf": [ "write" ],
                                "/sbin/block": [ "exec" ],
                                "/sbin/firstboot": [ "exec" ],
+                               "/sbin/ifup": [ "exec" ],
                                "/sbin/reboot": [ "exec" ],
                                "/sbin/sysupgrade": [ "exec" ],
                                "/sbin/wifi": [ "exec" ],
index bfff2575bd90ea4a49fca8e4aa50084f4e9c37ab..60d61adfec8134d558f9aedbc51fc08d5025414a 100644 (file)
@@ -1,4 +1,5 @@
 'use strict';
+'require fs';
 'require uci';
 'require form';
 'require network';
@@ -934,11 +935,9 @@ return L.view.extend({
 
                                        if (dsc.getAttribute('reconnect') == '') {
                                                dsc.setAttribute('reconnect', '1');
-                                               tasks.push(L.Request.post(
-                                                       L.url('admin/network/iface_reconnect', section_ids[i]),
-                                                       'token=' + L.env.token,
-                                                       { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
-                                               ).catch(function() {}));
+                                               tasks.push(fs.exec('/sbin/ifup', [section_ids[i]]).catch(function(e) {
+                                                       L.ui.addNotification(null, E('p', e.message));
+                                               }));
                                        }
                                        else if (dsc.getAttribute('disconnect') == '' || dsc.getAttribute('disconnect') == 'force') {
                                                var force = dsc.getAttribute('disconnect');
index 49ed78a0eaddc5761b36a76f0bc3612a61397e3a..a2ff215480afdf7c30e05f67c07f710ae2382fb7 100644 (file)
@@ -36,9 +36,6 @@ function index()
                end
 
 
-               page = entry({"admin", "network", "iface_reconnect"}, post("iface_reconnect"), nil)
-               page.leaf = true
-
                page = entry({"admin", "network", "iface_down"}, post("iface_down"), nil)
                page.leaf = true
 
@@ -86,19 +83,6 @@ function index()
 --     end
 end
 
-function iface_reconnect(iface)
-       local netmd = require "luci.model.network".init()
-       local net = netmd:get_network(iface)
-       if net then
-               luci.sys.call("env -i /sbin/ifup %s >/dev/null 2>/dev/null"
-                       % luci.util.shellquote(iface))
-               luci.http.status(200, "Reconnected")
-               return
-       end
-
-       luci.http.status(404, "No such interface")
-end
-
 local function addr2dev(addr, src)
        local ip = require "luci.ip"
        local route = ip.route(addr, src)