diff options
author | Mika Havela <mika.havela@gmail.com> | 2008-02-01 18:14:36 +0000 |
---|---|---|
committer | Mika Havela <mika.havela@gmail.com> | 2008-02-01 18:14:36 +0000 |
commit | 37b4a15a9a0e07504188b96567d500085b035b4d (patch) | |
tree | 9986b737683c22c8f5aafb47817ec1ab9b41efce /shorewall-controller.lua | |
parent | 33dd344b2d2074c8838834e1c77336499b8cb068 (diff) | |
download | acf-shorewall-37b4a15a9a0e07504188b96567d500085b035b4d.tar.bz2 acf-shorewall-37b4a15a9a0e07504188b96567d500085b035b4d.tar.xz |
Changed shorewall so that it reports/uses cfe's instead!
git-svn-id: svn://svn.alpinelinux.org/acf/shorewall/trunk@682 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'shorewall-controller.lua')
-rw-r--r-- | shorewall-controller.lua | 407 |
1 files changed, 349 insertions, 58 deletions
diff --git a/shorewall-controller.lua b/shorewall-controller.lua index 8218b4d..27da886 100644 --- a/shorewall-controller.lua +++ b/shorewall-controller.lua @@ -1,95 +1,386 @@ module(..., package.seeall) --- Cause an http redirect to our "read" action --- We use the self.conf table because it already has prefix,controller,etc --- The redir code is defined in the application error handler (acf-controller) local list_redir = function (self) self.conf.action = "status" self.conf.type = "redir" error (self.conf) end -mvc={} +mvc = {} mvc.on_load = function(self, parent) if (self.worker[self.conf.action] == nil ) or ( self.conf.action == "init" ) then self.worker[self.conf.action] = list_redir(self) end end -logfile = function (self) - return ( {status = self.model:getstatus(), logfile = self.model:get_logfile(), url = url } ) +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 displaycmdsave(self) + -- Add a cmd button to the view + local cmdsave = cfe({ name="cmdsave", + label="Save/Apply above settings", + value="Save", + type="submit", + }) + return cmdsave +end + +local function displaycmdmanagement(disablestart,disablestop,disablerestart) + -- Add a management buttons + local management = {} + management.start = cfe({ name="cmdmanagement", + label="Program control-panel", + value="Start", + type="submit", + }) + management.stop = cfe({ name="cmdmanagement", + label="Program control-panel", + value="Stop", + type="submit", + }) + management.restart = cfe({ name="cmdmanagement", + label="Program control-panel", + value="Restart", + type="submit", + }) + + -- Disable management buttons based on if the process is running or not + if (disablestart) then management.start.disabled = "yes" end + if (disablestop) then management.stop.disabled = "yes" end + if (disablerestart) then management.restart.disabled = "yes" end + + return management +end + +function status(self) + return { status=getstatus(self) } end -check = function(self) - local check = nil - if (self.clientdata.cmd) then - if self.clientdata.cmd == "stop" then - self.conf.action = "confirmation" - self.conf.type = "redir" +--[=[ +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() + + -- 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 - check = self.model:startstop_service(self.clientdata.cmd) - check = self.clientdata.cmd + 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 - check = self.model:check_config() + disablestop = "yes" end - return ( {status = self.model:getstatus(), - check = check, - previousaction = self.clientdata.cmd, - confirm_url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller .. "/confirmation" } ) + -- 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 + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) + end -status = function(self) - if self.clientdata.cmd == "check" then - self.conf.action = "check" - self.conf.type = "redir" - error (self.conf) +--[[ + -- Save changes + local modifications = self.clientdata.filecontent or "" + if ( self.clientdata.cmdsave) then + modifications = self.model:updatefilecontent(modifications) end --- if self.clientdata.cmd == "restart" then --- return ( {programstats = self.model:restart_service(), url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller } ) --- end - return ( {status = self.model:getstatus(), url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller } ) -end +--]] + + local status = getstatus(self) + 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) + + return { + option={ script=ENV["SCRIPT_NAME"], + prefix=self.conf.prefix, + controller = self.conf.controller, + action = "expert", }, + cmdmanagement = cmdmanagement, + management = management, + config = config, + status = status, + startstop = startstop, + debugclientdata = self.clientdata, + } -expert = function(self) - return ( {status = self.model:getstatus(),filelist = self.model:get_filelist(), url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller } ) end -edit = function (self) - local name = self.clientdata.name or "" - if (name == "") then - self.conf.action = "status" - self.conf.type = "redir" +function logfile(self) + local cmdmanagement, cmdmanagementresult + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + cmdmanagementresult, cmdmanagement = self.model:startstop_service( cmdmanagement ) end - local modifications = self.clientdata.modifications or "" - local cmd = self.clientdata.cmd - local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - if ( modifications ~= "") then - modifications = self.model:update_filecontent(name,modifications) +--[[ + -- Save changes + local modifications = self.clientdata.filecontent or "" + if ( self.clientdata.cmdsave) then + modifications = self.model:updatefilecontent(modifications) end +--]] + local status = getstatus(self) + local config = self.model:getlogfile() + + + -- Display save button +-- config.cmdsave = displaycmdsave() - if ( cmd ~= nil ) then - startstop = self.model:startstop_service( cmd ) +--[[ + -- 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 - return ( {name=name,startstop = startstop, - status = self.model:getstatus(), - file = self.model:get_filedetails(name), - modifications = modifications, - url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller, - confirm_url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller .. "/confirmation", } ) + -- Display management buttons + local management = displaycmdmanagement(disablestart,disablestop,disablerestart) +--]] + + return { + option={ script=ENV["SCRIPT_NAME"], + prefix=self.conf.prefix, + controller = self.conf.controller, + action = "expert", }, + cmdmanagement = cmdmanagement, + management = management, + config = config, + status = status, + startstop = startstop, + debugclientdata = self.clientdata, + } + end -confirmation = function (self) - local confirm = self.clientdata.confirm - if ( confirm ~= nil ) then - startstop = self.model:startstop_service( confirm ) +function expert(self) + local cmdmanagement, cmdmanagementresult + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + 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 - return ( {startstop = startstop, - previousaction = self.clientdata.cmd, - status = self.model:getstatus(), - confirm_url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller .. "/confirmation", - url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller, } ) +--]] + local status = getstatus(self) + 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, + controller = self.conf.controller, + action = "expert", }, + cmdmanagement = cmdmanagement, + management = management, + config = config, + status = status, + startstop = startstop, + debugclientdata = self.clientdata, + } + end +function edit(self) + local cmdmanagement, cmdmanagementresult, modifications + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + 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 config = self.model:getfiledetails(cfe({ + name="editfile", + value=self.clientdata.name, + })) + + -- 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 = "edit", }, + cmdmanagement = cmdmanagement, + modifications = modifications, + management = management, + config = config, + status = status, + startstop = startstop, + debugclientdata = self.clientdata, + } + +end |