From c47765a6118b2a6eb0d74b95f5cb4abda23fe6db Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Mon, 26 Oct 2009 17:40:39 +0000 Subject: [PATCH 1/1] NIU: Initial --- modules/niu/Makefile | 2 + modules/niu/luasrc/controller/niu/dashboard.lua | 44 +++++++++ modules/niu/luasrc/controller/niu/network.lua | 22 +++++ modules/niu/luasrc/model/cbi/niu/network/lan.lua | 8 ++ modules/niu/luasrc/model/cbi/niu/network/lan1.lua | 106 ++++++++++++++++++++++ modules/niu/luasrc/view/niu/dashboard.htm | 22 +++++ modules/niu/luasrc/view/niu/network.htm | 32 +++++++ modules/niu/luasrc/view/niu/null.htm | 1 + 8 files changed, 237 insertions(+) create mode 100644 modules/niu/Makefile create mode 100644 modules/niu/luasrc/controller/niu/dashboard.lua create mode 100644 modules/niu/luasrc/controller/niu/network.lua create mode 100644 modules/niu/luasrc/model/cbi/niu/network/lan.lua create mode 100644 modules/niu/luasrc/model/cbi/niu/network/lan1.lua create mode 100644 modules/niu/luasrc/view/niu/dashboard.htm create mode 100644 modules/niu/luasrc/view/niu/network.htm create mode 100644 modules/niu/luasrc/view/niu/null.htm diff --git a/modules/niu/Makefile b/modules/niu/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/modules/niu/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/modules/niu/luasrc/controller/niu/dashboard.lua b/modules/niu/luasrc/controller/niu/dashboard.lua new file mode 100644 index 000000000..e3270e4c6 --- /dev/null +++ b/modules/niu/luasrc/controller/niu/dashboard.lua @@ -0,0 +1,44 @@ +--[[ +LuCI - Lua Development Framework + +Copyright 2009 Steven Barth + +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$ +]]-- + +local req = require +module "luci.controller.niu.dashboard" + +function index() + local translate = require "luci.i18n".translate + local uci = require "luci.model.uci" + + local root = node() + if not root.lock then + root.target = alias("niu") + root.index = true + end + + entry({"niu"}, alias("niu", "dashboard"), "NIU", 10) + entry({"niu", "dashboard"}, call("dashboard"), "Dashboard", 1) +end + +local require = req + +function dashboard() + local dsp = require "luci.dispatcher" + local tpl = require "luci.template" + local utl = require "luci.util" + local uci = require "luci.model.uci" + local str = require "luci.store" + str.uci_state = str.uci_state or uci.cursor() + + local nds = dsp.node("niu").nodes + tpl.render("niu/dashboard", {utl = utl, nodes = nds, dsp = dsp, tpl = tpl}) +end diff --git a/modules/niu/luasrc/controller/niu/network.lua b/modules/niu/luasrc/controller/niu/network.lua new file mode 100644 index 000000000..11f87fc3c --- /dev/null +++ b/modules/niu/luasrc/controller/niu/network.lua @@ -0,0 +1,22 @@ +--[[ +LuCI - Lua Development Framework + +Copyright 2009 Steven Barth + +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$ +]]-- + +local req = require +module "luci.controller.niu.network" + +function index() + entry({"niu", "network"}, alias("admin", "network"), "Network") + .dbtemplate = "niu/network" + entry({"niu", "network", "lan"}, cbi("niu/network/lan"), "Configure LAN") +end diff --git a/modules/niu/luasrc/model/cbi/niu/network/lan.lua b/modules/niu/luasrc/model/cbi/niu/network/lan.lua new file mode 100644 index 000000000..acbfe4fb4 --- /dev/null +++ b/modules/niu/luasrc/model/cbi/niu/network/lan.lua @@ -0,0 +1,8 @@ +local d = Delegator() +d.allow_finish = true +d.allow_back = true +d.allow_cancel = true + +d:add("lan1", load("niu/network/lan1")) + +return d \ No newline at end of file diff --git a/modules/niu/luasrc/model/cbi/niu/network/lan1.lua b/modules/niu/luasrc/model/cbi/niu/network/lan1.lua new file mode 100644 index 000000000..727526b78 --- /dev/null +++ b/modules/niu/luasrc/model/cbi/niu/network/lan1.lua @@ -0,0 +1,106 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2009 Steven Barth +Copyright 2009 Jo-Philipp Wich + +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$ +]]-- + +local nw = require "luci.model.network" +local fw = require "luci.model.firewall" + +local has_ipv6 = nw:has_ipv6() + +m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) +m:chain("firewall") + +nw.init(m.uci) +fw.init(m.uci) + +s = m:section(NamedSection, "lan", "interface") +s.addremove = false + +s:tab("general", translate("niu_general", "General Settings")) + +ipaddr = s:taboption("general", Value, "ipaddr", translate("ipaddress")) + +nm = s:taboption("general", Value, "netmask", translate("netmask")) +nm:value("255.255.255.0") +nm:value("255.255.0.0") +nm:value("255.0.0.0") + + + +s:tab("expert", translate("niu_expert", "Expert Settings")) + +mac = s:taboption("expert", Value, "macaddr", translate("macaddress")) + +mtu = s:taboption("expert", Value, "mtu", "MTU") +mtu.isinteger = true + +dns = s:taboption("expert", Value, "dns", translate("dnsserver")) +dns:depends("peerdns", "") + + +gw = s:taboption("expert", Value, "gateway", translate("gateway")) +bcast = s:taboption("expert", Value, "bcast", translate("broadcast")) + + +if has_ipv6 then + ip6addr = s:taboption("expert", Value, "ip6addr", translate("ip6address"), translate("cidr6")) + ip6gw = s:taboption("expert", Value, "ip6gw", translate("gateway6")) +end + + +br = s:taboption("expert", Flag, "type", translate("a_n_i_bridge"), translate("a_n_i_bridge1")) +br.enabled = "bridge" +br.rmempty = true + +stp = s:taboption("expert", Flag, "stp", translate("a_n_i_stp"), + translate("a_n_i_stp1", "Enables the Spanning Tree Protocol on this bridge")) +stp:depends("type", "1") +stp.rmempty = true + +ifname_single = s:taboption("expert", Value, "ifname_single", translate("interface")) +ifname_single.template = "cbi/network_ifacelist" +ifname_single.widget = "radio" +ifname_single.nobridges = true +ifname_single.rmempty = true +ifname_single:depends("type", "") + +function ifname_single.cfgvalue(self, s) + return self.map.uci:get("network", s, "ifname") +end + +function ifname_single.write(self, s, val) + local n = nw:get_network(s) + if n then n:ifname(val) end +end + + +ifname_multi = s:taboption("expert", MultiValue, "ifname_multi", translate("interface")) +ifname_multi.template = "cbi/network_ifacelist" +ifname_multi.nobridges = true +ifname_multi.widget = "checkbox" +ifname_multi:depends("type", "1") +ifname_multi.cfgvalue = ifname_single.cfgvalue +ifname_multi.write = ifname_single.write + +for _, d in ipairs(nw:get_interfaces()) do + if not d:is_bridge() then + ifname_single:value(d:name()) + ifname_multi:value(d:name()) + end +end + + + + +return m diff --git a/modules/niu/luasrc/view/niu/dashboard.htm b/modules/niu/luasrc/view/niu/dashboard.htm new file mode 100644 index 000000000..cdd65663f --- /dev/null +++ b/modules/niu/luasrc/view/niu/dashboard.htm @@ -0,0 +1,22 @@ +<%+header%> + +<% +local function cmp(a, b) + return (a.order or 100) < (b.order or 100) +end +for k, v in utl.spairs(nodes, cmp) do + if v.dbtemplate then + %> +
+ <%=v.title%> + <% + tpl.render(v.dbtemplate) + %> +
+ <% + end +end + +%> + +<%+footer%> \ No newline at end of file diff --git a/modules/niu/luasrc/view/niu/network.htm b/modules/niu/luasrc/view/niu/network.htm new file mode 100644 index 000000000..71296371f --- /dev/null +++ b/modules/niu/luasrc/view/niu/network.htm @@ -0,0 +1,32 @@ +<% +local dsp = require "luci.dispatcher" +local utl = require "luci.util" +local str = require "luci.store" + +local nws = {} +str.uci_state:foreach("network", "interface", function(s) + nws[#nws+1] = s +end) + +local function cmp(a, b) + return (a.order or 100) < (b.order or 100) +end +%> +
Status:
+ +<% +for _, v in ipairs(nws) do if v[".name"] ~= "loopback" then +%> + +<% end end %> +
<%=v[".name"]%><%=v.ipaddr%>
+
+
    +<% +for k, v in utl.spairs(dsp.node("niu", "network").nodes, cmp) do +%> +
  • "><%=v.title%>
  • +<% +end +%> +
\ No newline at end of file diff --git a/modules/niu/luasrc/view/niu/null.htm b/modules/niu/luasrc/view/niu/null.htm new file mode 100644 index 000000000..fe3a0735d --- /dev/null +++ b/modules/niu/luasrc/view/niu/null.htm @@ -0,0 +1 @@ +NULL \ No newline at end of file -- 2.11.0