summaryrefslogtreecommitdiffstats
path: root/squid-controller.lua
blob: c37b05b2f0376f66c7912637c44e94007e00e80d (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
-- 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="", error="" }
	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
		local cmd = self.clientdata.cmd
		if cmd == "save" then
			local newconfig = { proxyip = { value=self.clientdata.proxyip, type="text", label="" },
			                    proxyport = { value=self.clientdata.proxyport, type="text", label="" },
			                    filterip = { value=self.clientdata.filterip, type="text", label="" },
			                    filterport = { value=self.clientdata.filterport, type="text", label="" },
			                    filterregex = { value=self.clientdata.filterregex, type="text", label="" },
		   	                    safeports = { value=self.clientdata.safeports, type="text", label="" },
		   	                    sslports = { value=self.clientdata.sslports, type="text", label="" },
		   	                    accesslog = { value=self.clientdata.accesslog, type="select", label="", option={ "yes", "no" } },
			                    diskcache = { value=self.clientdata.diskcache, type="select", label="", option={ "yes", "no" } },
			                    authmethod = { value=self.clientdata.authmethod, type="text", label="" }
			                  }
			        
			self.model.update_basic_config( newconfig )
		end
	end
	
	service.status = self.model.get_status()
	service.config, service.error = self.model.get_basic_config()
	
	return ( cfe ({ option = option, service = service }) )
end

authentication = 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="", error="" }
	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, service.error = 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

cfilter = 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.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_filter_config( config )
		end
	end
	
	service.status = self.model.get_dansguardian_status()
	service.config, service.cfgerr = self.model.get_filter_config()
	
	return ( cfe ({ option = option, service = service }) )
end