diff options
author | Steven Barth <steven@midlink.org> | 2008-08-13 01:24:44 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-08-13 01:24:44 +0000 |
commit | 07fdaa87dbac0582960cded4e9aa981d4a141782 (patch) | |
tree | 158e9c66902494de736ea282b216a374ba01f516 /modules/admin-full/luasrc | |
parent | 0e3fda59e094a272bafc43b67e6393dc6f2b279e (diff) |
modules/admin-full: Network interface configuration optimization part #1
Diffstat (limited to 'modules/admin-full/luasrc')
4 files changed, 122 insertions, 95 deletions
diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 1d44bda77..fa7a8c719 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -28,35 +28,32 @@ function index() page.title = i18n("a_n_switch", "Switch") page.order = 10 - local page = node("admin", "network", "ifaces") - page.target = cbi("admin_network/ifaces") + local page = node("admin", "network", "network") + page.target = cbi("admin_network/network") page.title = i18n("interfaces", "Schnittstellen") page.order = 20 - page.leaf = true - luci.model.uci.foreach("network", "interface", function (section) local ifc = section[".name"] if ifc ~= "loopback" then - entry({"admin", "network", "ifaces", ifc}, - page.target, ifc:upper()) + entry({"admin", "network", "network", ifc}, + alias("admin", "network", "ifaces", ifc), + ifc:upper()) end end ) - + + local page = node("admin", "network", "ifaces") + page.target = cbi("admin_network/ifaces") + page.leaf = true local page = node("admin", "network", "dhcp") page.target = cbi("admin_network/dhcp") page.title = "DHCP" page.order = 30 - local page = node("admin", "network", "ptp") - page.target = cbi("admin_network/ptp") - page.title = "PPPoE / PPTP" - page.order = 40 - local page = node("admin", "network", "routes") page.target = cbi("admin_network/routes") page.title = i18n("a_n_routes", "Routen") - page.order = 50 + page.order = 40 end
\ No newline at end of file diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua index c85b6a182..906563683 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -2,6 +2,7 @@ LuCI - Lua Configuration Interface Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -11,33 +12,18 @@ You may obtain a copy of the License at $Id$ ]]-- -m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) - -arg = arg or {} +arg[1] = arg[1] or "" -s = m:section(TypedSection, "interface", translate("interfaces")) -function s.create(self, section) - local stat = TypedSection.create(self, section) - if stat then - arg = {section or stat} - end - return stat -end - -function s.filter(self, section) - return section ~= "loopback" and - (not arg or not arg[1] or arg[1] == section) -end +m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) -if not arg or not arg[1] then - s.addremove = true -end -s:depends("proto", "static") -s:depends("proto", "dhcp") +s = m:section(NamedSection, arg[1], "interface", translate("interfaces")) +s.addremove = true p = s:option(ListValue, "proto", translate("protocol")) p:value("static", translate("static")) p:value("dhcp", "DHCP") +p:value("pppoe", "PPPoE") +p:value("pptp", "PPTP") p.default = "static" br = s:option(Flag, "type", translate("a_n_i_bridge"), translate("a_n_i_bridge1")) @@ -91,25 +77,38 @@ mtu.isinteger = true mac = s:option(Value, "macaddr", translate("macaddress")) mac.optional = true +user = s:option(Value, "username", translate("username")) +user.rmempty = true +user:depends("proto", "pptp") +user:depends("proto", "ppoe") + +pass = s:option(Value, "password", translate("password")) +pass.rmempty = true +pass:depends("proto", "pptp") +pass:depends("proto", "ppoe") + +ka = s:option(Value, "keepalive") +ka.rmempty = true +ka:depends("proto", "pptp") +ka:depends("proto", "ppoe") + +demand = s:option(Value, "demand") +demand.rmempty = true +demand:depends("proto", "pptp") +demand:depends("proto", "ppoe") + +srv = s:option(Value, "server") +srv:depends("proto", "pptp") +srv.rmempty = true + s2 = m:section(TypedSection, "alias", translate("aliases")) s2.addremove = true -if arg and arg[1] then - s2:depends("interface", arg[1]) - s2.defaults.interface = arg[1] -else - parent = s2:option(ListValue, "interface", translate("interface")) - luci.model.uci.foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - parent:value(section[".name"]) - end - end - ) -end +s2:depends("interface", arg[1]) +s2.defaults.interface = arg[1] s2.defaults.proto = "static" diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/network.lua b/modules/admin-full/luasrc/model/cbi/admin_network/network.lua new file mode 100644 index 000000000..c79dc8359 --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_network/network.lua @@ -0,0 +1,79 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- +require("luci.sys") + + +m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) + +local created +local netstat = luci.sys.net.deviceinfo() + +s = m:section(TypedSection, "interface", translate("interfaces")) +s.addremove = true +s.extedit = luci.http.getenv("REQUEST_URI") .. "/%s" +s.template = "cbi/tblsection" + +function s.filter(self, section) + return section ~= "loopback" and section +end + +function s.create(self, section) + if TypedSection.create(self, section) then + created = section + end +end + +function s.parse(self, ...) + TypedSection.parse(self, ...) + if created then + luci.http.redirect(luci.http.getenv("REQUEST_URI") .. "/" .. created) + end +end + +up = s:option(Flag, "up") +up.stateful = true +function up.write(self, section, value) + local call = value == "1" and "ifdown" or "ifup" + os.execute(call .. " " .. section) +end + +ipaddr = s:option(DummyValue, "ipaddr", translate("ipaddress")) +ipaddr.stateful = true + +function ipaddr.cfgvalue(self, section) + local ip = self.map:stateget(section, "ipaddr") + local nm = self.map:stateget(section, "netmask") + + local parsed = ip and luci.ip.IPv4(ip, nm) + return parsed and parsed:string() or "" +end + +rx = s:option(DummyValue, "_rx") + +function rx.cfgvalue(self, section) + local ix = self.map:stateget(section, "ifname") + local bt = netstat and netstat[ix] and netstat[ix][1] + return bt and string.format("%.2f MB", tonumber(bt) / 1024 / 1024) +end + +tx = s:option(DummyValue, "_tx") + +function tx.cfgvalue(self, section) + local ix = self.map:stateget(section, "ifname") + local bt = netstat and netstat[ix] and netstat[ix][9] + return bt and string.format("%.2f MB", tonumber(bt) / 1024 / 1024) +end + +return m
\ No newline at end of file diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/ptp.lua b/modules/admin-full/luasrc/model/cbi/admin_network/ptp.lua deleted file mode 100644 index 7fd7135ff..000000000 --- a/modules/admin-full/luasrc/model/cbi/admin_network/ptp.lua +++ /dev/null @@ -1,48 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth <steven@midlink.org> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- -m = Map("network", translate("a_n_ptp"), translate("a_n_ptp1")) - -s = m:section(TypedSection, "interface", "") -s.addremove = true -s:depends("proto", "pppoe") -s:depends("proto", "pptp") - -p = s:option(ListValue, "proto", translate("protocol")) -p:value("pppoe", "PPPoE") -p:value("pptp", "PPTP") -p.default = "pppoe" - -ifname = s:option(Value, "ifname", translate("interface")) -for i,d in ipairs(luci.sys.net.devices()) do - if d ~= "lo" then - ifname:value(d) - end -end - -s:option(Value, "username", translate("username")) -s:option(Value, "password", translate("password")) - -s:option(Value, "keepalive").optional = true - -s:option(Value, "demand").optional = true - -srv = s:option(Value, "server") -srv:depends("proto", "pptp") -srv.rmempty = true - -mtu = s:option(Value, "mtu", "MTU") -mtu.optional = true -mtu.isinteger = true - -return m
\ No newline at end of file |