diff options
author | Andreas Brodmann <andreas.brodmann@gmail.com> | 2007-11-17 11:14:23 +0000 |
---|---|---|
committer | Andreas Brodmann <andreas.brodmann@gmail.com> | 2007-11-17 11:14:23 +0000 |
commit | 7a793a47b6da94ea68808f61972158056e1d5649 (patch) | |
tree | d39b3cb892e401b5751632db273cd6d3257cfc40 | |
parent | 365f56f2b68b036352d12daa13695b662a9d0017 (diff) | |
download | acf-dhcp-7a793a47b6da94ea68808f61972158056e1d5649.tar.bz2 acf-dhcp-7a793a47b6da94ea68808f61972158056e1d5649.tar.xz |
/acf/dhcp: beta: implemented advanced (non validated stuff) per subnet
git-svn-id: svn://svn.alpinelinux.org/acf/dhcp/trunk@331 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r-- | dhcp-controller.lua | 6 | ||||
-rw-r--r-- | dhcp-editnet-html.lsp | 7 | ||||
-rw-r--r-- | dhcp-model.lua | 50 |
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" |