summaryrefslogtreecommitdiffstats
path: root/openssl-controller.lua
blob: 78cbe2b0e6a0cbccbb8f27d96b3cae8b16f08a3a (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
-- the openssl certificates controller
module (..., package.seeall)

require("getopts")

default_action = "read"

-- View all pending and approved requests and revoked certificates
readall = function(self)
	local cmdresult = self.sessiondata.cmdresult
	self.sessiondata.cmdresult = nil
	local pending = self.model.listrequests()
	local approved = self.model.listcerts()
	local revoked = nil
	local result = cfe({ type="list", value={cmdresult=cmdresult, pending=pending, approved=approved, revoked=revoked} })
	return result
end

-- Return all certificates (pending, approved, and revoked) for this user
read = function(self)
	local cmdresult = self.sessiondata.cmdresult
	self.sessiondata.cmdresult = nil
	local user = cfe({ value=self.sessiondata.userinfo.userid, label="User Name" })
	local pending = self.model.listrequests(self.sessiondata.userinfo.userid)
	local approved = self.model.listcerts(self.sessiondata.userinfo.userid)
	local revoked = nil
	local result = cfe({ type="list", value={cmdresult=cmdresult, user=user, pending=pending, approved=approved, revoked=revoked} })
	return result
end

-- Form to request a new cert
request = function(self)
	local request
	if self.clientdata.Submit then
		-- Try to submit the request
		request = self.model.submitrequest(self.clientdata, self.sessiondata.userinfo.userid)
		if not request.errtxt then
			cmdresult = cfe({ value="Request submitted", label="Request result" })
			self.sessiondata.cmdresult = cmdresult
			--request.descr = "Submitted request"
			redirect(self, "readall")
		end
	else
		request = self.model.getnewrequest()
	end

	request.type = "form"
	request.label = "Request Certificate"
	request.option = "Submit"

	return request
end

-- Form to edit request defaults
editdefaults = function(self)
	local defaults
	if self.clientdata.Save then
		defaults = self.model.setreqdefaults(self.clientdata)
		if not defaults.errtxt then
			defaults.descr = "Defaults set"
		end
	else
		defaults = self.model.getreqdefaults()
	end

	defaults.type = "form"
	defaults.label = "Edit certificate defaults"
	defaults.option = "Save"

	return defaults
end

-- View request details
viewrequest = function(self)
	return self.model.viewrequest(self.clientdata.request)
end

-- Approve the specified request
approve = function(self)
	local cmdresult = self.model.approverequest(self.clientdata.request)
	self.sessiondata.cmdresult = cmdresult
	redirect_to_referrer(self)
end

-- Delete the specified request
deleterequest = function(self)
	local cmdresult = self.model.deleterequest(self.clientdata.request)
	self.sessiondata.cmdresult = cmdresult
	redirect_to_referrer(self)
end

-- View certificate details
viewcert = function(self)
	return self.model.viewcert(self.clientdata.cert)
end

-- Get the specified cert
getcert = function(self)
	self.conf.viewtype="stream"
	return self.model.getcert(self.clientdata.cert)
end

-- Revoke the specified cert
revoke = function(self)
end

-- Delete the specified certificate
deletecert = function(self)
	local cmdresult = self.model.deletecert(self.clientdata.cert)
	self.sessiondata.cmdresult = cmdresult
	redirect_to_referrer(self)
end

-- Get the revoked list
getrevoked = function(self)
end

-- Put the CA cert
putcacert = function(self)
end