diff options
-rw-r--r-- | dhcp-controller.lua | 40 | ||||
-rw-r--r-- | dhcp-editnet-html.lsp | 14 | ||||
-rw-r--r-- | dhcp-home-html.lsp | 36 | ||||
-rw-r--r-- | dhcp-model.lua | 17 |
4 files changed, 70 insertions, 37 deletions
diff --git a/dhcp-controller.lua b/dhcp-controller.lua index c0be37d..8811e86 100644 --- a/dhcp-controller.lua +++ b/dhcp-controller.lua @@ -35,6 +35,10 @@ end editnet = function ( self ) + if not self.clientdata.cmd then + list_redir(self) + end + local net = {} local option = { script = ENV["SCRIPT_NAME"], prefix = self.conf.prefix, @@ -49,24 +53,23 @@ editnet = function ( self ) end end - if self.clientdata.cmd then - if self.clientdata.cmd == "Update" then - net = { name = { label="Name", value=self.model.nonil(self.clientdata.name), type="message" }, - defleasetime = { label="Default Lease Time", value=self.model.nonil(self.clientdata.defleasetime), type="text" }, - maxleasetime = { label="Maximum Lease Time", value=self.model.nonil(self.clientdata.maxleasetime), type="text" }, - gateway = { label="Gateway", value=self.model.nonil(self.clientdata.gateway), type="text" }, - domainname = { label="Domainname", value=self.model.nonil(self.clientdata.domainname), type="text" }, - dnssrv1 = { label="DNS Server 1", value=self.model.nonil(self.clientdata.dnssrv1), type="text" }, - dnssrv2 = { label="DNS Server 2", value=self.model.nonil(self.clientdata.dnssrv2), type="text" }, - subnet = { label="Subnet", value=self.model.nonil(self.clientdata.subnet), type="text" }, - netmask = { label="Netmask", value=self.model.nonil(self.clientdata.netmask), type="text" }, - leaserangestart = { label="Lease Range Start", value=self.model.nonil(self.clientdata.leaserangestart), type="text" }, - leaserangeend = { label="Lease Range End", value=self.model.nonil(self.clientdata.leaserangeend), type="text" }, - wpad = { label="Web Proxy Auto Discovery", value=self.model.nonil(self.clientdata.wpad), type="text" } - } - self.model.subnet_write( net ) - return ( cfe({ option = option, value = net, error = { value = nil, fields = nil }}) ) - end + if self.clientdata.cmd == "Update" then + net = { name = { label="Name", value=self.model.nonil(self.clientdata.name), type="message" }, + defleasetime = { label="Default Lease Time", value=self.model.nonil(self.clientdata.defleasetime), type="text" }, + maxleasetime = { label="Maximum Lease Time", value=self.model.nonil(self.clientdata.maxleasetime), type="text" }, + gateway = { label="Gateway", value=self.model.nonil(self.clientdata.gateway), type="text" }, + domainname = { label="Domainname", value=self.model.nonil(self.clientdata.domainname), type="text" }, + dnssrv1 = { label="DNS Server 1", value=self.model.nonil(self.clientdata.dnssrv1), type="text" }, + dnssrv2 = { label="DNS Server 2", value=self.model.nonil(self.clientdata.dnssrv2), type="text" }, + subnet = { label="Subnet", value=self.model.nonil(self.clientdata.subnet), type="text" }, + netmask = { label="Netmask", value=self.model.nonil(self.clientdata.netmask), type="text" }, + leaserangestart = { label="Lease Range Start", value=self.model.nonil(self.clientdata.leaserangestart), type="text" }, + leaserangeend = { label="Lease Range End", value=self.model.nonil(self.clientdata.leaserangeend), type="text" }, + wpad = { label="Web Proxy Auto Discovery", value=self.model.nonil(self.clientdata.wpad), + type="select", option = { "yes", "no"} } + } + self.model.subnet_write( net ) + return ( cfe({ option = option, value = net, error = { value = nil, fields = nil }}) ) end net = self.model.subnet_read( self.clientdata.network ); @@ -90,6 +93,7 @@ home = function ( self ) if self.model.is_running( "dhcpd" ) then info.status.value = "running" end + info.subnets = self.model.get_subnets() return ( cfe({ option = option, value = "", info = info }) ) end diff --git a/dhcp-editnet-html.lsp b/dhcp-editnet-html.lsp index 296d614..8330c31 100644 --- a/dhcp-editnet-html.lsp +++ b/dhcp-editnet-html.lsp @@ -18,6 +18,18 @@ <tr><td><nobr>Default Lease Time:</nobr></td><td><input type="text" name="defleasetime" value="<? io.write(net.defleasetime.value) ?>"></td></tr> <tr><td><nobr>Maximum Lease Time:</nobr></td><td><input type="text" name="maxleasetime" value="<? io.write(net.maxleasetime.value) ?>"></td></tr> <tr><td><nobr>Domain Name:</nobr></td><td><input type="text" name="domainname" value="<? io.write(net.domainname.value) ?>"></td></tr> - <tr><td><nobr>WPAD:</nobr></td><td><input type="text" name="wpad" value="<? io.write(net.wpad.value) ?>"></td></tr> + <tr><td><nobr>WPAD:</nobr></td><td> + <select name="wpad" size="1"> +<? + for k,v in ipairs(net.wpad.option) do + if (v == net.wpad.value) then + io.write("<option selected>" .. v .."</option>") + else + io.write("<option>" .. v .. "</option>") + end + end +?> + </select> + </td></tr> <tr><td></td><td><input type=submit name=cmd value="Update" style="width:300px"></form><form action="<? io.write(option.script .. option.prefix .. option.controller .. "/home") ?> method="POST"> <input type=submit name="cmd" value="Back" style="width:300px"></form></td></tr></table> diff --git a/dhcp-home-html.lsp b/dhcp-home-html.lsp index 25757ee..a631233 100644 --- a/dhcp-home-html.lsp +++ b/dhcp-home-html.lsp @@ -25,11 +25,19 @@ </form> </table><br> -<h2>DHCPd - View Files</h2> +<h2>DHCPd - Edit Subnet</h2> <table> -<form action="<? io.write(data.script .. data.prefix .. data.controller .. "/view") ?>" method="POST"> -<tr><td><input type=submit name="conf" value="View dhcpd.conf" style="width:200px"></td></tr> -<tr><td><input type=submit name="leases" value="View dhcpd.leases" style="width:200px"></td></tr> +<form action="<? io.write(data.script .. data.prefix .. data.controller .. "/editnet") ?>" method="POST"> +<tr><td>Network to modify<td> +<td><select name="network" size="1"> + <option value="choose">-- Choose Network --</option> +<? + for k,v in ipairs(form.info.subnets) do + io.write("<option>" .. v .. "</option>") + end +?> +</select></td> +<td><input type=submit name="cmd" value="Edit" style="width:200px"></td> </form> </table><br> @@ -43,19 +51,13 @@ </tr> </form> </table> -<br><br> +<br> -<h2>DHCPd - Edit Subnet</h2> +<h2>DHCPd - View Files</h2> <table> -<form action="<? io.write(data.script .. data.prefix .. data.controller .. "/editnet") ?>" method="POST"> -<tr><td>Network to modify<td> -<td><select name="network" size="1"> - <option value="choose">-- Choose Network --</option> - <option>default</option> - <option>ism</option> - <option>telephony</option> - <option>housecontrol</option> -</select></td> -<td><input type=submit name="cmd" value="Edit" style="width:200px"></td> +<form action="<? io.write(data.script .. data.prefix .. data.controller .. "/view") ?>" method="POST"> +<tr><td><input type=submit name="conf" value="View dhcpd.conf" style="width:200px"></td></tr> +<tr><td><input type=submit name="leases" value="View dhcpd.leases" style="width:200px"></td></tr> </form> -</table> +</table><br> + diff --git a/dhcp-model.lua b/dhcp-model.lua index 2a952f7..4fca1a9 100644 --- a/dhcp-model.lua +++ b/dhcp-model.lua @@ -2,6 +2,8 @@ -- Copyright(c) 2007 A. Brodmann - Licensed under terms of GPL2 module (..., package.seeall) +require("lfs") + local subnet = { } local cfgdir = "/etc/dhcp/" @@ -18,7 +20,7 @@ subnet_read = function( name ) netmask = cfe({ label="Netmask" }), leaserangestart = cfe({ label="Lease Range Start" }), leaserangeend = cfe({ label="Lease Range End" }), - wpad = cfe({ label="Web Proxy Auto Discovery" }) + wpad = cfe({ label="Web Proxy Auto Discovery", type="select", option = { "yes", "no" } }) } for line in io.lines(filename) do @@ -139,4 +141,17 @@ function nonil( value ) return retval end + +get_subnets = function () + + local retval = retval or {} + + for sn in lfs.dir( cfgdir ) do + if string.sub(sn, -7) == ".subnet" then + table.insert(retval, string.sub(sn, 1, -8)) + end + end + + return retval +end |