diff options
Diffstat (limited to 'dansguardian-controller.lua')
-rw-r--r-- | dansguardian-controller.lua | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/dansguardian-controller.lua b/dansguardian-controller.lua new file mode 100644 index 0000000..e749965 --- /dev/null +++ b/dansguardian-controller.lua @@ -0,0 +1,68 @@ +-- 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 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 + 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() + service.config, service.cfgerr = self.model.get_general_config() + + return ( cfe ({ option = option, service = service }) ) +end + |