summaryrefslogtreecommitdiffstats
path: root/dansguardian-controller.lua
diff options
context:
space:
mode:
authorAndreas Brodmann <andreas.brodmann@gmail.com>2008-01-18 10:52:39 +0000
committerAndreas Brodmann <andreas.brodmann@gmail.com>2008-01-18 10:52:39 +0000
commitbce897383c5090870e15f9ccd7d73922750d82ce (patch)
tree032495655383a3d826ce15afb48ca1248f86414a /dansguardian-controller.lua
parenta8f1553596ca2214f920c5f00ab1c9d1c1eab3af (diff)
downloadacf-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.lua178
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
+