summaryrefslogtreecommitdiffstats
path: root/dansguardian-controller.lua
blob: e749965fb20438f1554e15465c35ee54af6fabef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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