summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dhcp-controller.lua40
-rw-r--r--dhcp-editnet-html.lsp14
-rw-r--r--dhcp-home-html.lsp36
-rw-r--r--dhcp-model.lua17
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