summaryrefslogtreecommitdiffstats
path: root/openssl-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'openssl-model.lua')
-rw-r--r--openssl-model.lua82
1 files changed, 42 insertions, 40 deletions
diff --git a/openssl-model.lua b/openssl-model.lua
index c2bcbf5..1df9b13 100644
--- a/openssl-model.lua
+++ b/openssl-model.lua
@@ -1,4 +1,4 @@
-module(..., package.seeall)
+local mymodule = {}
posix = require("posix")
modelfunctions = require("modelfunctions")
@@ -251,7 +251,7 @@ local unhashname = function(hashstring)
return string.char(unpack(hash))
end
-getstatus = function()
+mymodule.getstatus = function()
processinfo = require("acf.processinfo")
-- set the working directory once for model
posix.chdir(openssldir)
@@ -298,16 +298,16 @@ getstatus = function()
end
end
end
- local environment = checkenvironment()
+ local environment = mymodule.checkenvironment()
return cfe({ type="group", value={version=version, conffile=conffile, environment=environment, cacert=cacert, cacertcontents=cacertcontents, cakey=cakey}, label="openssl status" })
end
-set_umask = function()
+mymodule.set_umask = function()
return posix.umask("rw-------")
end
-getreqdefaults = function()
+mymodule.getreqdefaults = function()
local defaults = getdefaults()
--Add in the encryption bit default
@@ -333,7 +333,7 @@ getreqdefaults = function()
return defaults
end
-setreqdefaults = function(self, defaults)
+mymodule.setreqdefaults = function(self, defaults)
local success, defaults = validate_request(defaults, true)
-- If success, write the values to the config file
@@ -363,15 +363,15 @@ setreqdefaults = function(self, defaults)
return defaults
end
-getnewrequest = function()
- local values = getreqdefaults()
+mymodule.getnewrequest = function()
+ local values = mymodule.getreqdefaults()
-- In addition to the request defaults, we need a password and confirmation
values.value.password = cfe({ type="password", label="Password", seq=98 })
values.value.password_confirm = cfe({ type="password", label="Password confirmation", seq=99 })
return values
end
-submitrequest = function(defaults, user)
+mymodule.submitrequest = function(defaults, user)
local success, defaults = validate_request(defaults)
-- Must have a common name
@@ -447,7 +447,7 @@ submitrequest = function(defaults, user)
return defaults
end
-listrequests = function(user)
+mymodule.listrequests = function(user)
user = user or "*"
local list={}
local files = posix.glob(requestdir..user..".*\\.csr") or {}
@@ -459,7 +459,7 @@ listrequests = function(user)
return cfe({ type="list", value=list, label="List of pending requests" })
end
-viewrequest = function(request)
+mymodule.viewrequest = function(request)
local reqpath = requestdir .. request
local cmdresult = modelfunctions.run_executable({"openssl", "req", "-in", reqpath..".csr", "-text", "-noout"})
local a,b,c = string.match(request, "([^%.]*)%.([^%.]*)%.([^%.]*)")
@@ -467,13 +467,13 @@ viewrequest = function(request)
return request
end
-getapproverequest = function(self, clientdata)
+mymodule.getapproverequest = function(self, clientdata)
local retval = {}
retval.request = cfe({ value=clientdata.request or "", label="Request" })
return cfe({ type="group", value=retval, label="Approve Request" })
end
-approverequest = function(self, apprequest)
+mymodule.approverequest = function(self, apprequest)
local reqpath = requestdir .. apprequest.value.request.value
if fs.is_file(reqpath..".csr") then
-- Request file exists, so try to sign
@@ -521,13 +521,13 @@ approverequest = function(self, apprequest)
return apprequest
end
-getdeleterequest = function(self, clientdata)
+mymodule.getdeleterequest = function(self, clientdata)
local retval = {}
retval.request = cfe({ value=clientdata.request or "", label="Request" })
return cfe({ type="group", value=retval, label="Delete Request" })
end
-deleterequest = function(self, delrequest, user)
+mymodule.deleterequest = function(self, delrequest, user)
user = user or ".*"
if (not fs.is_file(requestdir..delrequest.value.request.value..".csr")) or (not string.find(delrequest.value.request.value, "^"..user.."%.")) then
delrequest.value.request.errtxt = "Request not found"
@@ -543,7 +543,7 @@ deleterequest = function(self, delrequest, user)
return delrequest
end
-listcerts = function(user)
+mymodule.listcerts = function(user)
user = user or "*"
local list={}
local files = posix.glob(certdir..user..".*\\.pfx") or {}
@@ -583,37 +583,37 @@ listcerts = function(user)
return cfe({ type="list", value=list, label="List of approved certificates" })
end
-viewcert = function(cert)
+mymodule.viewcert = function(cert)
local cmdresult = modelfunctions.run_executable({"openssl", "x509", "-in", certdir..cert..".crt", "-noout", "-text"})
local a,b,c,d = string.match(cert, "([^%.]*)%.([^%.]*)%.([^%.]*).([^%.]*)")
return cfe({ type="table", value={name=name, user=a, certtype=b, commonName=c, serial=d, value=cmdresult}, label="Certificate" })
end
-getcert = function(cert)
+mymodule.getcert = function(cert)
local f = fs.read_file(certdir..cert..".pfx") or ""
local a,b,c,d = string.match(cert, "([^%.]*)%.([^%.]*)%.([^%.]*).([^%.]*)")
c = string.gsub(unhashname(c), "[^%w_-]", "")
return cfe({ type="raw", value=f, label=c..".pfx", option="application/x-pkcs12" })
end
-getrevokecert = function(self, clientdata)
+mymodule.getrevokecert = function(self, clientdata)
retval = {}
retval.cert = cfe({ value=clientdata.cert or "", label="Certificate" })
return cfe({ type="group", value=retval, label="Revoke Certificate" })
end
-revokecert = function(self, revreq)
+mymodule.revokecert = function(self, revreq)
revreq.descr, revreq.errtxt = modelfunctions.run_executable({"openssl", "ca", "-config", configfile, "-revoke", certdir..revreq.value.cert.value..".crt", "-batch"}, true)
return revreq
end
-getdeletecert = function(self, clientdata)
+mymodule.getdeletecert = function(self, clientdata)
retval = {}
retval.cert = cfe({ value=clientdata.cert or "", label="Certificate" })
return cfe({ type="group", value=retval, label="Delete Certificate" })
end
-deletecert = function(self, delcert)
+mymodule.deletecert = function(self, delcert)
-- The certificate will still be in the ca directories and index.txt, just not available for web interface
local certname = certdir..delcert.value.cert.value
os.remove(certname..".cfg")
@@ -625,13 +625,13 @@ deletecert = function(self, delcert)
return delcert
end
-getrenewcert = function(self, clientdata)
+mymodule.getrenewcert = function(self, clientdata)
retval = {}
retval.cert = cfe({ value=clientdata.cert or "", label="Certificate" })
return cfe({ type="group", value=retval, label="Renew Certificate" })
end
-renewcert = function(self, recert, submit, approve)
+mymodule.renewcert = function(self, recert, submit, approve)
local success = true
local user,certtype,commonName,serialnum = string.match(recert.value.cert.value, "([^%.]*)%.([^%.]*)%.([^%.]*).([^%.]*)")
local reqname = requestdir..user.."."..certtype.."."..commonName
@@ -670,9 +670,9 @@ renewcert = function(self, recert, submit, approve)
end
if success and approve then
- local tmp = getapproverequest(self, {})
+ local tmp = mymodule.getapproverequest(self, {})
tmp.value.request.value = posix.basename(reqname)
- tmp = approverequest(self, tmp)
+ tmp = mymodule.approverequest(self, tmp)
if tmp.errtxt then
recert.descr = recert.descr.."\n"..tmp.errtxt
end
@@ -681,7 +681,7 @@ renewcert = function(self, recert, submit, approve)
return recert
end
-listrevoked = function()
+mymodule.listrevoked = function()
config = config or format.parse_ini_file(fs.read_file(configfile) or "")
local databasepath = getconfigentry(config.ca.default_ca, "database")
local revoked = {}
@@ -694,7 +694,7 @@ listrevoked = function()
return cfe({ type="list", value=revoked, label="Revoked serial numbers" })
end
-getcrl = function(crltype)
+mymodule.getcrl = function(crltype)
local crlfile = cfe({ type="raw", option="application/pkix-crl" })
modelfunctions.run_executable({"openssl", "ca", "-config", configfile, "-gencrl", "-out", openssldir.."ca-crl.crl"})
modelfunctions.run_executable({"openssl", "crl", "-in", openssldir.."ca-crl.crl", "-out", openssldir.."ca-der-crl.crl", "-outform", "DER"})
@@ -710,7 +710,7 @@ getcrl = function(crltype)
return crlfile
end
-getca = function(certtype)
+mymodule.getca = function(certtype)
local result = cfe({ type="raw", option="application/x-x509-ca-cert" })
local fname = "cacert."
if string.lower(certtype or "") == "der" then
@@ -727,13 +727,13 @@ getca = function(certtype)
return result
end
-getnewputca = function()
+mymodule.getnewputca = function()
local ca = cfe({ type="raw", value=0, label="CA Certificate", descr='File must be a password protected ".pfx" file' })
local password = cfe({ label="Certificate Password" })
return cfe({ type="group", value={ca=ca, password=password} })
end
-putca = function(self, newca)
+mymodule.putca = function(self, newca)
local success = true
-- Trying to upload a cert/key
-- The way haserl works, ca contains the temporary file name
@@ -790,14 +790,14 @@ putca = function(self, newca)
return newca
end
-getnewcarequest = function()
+mymodule.getnewcarequest = function()
request = getdefaults()
-- In addition to the distinguished name defaults, we need days
request.value.days = cfe({ value="365", label="Number of days to certify", seq=95 })
return request
end
-generateca = function(self, defaults)
+mymodule.generateca = function(self, defaults)
local success, defaults = validate_request(defaults)
if not validator.is_integer(defaults.value.days.value) then
@@ -836,34 +836,34 @@ generateca = function(self, defaults)
return defaults
end
-getconfigfile = function()
+mymodule.getconfigfile = function()
return modelfunctions.getfiledetails(configfile)
end
-setconfigfile = function(self, filedetails)
+mymodule.setconfigfile = function(self, filedetails)
-- validate
return modelfunctions.setfiledetails(self, filedetails, {configfile})
end
-getenvironment = function(self, clientdata)
+mymodule.getenvironment = function(self, clientdata)
local retval = {}
- retval.status = checkenvironment()
+ retval.status = mymodule.checkenvironment()
return cfe({ type="group", value=retval, label="Check Environment" })
end
-setenvironment = function(self, setenv)
+mymodule.setenvironment = function(self, setenv)
-- loop through the cmdline and execute
for x,cmd in ipairs(setenv.value.status.cmdline) do
cmd()
end
- setenv.value.status = checkenvironment()
+ setenv.value.status = mymodule.checkenvironment()
if setenv.value.status.errtxt then
setenv.errtxt = "Failed to Configure Environment"
end
return setenv
end
-checkenvironment = function()
+mymodule.checkenvironment = function()
local errtxt = {}
local cmdline = {}
@@ -917,3 +917,5 @@ checkenvironment = function()
end
return cfe({ value=value, errtxt=errtxt, cmdline=cmdline, label="Environment" })
end
+
+return mymodule