diff options
author | Mika Havela <mika.havela@gmail.com> | 2008-03-04 08:49:41 +0000 |
---|---|---|
committer | Mika Havela <mika.havela@gmail.com> | 2008-03-04 08:49:41 +0000 |
commit | 73433bf9ea9a0f7f56203bafa111821bb47856cf (patch) | |
tree | 8961f85a4d8827ad05c6c085daf04f0de998b0a3 | |
parent | 8c41156d76be7332fd34d1ab18a078510745b81a (diff) | |
download | acf-shorewall-73433bf9ea9a0f7f56203bafa111821bb47856cf.tar.bz2 acf-shorewall-73433bf9ea9a0f7f56203bafa111821bb47856cf.tar.xz |
Added the missing (example)-page. Added functionallity so that the page has live data
git-svn-id: svn://svn.alpinelinux.org/acf/shorewall/trunk@799 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r-- | shorewall-check-html.lsp | 2 | ||||
-rw-r--r-- | shorewall-config-html.lsp | 141 | ||||
-rw-r--r-- | shorewall-controller.lua | 245 | ||||
-rw-r--r-- | shorewall-model.lua | 30 |
4 files changed, 204 insertions, 214 deletions
diff --git a/shorewall-check-html.lsp b/shorewall-check-html.lsp index 8aee254..38d788b 100644 --- a/shorewall-check-html.lsp +++ b/shorewall-check-html.lsp @@ -58,7 +58,7 @@ io.write(html.form[form.config.checkresult.type](form.config.checkresult)) <? local cmdform = form.management -local tags = { "start", "stop", "restart" } +local tags = { "restart" } if (cmdform) and (cmdform[tags[1]]) then ?> <form name="management" action="" method="POST"> diff --git a/shorewall-config-html.lsp b/shorewall-config-html.lsp new file mode 100644 index 0000000..3523ed6 --- /dev/null +++ b/shorewall-config-html.lsp @@ -0,0 +1,141 @@ +<? local form = ... ?> + +<? +--[[ DEBUG INFORMATION +io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>") +io.write(html.cfe_unpack(form)) +io.write("</span>") +--]] +?> + +<? +function displayinfo(myform,tags,viewtype) + for k,v in pairs(tags) do + if (myform[v]) and (myform[v]["value"]) then + local val = myform[v] + io.write("\n\t<DT") + if (#val.errtxt > 0) then + val.class = "error" + io.write(" class='error'") + end + io.write(">" .. val.label .. "</DT>") + io.write("\n\t\t<DD>") + if (viewtype == "viewonly") then + io.write(val.value) + elseif (val.type == "radio") and (type(val.option) == "table") and (#val.option > 0) then + io.write("<span style='display:inline' class='" .. ( val.class or "") .. "'>") + for k1,v1 in pairs(val.option) do + io.write(tostring(v1.label) .. ":") + io.write("<input style='margin-right:20px;margin-left:5px;' type='radio' class='" .. ( val.class or "") .. "' name='" .. val.name .. "'") + if (tostring(val.value) == tostring(v1.value)) then io.write(" checked='yes'") end + io.write(" value='" .. v1.value .. "'>") + end + io.write("</input></span>") + else + io.write(html.form[val.type](val)) + end + if (val.descr) and (#val.descr > 0) then io.write("\n\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>") end + if (#val.errtxt > 0) then io.write("\n\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>") end + io.write("\n\t\t</DD>\n") + end + end +end +?> + + +<H1>SYSTEM INFO</H1> +<DL> +<? +local myform = form.status +local tags = { "status", "version", } +displayinfo(myform,tags,"viewonly") +?> +</DL> + + +<? local myform = form.config ?> +<form name="cmd" action="" method="POST"> +<h1>CONFIGURATION</h1> + + +<H2>Advanced configuration</H2> +<H3>Parameters</H3> +<DL> +<? +local tags = { "params_list", "params_list_cmd", } +displayinfo(myform,tags) +?> +</DL> + +<H3>Interfaces</H3> +<DL> +<? +local tags = { "interfaces_list", "interfaces_list_cmd", } +displayinfo(myform,tags) +?> +</DL> + + + +<H3>Defince zones</H3> +<DL> +<? +local tags = { "zones_list", "zones_list_cmd", } +displayinfo(myform,tags) +?> +</DL> + +<h3>Default policies</h3> +<DL> +<? +local tags = { "policies_list", "policies_list_cmd",} +displayinfo(myform,tags) +?> +</DL> + +<h3>Rules</h3> +<DL> +<? +local tags = { "rules_list", "rules_list_cmd",} +displayinfo(myform,tags) +?> +</DL> + +</form> + + +<? +local cmdform = form.management +local tags = { "restart" } +if (cmdform) and (cmdform[tags[1]]) then +?> + <form name="management" action="" method="POST"> + <H1>MANAGEMENT</H1> + <dl> + <dt><?= cmdform[tags[1]]["label"] ?></dt> + <dd> + <? for k,v in pairs(tags) do ?> + <? if (cmdform[v]) then ?> + <? io.write(html.form[cmdform[v].type](cmdform[v])) ?> + <? end ?> + <? end ?> + </dd> + + <? if (form.cmdmanagement) and (#form.cmdmanagement.descr > 0) then ?> + <dt>Previous action result</dt> + <dd><pre><?= form.cmdmanagement.descr ?></pre></dd> + <? end ?> + </dl> + </form> + +<? end ?> + +<? --]] ?> + +<? +---[[ DEBUG INFORMATION +io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>") +io.write(html.cfe_unpack(form)) +io.write("</span>") +--]] +?> diff --git a/shorewall-controller.lua b/shorewall-controller.lua index efcaa65..b2bc2bb 100644 --- a/shorewall-controller.lua +++ b/shorewall-controller.lua @@ -13,16 +13,6 @@ mvc.on_load = function(self, parent) end end -local function getstatus(self) - local status = self.model.getstatus() --- if (#status.status.value > 0) then --- status.status.value = "Enabled" --- else --- status.status.value = "Disabled" --- end - return status -end - local function displaycmdmanagement(disablestart,disablestop,disablerestart) -- Add a management buttons local management = {} @@ -63,18 +53,36 @@ local function displaycmdsave(self) end function status(self) - return { status=getstatus(self) } + return { status=self.model.getstatus() } end function config(self) local config=self.model:getconfig() - local status=getstatus(self) + local status=self.model.getstatus() + + -- Redirect if button is pressed + if (self.clientdata.params_list_cmd) then + self.conf.action = "edit_params" + self.conf.type = "redir" + error (self.conf) + end -- Add a [New] record to the options table.insert(config.interfaces_list.option, "[New]") table.insert(config.zones_list.option, "[New]") table.insert(config.policies_list.option, "[New]") table.insert(config.rules_list.option, "[New]") + table.insert(config.params_list.option, "[New]") + + -- Add button + config.params_list_cmd = cfe ({ + name="params_list_cmd", + label="Edit above record", + value="Edit", + type="submit", +-- disabled="yes", + }) + config.params_list_cmd.descr="Mark a item in above list before pressing [" .. config.params_list_cmd.value .. "]" -- Add button config.interfaces_list_cmd = cfe ({ @@ -104,7 +112,7 @@ function config(self) type="submit", disabled="yes", }) - config.zones_list_cmd.descr="Mark a item in above list before pressing [" .. config.zones_list_cmd.value .. "]" + config.policies_list_cmd.descr="Mark a item in above list before pressing [" .. config.policies_list_cmd.value .. "]" -- Add button config.rules_list_cmd = cfe ({ @@ -114,7 +122,7 @@ function config(self) type="submit", disabled="yes", }) - config.zones_list_cmd.descr="Mark a item in above list before pressing [" .. config.zones_list_cmd.value .. "]" + config.rules_list_cmd.descr="Mark a item in above list before pressing [" .. config.rules_list_cmd.value .. "]" -- Management buttons -- Display management buttons @@ -125,77 +133,10 @@ function config(self) config=config, management = management, - } -end - ---[=[ -function config(self) - local cmdmanagement, cmdmanagementresult - local cmdsavereply = {} - local cmdsaveresult = {} - if ( self.clientdata.cmdmanagement) then - cmdmanagement = cfe({ - name="cmdmanagement", - value=string.lower(self.clientdata.cmdmanagement), - }) - cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) - end - if ( self.clientdata.cmdsave) then - local variables="logfile loglevel smallerlogs maxsize numrotate localandnetworklog remotelogging" -- Advanced-config options --- local variables="remotelogging" -- Guided-config options - for var in string.gmatch(variables, "%S+") do - -- Send nil instead of "" causes the parameter to be removed/deleted/empty/unset the variable in the config-file - if (self.clientdata[var] == "") then self.clientdata[var] = nil end - cmdsaveresult[var], cmdsavereply[var] = self.model:setconfigs( var,self.clientdata[var] ) - end - end - - local status = getstatus(self) - local config = self.model.getconfig() + clientdata=clientdata, - -- Write out erros from previous cmdsave actions - for k,v in pairs(cmdsaveresult) do - if not (v) then - config[k]["errtxt"] = tostring(cmdsavereply[k]["errtxt"]) - end - end - - -- Display save button - config.cmdsave = displaycmdsave() - - -- Management buttons - local disablestart,disablestop,disablerestart - -- Disable management buttons based on if the process is running or not - if (string.lower(status.status.value) == "enabled" ) then - disablestart = "yes" - else - disablestop = "yes" - end - -- Disable management buttons if there exist errors in the config - for k,v in pairs(config) do - if (config[k]["errtxt"] ~= "") then - disablestart = "yes" - disablestop = "yes" - disablerestart = "yes" - break - end - end - -- Display management buttons - local management = displaycmdmanagement(disablestart,disablestop,disablerestart) - - return { - option={ script=ENV["SCRIPT_NAME"], - prefix=self.conf.prefix, - controller = self.conf.controller, - action = "config", }, - status = status, - cmdmanagement = cmdmanagement, - management = management, - config = config, - debugclientdata = self.clientdata, } end ---]=] function check(self) local cmdmanagement, cmdmanagementresult @@ -207,40 +148,9 @@ function check(self) cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) end ---[[ - -- Save changes - local modifications = self.clientdata.filecontent or "" - if ( self.clientdata.cmdsave) then - modifications = self.model:updatefilecontent(modifications) - end ---]] - - local status = getstatus(self) + local status = self.model.getstatus() local config = self.model:configcheck() - - -- Display save button --- config.cmdsave = displaycmdsave() - ---[[ - -- Management buttons - local disablestart,disablestop,disablerestart - -- Disable management buttons based on if the process is running or not - if (string.lower(status.status.value) == "enabled" ) then - disablestart = "yes" - else - disablestop = "yes" - end - -- Disable management buttons if there exist errors in the config - for k,v in pairs(config) do - if (config[k]["errtxt"] ~= "") then - disablestart = "yes" - disablestop = "yes" - disablerestart = "yes" - break - end - end ---]] -- Display management buttons local management = displaycmdmanagement(disablestart,disablestop,disablerestart) @@ -269,43 +179,9 @@ function logfile(self) cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) end ---[[ - -- Save changes - local modifications = self.clientdata.filecontent or "" - if ( self.clientdata.cmdsave) then - modifications = self.model:updatefilecontent(modifications) - end ---]] - local status = getstatus(self) + local status = self.model.getstatus() local config = self.model:getlogfile() - - -- Display save button --- config.cmdsave = displaycmdsave() - ---[[ - -- Management buttons - local disablestart,disablestop,disablerestart - -- Disable management buttons based on if the process is running or not - if (string.lower(status.status.value) == "enabled" ) then - disablestart = "yes" - else - disablestop = "yes" - end - -- Disable management buttons if there exist errors in the config - for k,v in pairs(config) do - if (config[k]["errtxt"] ~= "") then - disablestart = "yes" - disablestop = "yes" - disablerestart = "yes" - break - end - end - - -- Display management buttons - local management = displaycmdmanagement(disablestart,disablestop,disablerestart) ---]] - return { option={ script=ENV["SCRIPT_NAME"], prefix=self.conf.prefix, @@ -331,43 +207,9 @@ function expert(self) cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) end ---[[ - -- Save changes - local modifications = self.clientdata.filecontent or "" - if ( self.clientdata.cmdsave) then - modifications = self.model:updatefilecontent(modifications) - end ---]] - local status = getstatus(self) + local status = self.model.getstatus() local config = self.model:getfilelist() - - -- Display save button --- config.cmdsave = displaycmdsave() - ---[[ - -- Management buttons - local disablestart,disablestop,disablerestart - -- Disable management buttons based on if the process is running or not - if (string.lower(status.status.value) == "enabled" ) then - disablestart = "yes" - else - disablestop = "yes" - end - -- Disable management buttons if there exist errors in the config - for k,v in pairs(config) do - if (config[k]["errtxt"] ~= "") then - disablestart = "yes" - disablestop = "yes" - disablerestart = "yes" - break - end - end - - -- Display management buttons - local management = displaycmdmanagement(disablestart,disablestop,disablerestart) ---]] - return { option={ script=ENV["SCRIPT_NAME"], prefix=self.conf.prefix, @@ -393,15 +235,14 @@ function edit(self) cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) end ----[[ -- Save changes if ( self.clientdata.cmdsave) then local filetochange = cfe ({ name=self.clientdata.filename, value=self.clientdata.filecontent, }) modifications = self.model:updatefilecontent(filetochange) self.clientdata.name = self.clientdata.filename end ---]] - local status = getstatus(self) + + local status = self.model.getstatus() local config = self.model:getfiledetails(cfe({ name="editfile", value=self.clientdata.name, @@ -410,28 +251,6 @@ function edit(self) -- Display save button config.cmdsave = displaycmdsave() ---[[ - -- Management buttons - local disablestart,disablestop,disablerestart - -- Disable management buttons based on if the process is running or not - if (string.lower(status.status.value) == "enabled" ) then - disablestart = "yes" - else - disablestop = "yes" - end - -- Disable management buttons if there exist errors in the config - for k,v in pairs(config) do - if (config[k]["errtxt"] ~= "") then - disablestart = "yes" - disablestop = "yes" - disablerestart = "yes" - break - end - end - - -- Display management buttons - local management = displaycmdmanagement(disablestart,disablestop,disablerestart) ---]] return { option={ script=ENV["SCRIPT_NAME"], @@ -448,3 +267,11 @@ function edit(self) } end + +function edit_params(self) + + + return { + status=status, + } +end diff --git a/shorewall-model.lua b/shorewall-model.lua index cecf0a1..081f842 100644 --- a/shorewall-model.lua +++ b/shorewall-model.lua @@ -34,6 +34,20 @@ local function getdetails() return programversion,programstatus,programstate end +local function read_config(file) + local path = baseurl .. file + if not (fs.is_file(path)) then + return {} + end + local filecontent = fs.read_file_as_array(path) + local output = {} + for k,v in pairs(filecontent) do + if not string.find ( v, "^[;#].*" ) then + table.insert(output, v) + end + end + return output +end -- ################################################################################ -- PUBLIC FUNCTIONS @@ -51,11 +65,19 @@ end function getconfig() local config = {} + config.params_list = cfe({ + name = "params_list", + label="List of parameters", + type="select", + option=read_config("params"), + }) + config.params_list.size=#config.params_list.option + 1 + config.interfaces_list = cfe({ name = "interfaces_list", label="List of interfaces", type="select", - option={"BRN", "DMZ", "REZ", } + option=read_config("interfaces"), }) config.interfaces_list.size=#config.interfaces_list.option + 1 @@ -63,7 +85,7 @@ function getconfig() name = "zones_list", label="List of zones", type="select", - option={"BRN", "DMZ", "REZ", } + option=read_config("zones"), }) config.zones_list.size=#config.zones_list.option + 1 @@ -71,7 +93,7 @@ function getconfig() name = "policies_list", label="List of policies", type="select", - option={"ACCET BRN FW", } + option=read_config("policy"), }) config.policies_list.size=#config.policies_list.option + 1 @@ -79,7 +101,7 @@ function getconfig() name = "rules_list", label="List of rules", type="select", - option={"ACCET BRN FW", } + option=read_config("rules"), }) config.rules_list.size=#config.rules_list.option + 1 |