module(..., package.seeall) require("validator") -- ################################################################################ -- LOCAL FUNCTIONS -- ################################################################################ -- PUBLIC FUNCTIONS default_action = "status" function status(self) return self.model.getstatus(self) end function view(self) return self.model.getconfigobjects(self.clientdata.filename) end function startstop(self) local result if self.clientdata.action then result = self.model:startstop_service(self.clientdata.action) self.sessiondata.tinydnsstartstopresult = result self.redirect_to_referrer(self) end local status = self.model.getstatus() status = status.value.status if self.sessiondata.tinydnsstartstopresult then result = self.sessiondata.tinydnsstartstopresult self.sessiondata.tinydnsstartstopresult = nil end return cfe({ type="group", value={status=status, result=result} }) end function config(self) local config = self.model.getconfig() if self.clientdata.Save then for name,value in pairs(self.clientdata) do if config.value[name] then config.value[name].errtxt = nil config.value[name].value = value end end config = self.model.setconfig(config) if not config.errtxt then config.descr = "Configuration Set" end end config.type = "form" config.option = "Save" config.label = "Edit configuration" return config end function newfile(self) local create = self.model.getnewconfigfile() -- In case we are trying to create a new configfile if (self.clientdata.Create) then for name,value in pairs(self.clientdata) do if create.value[name] then create.value[name].errtxt = nil create.value[name].value = value end end create = self.model.createconfigfile(create) if not create.errtxt then create.descr = "Created new config file" redirect(self, "listfiles") end end create.type = "form" create.option = "Create" create.label = "Create new config file" return create end function listfiles(self) local configfiles = self.model.getfilelist() local config = {} for k,v in pairs(configfiles.value) do local filedetails = self.model.get_filedetails(v) table.insert(config,filedetails) end return cfe({ type="list", value=config, label="Config files" }) end function edit(self) local config = self.model.get_filedetails(self.clientdata.filename) if self.clientdata.Save then local result = self.model.updatefilecontent(self.clientdata.filename, self.clientdata.filecontent) if not result.value then config.value.filecontent.value = self.clientdata.filecontent config.value.filecontent.errtxt = result.errtxt config.errtxt = "Failed to save config!" else config = self.model.get_filedetails(self.clientdata.filename) config.descr = "Saved file" end elseif validator.is_integer(self.clientdata.linenumber) then config.value.filecontent.linenumber = self.clientdata.linenumber end config.type = "form" config.option = "Save" config.label = "Edit config file" return config end function expert(self) local config = self.model.get_filedetails(self.clientdata.filename) if self.clientdata.Save then local result = self.model.updatefilecontent(self.clientdata.filename, self.clientdata.filecontent) if not result.value then config.value.filecontent.value = self.clientdata.filecontent config.value.filecontent.errtxt = result.errtxt config.errtxt = "Failed to save config!" else config = self.model.get_filedetails(self.clientdata.filename) config.descr = "Saved file" end end config.type = "form" config.option = "Save" config.label = "Edit config file" return config end function delete(self) local cmdresult = self.model.remove_file(self.clientdata.filename) --self.sessiondata.cmdresult = cmdresult redirect_to_referrer(self) return cmdresult end