summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dhcp-controller.lua6
-rw-r--r--dhcp-editnet-html.lsp7
-rw-r--r--dhcp-model.lua50
3 files changed, 51 insertions, 12 deletions
diff --git a/dhcp-controller.lua b/dhcp-controller.lua
index fc0e6f8..4db9f25 100644
--- a/dhcp-controller.lua
+++ b/dhcp-controller.lua
@@ -127,7 +127,7 @@ editnet = function ( self )
tmp = self.clientdata
net = self.model.create_new_net( tmp.name, tmp.defleasetime, tmp.maxleasetime, tmp.gateway,
tmp.domainname, tmp.dnssrv1, tmp.dnssrv2, tmp.subnet, tmp.netmask, tmp.leaserangestart,
- tmp.leaserangeend, tmp.wpad, tmp.statichosts, tmp.unknownclients, tmp.dynamichosts )
+ tmp.leaserangeend, tmp.wpad, tmp.statichosts, tmp.unknownclients, tmp.dynamichosts, tmp.advanced )
errcode, net = self.model.subnet_write( net )
return ( cfe({ option = option, value = net, errcode = errcode }) )
end
@@ -150,13 +150,13 @@ createnet = function ( self )
}
if self.clientdata.cmd == "new" then
- net = self.model.create_new_net( "<new>", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil )
+ net = self.model.create_new_net( "<new>", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil )
return ( cfe({ option = option, value = net, errcode = { msg = "", fields = nil }}) )
elseif self.clientdata.cmd == "create" then
tmp = self.clientdata
net = self.model.create_new_net( tmp.name, tmp.defleasetime, tmp.maxleasetime,
tmp.gateway, tmp.domainname, tmp.dnssrv1, tmp.dnssrv2, tmp.subnet,
- tmp.netmask, tmp.leaserangestart, tmp.leaserangeend, tmp.wpad, "", tmp.unknownclients, "" )
+ tmp.netmask, tmp.leaserangestart, tmp.leaserangeend, tmp.wpad, "", tmp.unknownclients, "", "" )
errcode, net = self.model.subnet_create( net )
if #errcode.msg == 0 then
self.conf.type = "redir"
diff --git a/dhcp-editnet-html.lsp b/dhcp-editnet-html.lsp
index 9bab76b..92c83c4 100644
--- a/dhcp-editnet-html.lsp
+++ b/dhcp-editnet-html.lsp
@@ -63,6 +63,12 @@ Enter one host per line in the format: <i>hostname;mac;comment</i><br>
<table>
<tr><td><div id="dynamic"><textarea name="dynamichosts" style="width:600px;"><? io.write( net.dynamichosts.value ) ?></textarea></div></td></tr>
</table><br>
+
+<h2>Subnet: Advanced Configuration</h2>
+<input type="checkbox" name="use_advanced"> <i>Activate Advanced Configuration - use with caution!</i><br><br>
+<table>
+<tr><td>
+<div id="advanced"><textarea name="advanced" style="width:600px"><? io.write( net.advanced.value ) ?></textarea></div></td></tr>
<tr><td><input type=submit name="cmd" value="update" style="width:100px"></form>
<form action="<? io.write(option.script .. option.prefix .. option.controller .. "/delnet") ?>" method="POST">
<input type=submit name="cmd" value="delete" style="width:100px">
@@ -71,3 +77,4 @@ Enter one host per line in the format: <i>hostname;mac;comment</i><br>
<input type=submit name="cmd" value="back" style="width:100px"></form></td></tr>
</table>
</form>
+
diff --git a/dhcp-model.lua b/dhcp-model.lua
index 9cbc069..7361bc0 100644
--- a/dhcp-model.lua
+++ b/dhcp-model.lua
@@ -168,6 +168,21 @@ config_generate = function()
msg = "Configuration Generation Failed!\n\n" .. spec2_msg
return msg
end
+ --- generate advanced part / drop in
+ advancedfile = io.open( cfgdir .. net.name.value .. ".advanced", "r" )
+ if advancedfile ~= nil then
+ advanceddata = advancedfile:read( "*a" )
+ advancedfile:close()
+ if advanceddata == nil then
+ advancedfile:close()
+ msg = "Configuration Generation Failed!\n\n" ..
+ "Reason: failed to read advanced file for '" .. net.name.value .. "'"
+ return msg
+ end
+ tmpfile:write( advanceddata .. "\n" )
+ end
+ ---
+
tmpfile:write( "}\n\n" )
end
@@ -269,12 +284,6 @@ generate_hosts = function( tmpfile, tmpfilename, net )
return msg
end
msg = validate_dynamichosts( dynamichosts )
- if #msg > 0 then
- dynamichostsfile:close()
- msg = "Configuration Generation Failed!\n\n" ..
- "Reason: " .. msg
- return msg
- end
--- loop through all hosts
done = false
@@ -316,7 +325,7 @@ end
subnet_read = function( name )
local filename = cfgdir .. name .. ".subnet"
- local net = create_new_net( name, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil )
+ local net = create_new_net( name, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil )
for line in io.lines(filename) do
if (string.sub(line, 1, 15) == "def-lease-time:") then
@@ -351,6 +360,7 @@ subnet_read = function( name )
net.statichosts.value = subnet_get_spechosts( name, "static" )
net.dynamichosts.value = subnet_get_spechosts( name, "dynamic" )
+ net.advanced.value = subnet_get_spechosts( name, "advanced" )
return net
end
@@ -402,6 +412,21 @@ subnet_update_dynamichosts = function( name, dynamichosts )
return msg
end
+subnet_update_advanced = function( name, advanced )
+ local msg = "";
+ local filename = cfgdir .. name .. ".advanced"
+
+ file, errmsg = io.open( filename, "wb+" )
+ if file == nil then
+ msg = "Error: Failed to open " .. filename .. "(" .. errmsg .. ")!"
+ else
+ file:write( advanced )
+ file:close()
+ end
+
+ return msg
+end
+
read_settings = function()
local filename = cfgdir .. "globalsettings.conf"
local settings = create_new_settings( nil, nil, nil )
@@ -465,6 +490,12 @@ subnet_write = function( net )
table.insert( fields, "dynamichosts" )
end
+ spec_msg = subnet_update_advanced( net.name.value, net.advanced.value )
+ if #spec_msg > 0 then
+ msg = spec_msg
+ table.insert( fields, "advanced" )
+ end
+
return cfe({ msg = msg, fields = {}}), net
end
@@ -745,7 +776,7 @@ get_subnets = function ()
return retval
end
-create_new_net = function( name, defleasetime, maxleasetime, gateway, domainname, dnssrv1, dnssrv2, subnet, netmask, leaserangestart, leaserangeend, wpad, statichosts, unknownclients, dynamichosts )
+create_new_net = function( name, defleasetime, maxleasetime, gateway, domainname, dnssrv1, dnssrv2, subnet, netmask, leaserangestart, leaserangeend, wpad, statichosts, unknownclients, dynamichosts, advanced )
net = { name = { label="Name", value=nonil(name), type="message" },
defleasetime = { label="Default Lease Time", value=nonil(defleasetime), type="text" },
maxleasetime = { label="Maximum Lease Time", value=nonil(maxleasetime), type="text" },
@@ -760,7 +791,8 @@ create_new_net = function( name, defleasetime, maxleasetime, gateway, domainname
wpad = { label="Web Proxy Auto Discovery", value=nonil(wpad), type="text" },
statichosts = { label="Static Hosts", value=nonil(statichosts), type="text" },
dynamichosts = { label="Dynamic Hosts", value=nonil(dynamichosts), type="text" },
- unknownclients = { label="Unknown Clients", value=nonil(unknownclients), type="text" }
+ unknownclients = { label="Unknown Clients", value=nonil(unknownclients), type="text" },
+ advanced = { label="Advanced", value=nonil(advanced), type="text" }
}
if net.unknownclients.value ~= "permit" then
net.unknownclients.value = "deny"