summaryrefslogtreecommitdiffstats
path: root/fetchmail-controller.lua
diff options
context:
space:
mode:
Diffstat (limited to 'fetchmail-controller.lua')
-rw-r--r--fetchmail-controller.lua182
1 files changed, 36 insertions, 146 deletions
diff --git a/fetchmail-controller.lua b/fetchmail-controller.lua
index 654a519..93776c8 100644
--- a/fetchmail-controller.lua
+++ b/fetchmail-controller.lua
@@ -1,28 +1,14 @@
module(..., package.seeall)
-local list_redir = function (self)
+-- ################################################################################
+-- LOCAL FUNCTIONS
+
+local function list_redir (self)
self.conf.action = "status"
self.conf.type = "redir"
error (self.conf)
end
-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
-
-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",
@@ -33,13 +19,14 @@ local function displaycmdsave(self)
return cmdsave
end
-local function displaycmdmanagement(disablestart,disablestop,disablerestart)
+local function displaycmdmanagement(pidofstatus)
-- Add a management buttons
local management = {}
management.start = cfe({ name="cmdmanagement",
label="Program control-panel",
value="Start",
type="submit",
+ descr="When starting or restarting BGP, the web-page will freeze for some reason!",
})
management.stop = cfe({ name="cmdmanagement",
label="Program control-panel",
@@ -51,38 +38,20 @@ local function displaycmdmanagement(disablestart,disablestop,disablerestart)
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
-
-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",
+ -- next CFE can be used to present the result of the previous action
+ management.actionresult = cfe({ name="actionresult",
+ label="Previous action result",
+ descr="", --Content of this variable is displayed as <PRE> ... </PRE> in BLACK text
+ errtxt="", --Content of this variable is displayed as <PRE> ... </PRE> in RED text
})
-- 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
+ if (pidofstatus) then
+ management.start.disabled = "yes"
+ else
+ management.stop.disabled = "yes"
+ management.restart.disabled = "yes"
+ end
return management
end
@@ -90,95 +59,20 @@ end
-- ################################################################################
-- PUBLIC FUNCTIONS
-function status(self)
- return { status=getstatus(self) }
-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()
-
- -- 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()
-
- -- Add a test button to the view
- config.cmdtest = cfe({ name="cmdtest",
- label="Test saved settings",
- value="Test",
- type="submit",
- })
-
- -- FIXME: This is temporary disabling the buttons (until they work)
- config.cmdsave["disabled"] = "yes"
- config.cmdtest["disabled"] = "yes"
-
---[[
- -- 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
+mvc = {}
+function mvc.on_load(self, parent)
+ if (self.worker[self.conf.action] == nil ) or ( self.conf.action == "init" ) then
+ self.worker[self.conf.action] = list_redir(self)
end
- -- Display management buttons
- local management = displaycmdmanagement(disablestart,disablestop,disablerestart)
---]]
+end
- 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,
- }
+function status(self)
+ return { status=self.model:getstatus(self) }
end
---]==]
+
function expert(self)
-- Start/Stop/Restart process
- local cmdmanagement
+ local cmdmanagement, actionresult
if ( self.clientdata.cmdmanagement) then
cmdmanagement = cfe({
name="cmdmanagement",
@@ -188,7 +82,7 @@ function expert(self)
value=string.lower(self.clientdata.cmdmanagement), -- This row contains start/stop/restart (one of these commands)
}),
})
- local actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action )
+ actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action )
end
-- Save changes
@@ -197,7 +91,7 @@ function expert(self)
modifications = self.model:update_filecontent(modifications)
end
- local status = getstatus(self)
+ local status = self.model:getstatus(self)
local config = self.model:get_filedetails()
@@ -205,16 +99,15 @@ function expert(self)
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"
+--[[ -- Management buttons (Hide/show buttons
+ local pidofstatus
+ if (string.lower(status.status.value) == "enabled" ) then pidofstatus = true end
+ management = displaycmdmanagement(pidofstatus)
+ if (actionresult) then
+ management.actionresult.descr=cmdmanagement.descr
+ management.actionresult.errtxt=cmdmanagement.errtxt
end
- -- Display management buttons
--- management = displaycmdmanagement(disablestart,disablestop,disablerestart)
+--]]
return {
option={ script=ENV["SCRIPT_NAME"],
@@ -222,11 +115,8 @@ function expert(self)
controller = self.conf.controller,
action = "expert", },
management = management,
- cmdmanagement = cmdmanagement,
config = config,
status = status,
- startstop = startstop,
- debugclientdata = self.clientdata,
}
end