-- the squid controller 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 = "general" self.conf.type = "redir" error (self.conf) end local pvt = {} mvc= {} mvc.on_load = function( self, parent ) -- If they try to run a bogus action, send them to read if ( rawget(self.worker, self.conf.action) == nil ) then list_redir(self) end pvt.parent_on_exec = parent.worker.mvc.post_exec end mvc.pre_exec = function( self ) -- pvt.parent_on_exec () end mvc.post_exec = function( self ) return pvt.parent_on_exec() end general = function( self ) local info = { status = { value = "stopped" }, version = { value = self.model.get_dansguardian_version() }, srvctrl = { value = srvctrl} }; local option = { script = ENV["SCRIPT_NAME"], prefix = self.conf.prefix, controller = self.conf.controller, action = self.conf.action, extra = "" } local service = { message="", status="", config="" } if self.clientdata.srvcmd then srvcmd = self.clientdata.srvcmd if srvcmd == "start" or srvcmd == "stop" or srvcmd == "restart" then service.message = self.model.service_control( srvcmd ) end end if self.clientdata.cmd then if self.clientdata.cmd == "save" then local conf = self.clientdata local config = { filterip = conf.filterip, filterport = conf.filterport, proxyip = conf.proxyip, proxyport = conf.proxyport, accessdeniedaddress = conf.accessdeniedaddress, naughtynesslimit = conf.naughtynesslimit } self.model.update_general_config( config ) end end service.status = self.model.get_status() info.status.value = service.status service.config, service.cfgerr = self.model.get_general_config() return ( cfe ({ option = option, service = service, info = info }) ) end advanced = function( self ) local info = { status = { value = "stopped" }, version = { value = self.model.get_dansguardian_version() }, srvctrl = { value = srvctrl} }; local option = { script = ENV["SCRIPT_NAME"], prefix = self.conf.prefix, controller = self.conf.controller, action = self.conf.action, extra = "" } local service = { message="", status="", config="" } if self.clientdata.srvcmd then srvcmd = self.clientdata.srvcmd if srvcmd == "start" or srvcmd == "stop" or srvcmd == "restart" then service.message = self.model.service_control( srvcmd ) end end service.status = self.model.get_status() info.status.value = service.status service.config, service.cfgerr = self.model.get_advanced_config() return ( cfe ({ option = option, service = service, info = info }) ) end plain = function( self ) local option = { script = ENV["SCRIPT_NAME"], prefix = self.conf.prefix, controller = self.conf.controller, action = self.conf.action, extra = "" } local service = { message="", status="", config="" } if self.clientdata.srvcmd then srvcmd = self.clientdata.srvcmd if srvcmd == "start" or srvcmd == "stop" or srvcmd == "restart" then service.message = self.model.service_control( srvcmd ) end end if self.clientdata.cmd then if self.clientdata.cmd == "save" then local conf = self.clientdata local config = conf.config self.model.update_plain_config( config ) end end service.status = self.model.get_status() service.config, service.cfgerr = self.model.get_plain_config() return ( cfe ({ option = option, service = service }) ) end edit = function( self ) if not self.clientdata.name then list_redir( self ) end local option = { script = ENV["SCRIPT_NAME"], prefix = self.conf.prefix, controller = self.conf.controller, action = self.conf.action, extra = "" } local service = { message="", status="", config="" } if self.clientdata.cmd then if self.clientdata.cmd == "save" then self.model.update_edit_config( self.clientdata.name, self.clientdata.config ) end end service.status = self.model.get_status() service.config, service.cfgerr = self.model.get_edit_config( self.clientdata.name ) service.name = self.clientdata.name if service.cfgerr == "Hacker" then list_redir( self ) end return ( cfe ({ option = option, service = service }) ) end category = function( self ) local option = { script = ENV["SCRIPT_NAME"], prefix = self.conf.prefix, controller = self.conf.controller, action = self.conf.action, extra = "" } local service = { message="", status="", config="" } service.config = self.model.get_categories() return ( cfe ({ option = option, service = service }) ) end