summaryrefslogtreecommitdiffstats
path: root/squid-controller.lua
blob: a651d6cfc5f8bce1295f59c18744e51201f9fef8 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
-- 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 = "basic"
	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

basic = 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="" }
	if self.clientdata.srvcmd then
		local 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()
	service.config = self.model.get_basic_config()
	
	return ( cfe ({ option = option, service = service }) )
end

advanced = 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
		local 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
			service.message = self.model.update_adv_config( self.clientdata.config )
		end
	end
	
	service.status = self.model.get_status()
	service.config = self.model.get_adv_config()
	
	return ( cfe ({ option = option, service = service }) )
end