diff options
author | Andreas Brodmann <andreas.brodmann@gmail.com> | 2008-01-18 10:52:39 +0000 |
---|---|---|
committer | Andreas Brodmann <andreas.brodmann@gmail.com> | 2008-01-18 10:52:39 +0000 |
commit | bce897383c5090870e15f9ccd7d73922750d82ce (patch) | |
tree | 032495655383a3d826ce15afb48ca1248f86414a /dansguardian-controller.lua | |
parent | a8f1553596ca2214f920c5f00ab1c9d1c1eab3af (diff) | |
download | acf-dansguardian-bce897383c5090870e15f9ccd7d73922750d82ce.tar.bz2 acf-dansguardian-bce897383c5090870e15f9ccd7d73922750d82ce.tar.xz |
initial import of the dansguardian stuff after separation from squid
git-svn-id: svn://svn.alpinelinux.org/acf/dansguardian/trunk@615 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'dansguardian-controller.lua')
-rw-r--r-- | dansguardian-controller.lua | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/dansguardian-controller.lua b/dansguardian-controller.lua new file mode 100644 index 0000000..0d6c7e8 --- /dev/null +++ b/dansguardian-controller.lua @@ -0,0 +1,178 @@ +-- 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 + |