summaryrefslogtreecommitdiffstats
path: root/openssl-controller.lua
blob: 994c00b9705a804fc98cd3b08690e4808857ba6e (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
-- the openssl certificates controller
local mymodule = {}

mymodule.default_action = "status"

local sslstatus

mymodule.mvc={}
mymodule.mvc.pre_exec = function(self)
	sslstatus = self.model.getstatus(self, self.clientdata)
	if not self.redirect then
		return
	end
	if (sslstatus.value.version.errtxt and self.conf.action ~= "status")
		or (sslstatus.value.conffile.errtxt and self.conf.action ~= "status" and self.conf.action ~= "editconfigfile" and self.conf.action ~= "checkenvironment")
		or (sslstatus.value.environment.errtxt and self.conf.action ~= "status" and self.conf.action ~= "editconfigfile" and self.conf.action ~= "checkenvironment")
		or ((sslstatus.value.cacert.errtxt or sslstatus.value.cakey.errtxt) and self.conf.action ~= "status" and self.conf.action ~= "editconfigfile" and self.conf.action ~= "putcacert" and self.conf.action ~= "generatecacert" and self.conf.action ~= "checkenvironment" and self.conf.action ~= "editdefaults")
	then
		self.redirect(self)
	end
end

-- Show openssl status
mymodule.status = function(self)
	return sslstatus
end

-- View all pending and approved requests and revoked certificates
mymodule.readall = function(self)
	return self.model.readall(self, self.clientdata)
end

-- Return all certificates (pending, approved, and revoked) for this user
mymodule.read = function(self)
	return self.model.readuser(self, self.clientdata, self.sessiondata.userinfo.userid)
end

-- Form to request a new cert
mymodule.request = function(self)
	return self.handle_form(self, self.model.getnewrequest, function(self, value) return self.model.submitrequest(value, self.sessiondata.userinfo.userid) end, self.clientdata, "Submit", "Request Certificate", "Request Submitted")
end

-- Form to edit request defaults
mymodule.editdefaults = function(self)
	return self.handle_form(self, self.model.getreqdefaults, self.model.setreqdefaults, self.clientdata, "Save", "Edit Certificate Defaults", "Defaults Set")
end

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

-- Approve the specified request
mymodule.approve = function(self)
	return self.handle_form(self, self.model.getapproverequest, self.model.approverequest, self.clientdata, "Approve", "Approve Request")
end

-- Delete the specified request
mymodule.deleterequest = function(self)
	return self.handle_form(self, self.model.getdeleterequest, function(self, value) return self.model.deleterequest(self, value, nil) end, self.clientdata, "Delete", "Delete Request", "Request Deleted")
end

-- Delete the specified request
mymodule.deletemyrequest = function(self)
	return self.handle_form(self, self.model.getdeleterequest, function(self, value) return self.model.deleterequest(self, value, self.sessiondata.userinfo.userid) end, self.clientdata, "Delete", "Delete Request", "Request Deleted")
end

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

-- Get the specified cert
mymodule.getcert = function(self)
	return self.model.getcert(self.clientdata.cert)
end

-- Revoke the specified cert
mymodule.revoke = function(self)
	return self.handle_form(self, self.model.getrevokecert, self.model.revokecert, self.clientdata, "Revoke", "Revoke Certificate", "Certificate Revoked")
end

-- Delete the specified certificate
mymodule.deletecert = function(self)
	return self.handle_form(self, self.model.getdeletecert, self.model.deletecert, self.clientdata, "Delete", "Delete Certificate", "Certificate Deleted")
end

-- Submit request to renew the specified certificate
mymodule.requestrenewcert = function(self)
	return self.handle_form(self, self.model.getrenewcert, self.model.renewcert, self.clientdata, "Renew", "Renew Certificate")
end

-- Renew the specified certificate
mymodule.renewcert = function(self)
	return self.handle_form(self, self.model.getrenewcert, function(self, value, submit) return self.model.renewcert(self, value, submit, true) end, self.clientdata, "Renew", "Renew Certificate")
end

-- Get the revoked list
mymodule.getrevoked = function(self)
	return self.model.getcrl(self.clientdata.crltype)
end

-- Put the CA cert
mymodule.putcacert = function(self)
	return self.handle_form(self, self.model.getnewputca, self.model.putca, self.clientdata, "Upload", "Upload CA Certificate", "Certificate Uploaded")
end

mymodule.downloadcacert = function(self)
        return self.model.getca(self.clientdata.certtype)
end
		
-- Generate a self-signed CA
mymodule.generatecacert = function(self)
	return self.handle_form(self, self.model.getnewcarequest, self.model.generateca, self.clientdata, "Generate", "Generate CA Certificate", "Certificate Generated")
end

mymodule.editconfigfile = function(self)
	return self.handle_form(self, self.model.getconfigfile, self.model.setconfigfile, self.clientdata, "Save", "Edit Config File", "Config File Saved")
end

mymodule.checkenvironment = function(self)
	return self.handle_form(self, self.model.getenvironment, self.model.setenvironment, self.clientdata, "Configure", "Configure Environment", "Environment Configured")
end

return mymodule