module(..., package.seeall) local list_redir = function (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 function status(self) return { status=getstatus(self) } end function config(self) local cmdmanagement local cmd_save_result = {} local cmderrors = {} if ( self.clientdata.cmd_management) then local cmd_management = cfe({ name="cmd_management", value=string.lower(self.clientdata.cmd_management), }) cmdmanagement = self.model:startstop_service( cmd_management ) end if ( self.clientdata.cmd_save) 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 cmd_save_result[var] = self.model:setconfigs("SYSLOGD_OPTS",var,self.clientdata[var]) end end local status = getstatus(self) --[[ if (#status.status.value > 0) then status.status.value = "Enabled" else status.status.value = "Disabled" end --]] local config, errors = self.model.getconfig() -- Add a cmd button to the view config.cmd_save = cfe({ name="cmd_save", label="Save/Apply above settings", value="Save", type="submit", }) -- Add a management buttons management = {} management.start = cfe({ name="cmd_management", label="Program control-panel", value="Start", type="submit", }) management.stop = cfe({ name="cmd_management", label="Program control-panel", value="Stop", type="submit", }) management.restart = cfe({ name="cmd_management", label="Program control-panel", value="Restart", type="submit", }) -- Disable management buttons based on if the process is running or not if (string.lower(status.status.value) == "enabled" ) then management.start.disabled = "yes" management.stop.disabled = nil else management.start.disabled = nil management.stop.disabled = "yes" end -- Disable management buttons if there exist errors in the config for k,v in pairs(config) do if (config[k]["errtxt"] ~= "") then management.start.disabled = "yes" management.stop.disabled = "yes" management.restart.disabled = "yes" break end end local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller local cmderrors_str = "" for k,v in pairs(cmderrors) do if (type(v) ~= "table") then cmderrors_str = v.. "\n" .. cmderrors_str else for kk,vv in pairs(v) do cmderrors_str = tostring(vv) .. "\n" .. tostring(cmderrors_str) end end end if (cmderrors_str == "") then cmderrors_str = nil end return { option={ script=ENV["SCRIPT_NAME"], prefix=self.conf.prefix, controller = self.conf.controller, action = "config", }, status = status, cmdmanagement = cmdmanagement, clientdata = self.clientdata, management = management, config = config, cmd_save_result = cmd_save_result, errors = errors, cmderrors = cmderrors_str, url = url, } end function expert(self) local modifications = self.clientdata.modifications or "" if ( self.clientdata.cmdsave) then modifications = self.model:update_filecontent(modifications) end if ( self.clientdata.cmddaemon) then startstop = self.model:startstop_service( self.clientdata.cmddaemon ) end -- local status = self.model.getstatus() local status = getstatus(self) local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller return { file = self.model:get_filedetails(), status = status, startstop = startstop, clientdata = self.clientdata, url = url, } end