module(..., package.seeall) local list_redir = function(self) self.conf.action = "status" self.conf.type = "redir" error(self.conf) end local cfgfile mvc={} mvc.on_load = function(self, parent) cfgfile = self:new("cfgfile") if (self.worker[self.conf.action] == nil) or (self.conf.action == "init") then self.worker[self.conf.action] = list_redir(self) end end status = function (self) local cmd = self.clientdata.cmd local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller local status, errors = self.model:getstatus() return ( {status = status, errors = errors, lbustatus = self.model:list(), url = url, } ) end config = function (self) local errors = {} local cmdresult if (self.clientdata.cmd_delete_excluded) and (self.clientdata.lbu_excluded) then cmdresult = self.model:lbuincexcl("exclude", self.clientdata.lbu_excluded, "remove") end if (self.clientdata.cmd_delete_included) and (self.clientdata.lbu_included) then cmdresult = self.model:lbuincexcl("include", self.clientdata.lbu_included, "remove") end if (self.clientdata.config_submit) then local variables="LBU_MEDIA DEFAULT_CIPHER PASSWORD" cmdresult = {} for var in string.gmatch(variables, "%S+") do cmdresult[var] = self.model:editconfig(var, self.clientdata[var], "change_value") end local variables="ENCRYPTION" for var in string.gmatch(variables, "%S+") do cmdresult[var] = self.model:editconfig(var, self.clientdata[var], "change_state") end end if (self.clientdata.cmd_add_include) and (self.clientdata.item_add_include) then cmdresult = self.model:lbuincexcl("include", self.clientdata.item_add_include, "add") end if (self.clientdata.cmd_add_exclude) and (self.clientdata.item_add_exclude) then cmdresult = self.model:lbuincexcl("exclude", self.clientdata.item_add_exclude, "add") end -- This needs to be done /after/ the editing of the config (done earlier in this code) local status,errors = self.model:getstatus() local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller return ( {status = status, cmdresult = cmdresult, errors = errors, clientdata = self.clientdata, config = self.model:getconfig(), url = url, } ) end function commit(self) local cmdresult, cmderror local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller local cmdflag = nil if (self.clientdata.lbucleanmedia) then cmdflag = "-d" else cmdflag = "" end if (self.clientdata.lbusimulate) then cmdresult, cmderror = self.model:getsimulate(cmdflag) end if (self.clientdata.lbucommit) then cmdresult, cmderror = self.model:getcommit(cmdflag) end -- If no clientdata then do a dryrun and see if it's going to work else report if not (cmdresult) then tmp_cmdresult, cmderror = self.model:getsimulate() end local status, errors = self.model:getstatus() if (errors.last) then self.conf.action = "config" self.conf.type = "redir" return config(self) end return ( {status = status, errors = errors, cmdresult = cmdresult, cmdflag = cmdflag, cmderror = cmderror, clientdata = self.clientdata, url = url, } ) end