summaryrefslogtreecommitdiffstats
path: root/shorewall-controller.lua
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2008-02-01 18:14:36 +0000
committerMika Havela <mika.havela@gmail.com>2008-02-01 18:14:36 +0000
commit37b4a15a9a0e07504188b96567d500085b035b4d (patch)
tree9986b737683c22c8f5aafb47817ec1ab9b41efce /shorewall-controller.lua
parent33dd344b2d2074c8838834e1c77336499b8cb068 (diff)
downloadacf-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.lua407
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