summaryrefslogtreecommitdiffstats
path: root/squid-controller.lua
blob: b16bbd80ac710c6a98d91a41a648342e7fc4f9f4 (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
-- the squid  controller

module (..., package.seeall)

require("controllerfunctions")

default_action = "status"

dep = function( self )

	if self.model.dependancy_ok() then
		redirect(self)
	end

	if self.clientdata.cmd then
		if self.clientdata.cmd == "create file" then
			self.model.create_cfg_from_template()
			redirect(self)
		end
	end
	
	return
end

status = function( self )
	return self.model.getstatus()
end

startstop = function( self )
	return controllerfunctions.handle_startstop(self, self.model.startstop_service, self.model.getstatus, self.clientdata)
end

basic = function( self )

	local service = {}
	               
	if not self.model.dependancy_ok() then
		redirect(self, "dep")
	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.config, service.error = self.model.get_basic_config()
	
	return ( cfe ({ service = service }) )
end

authentication = function( self )

	local service = {}
	
	if self.clientdata.inout then
		local newauth = ""
		if self.clientdata.inout == " << " then
			if self.clientdata.tmpempty then
				newauth = self.clientdata.authmethod .. self.clientdata.tmpempty
			else
				newauth = self.clientdata.authmethod
			end
		elseif self.clientdata.inout == " >> " then
			local tmpauth = self.clientdata.authmethod
			local lap = 1
			while lap <= #tmpauth do
				if string.sub( tmpauth, lap, lap ) ~= self.clientdata.tmpauth then
					newauth = newauth .. string.sub( tmpauth, lap, lap )
				end
				lap = lap + 1
			end
		end
		self.model.upd_authmethod(newauth)
	end
	
	service.config, service.error = self.model.get_basic_config()
	
	return ( cfe ({ service = service }) )
end

expert = function( self )
	return controllerfunctions.handle_form(self, self.model.get_configfile, self.model.update_configfile, self.clientdata, "Save", "Edit Config", "Configuration Set")
end

digest = function( self )

	local service = { message="", status="", config="" }
	
	if self.clientdata.cmd then
		if self.clientdata.cmd == "save" then
			service.message = self.model.update_digest_userlist( self.clientdata.userlist )
		end
	end
	
	service.config = self.model.get_digest_userlist()
	
	return ( cfe ({ service = service }) )
end

saccess = function( self )

	local service = { message="", status="", config="" }
	
	if self.clientdata.cmd then
		if self.clientdata.cmd == "save" then
			local config = {}
			config.s_ip = self.clientdata.s_ip
			config.s_browser = self.clientdata.s_browser
			config.s_domain = self.clientdata.s_domain
			service.message = self.model.update_saccess( config )
		end
	end
	
	service.config = self.model.get_saccess()
	
	return ( cfe ({ service = service }) )
end