summaryrefslogtreecommitdiffstats
path: root/openssl-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2015-01-31 11:35:25 -0500
committerTed Trask <ttrask01@yahoo.com>2015-01-31 11:35:25 -0500
commit04feaaceb5de55bf95dfc712ab97641b194a222b (patch)
treecfe683f7dfb73e55ddb59cdc2692d9e87e7af908 /openssl-model.lua
parentaac2c6c96fe4be58b4ad7de8840542471903e806 (diff)
downloadacf-openssl-04feaaceb5de55bf95dfc712ab97641b194a222b.tar.bz2
acf-openssl-04feaaceb5de55bf95dfc712ab97641b194a222b.tar.xz
Updated the three download/stream actions to properly handle clientdata in the model
Relies on acf-core-0.19 update to template-stream.html
Diffstat (limited to 'openssl-model.lua')
-rw-r--r--openssl-model.lua91
1 files changed, 59 insertions, 32 deletions
diff --git a/openssl-model.lua b/openssl-model.lua
index 5dd159f..bb33e35 100644
--- a/openssl-model.lua
+++ b/openssl-model.lua
@@ -625,11 +625,20 @@ mymodule.viewcert = function(self, clientdata)
return retval
end
-mymodule.getcert = function(cert)
- local f = fs.read_file(openssldir..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" })
+mymodule.getcert = function(self, clientdata)
+ local retval = cfe({ type="group", value={}, label="Certificate" })
+ retval.value.cert = cfe({ label="Certificate", key=true })
+ self.handle_clientdata(retval, clientdata)
+
+ local cert = retval.value.cert.value
+ if cert ~= "" then
+ local f = fs.read_file(openssldir..certdir..cert..".pfx") or ""
+ local a,b,c,d = string.match(cert, "([^%.]*)%.([^%.]*)%.([^%.]*).([^%.]*)")
+ c = string.gsub(unhashname(c), "[^%w_-]", "")
+ retval.value.details = cfe({ type="raw", value=f, label=c..".pfx", option="application/x-pkcs12" })
+ end
+
+ return retval
end
mymodule.getrevokecert = function(self, clientdata)
@@ -717,37 +726,55 @@ mymodule.renewcert = function(self, recert, submit, approve)
return recert
end
-mymodule.getcrl = function(crltype)
- local crlfile = cfe({ type="raw", option="application/pkix-crl" })
- modelfunctions.run_executable({"openssl", "ca", "-config", openssldir..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"})
- if string.lower(crltype or "") == "der" then
- crlfile.label = "ca-der-crl.crl"
- crlfile.value = fs.read_file(crlfile.label) or ""
- elseif string.lower(crltype or "") == "pem" then
- crlfile.label = "ca-crl.crl"
- crlfile.value = fs.read_file(crlfile.label) or ""
- else
- crlfile.value = fs.read_file("ca-der-crl.crl") or ""
+mymodule.getcrl = function(self, clientdata)
+ local retval = cfe({ type="group", value={}, label="Certificate Revocation List" })
+ retval.value.crltype = cfe({ type="select", value="", option={"", "DER", "PEM"}, label="CRL Type", key=true })
+ self.handle_clientdata(retval, clientdata)
+
+ local crltype = retval.value.crltype.value
+ if modelfunctions.validateselect(retval.value.crltype) then
+ retval.value.details = cfe({ type="raw", option="application/pkix-crl" })
+ modelfunctions.run_executable({"openssl", "ca", "-config", openssldir..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"})
+ if crltype == "DER" then
+ retval.value.details.label = "ca-der-crl.crl"
+ retval.value.details.value = fs.read_file(retval.value.details.label) or ""
+ elseif crltype == "PEM" then
+ retval.value.details.label = "ca-crl.crl"
+ retval.value.details.value = fs.read_file(retval.value.details.label) or ""
+ else
+ retval.value.details.value = fs.read_file("ca-der-crl.crl") or ""
+ end
end
- return crlfile
+
+ return retval
end
-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
- modelfunctions.run_executable({"openssl", "x509", "-in", openssldir.."cacert.pem", "-outform", "der", "-out", openssldir.."cacert.der"})
- fname = fname.."der"
- result.label = fname
- elseif string.lower(certtype or "") == "pem" then
- fname = fname.."pem"
- result.label = fname
- else
- fname = fname.."pem"
+mymodule.getca = function(self, clientdata)
+ local retval = cfe({ type="group", value={}, label="CA Certificate" })
+ retval.value.certtype = cfe({ type="select", value="", option={"", "DER", "PEM"}, label="Certificate Type", key=true })
+ self.handle_clientdata(retval, clientdata)
+
+ local certtype = retval.value.certtype.value
+ if modelfunctions.validateselect(retval.value.certtype) then
+ retval.value.details = cfe({ type="raw", option="application/x-x509-ca-cert" })
+ local fname = "cacert."
+ if certtype == "DER" then
+ if not posix.stat(openssldir.."cacert.der") then
+ modelfunctions.run_executable({"openssl", "x509", "-in", openssldir.."cacert.pem", "-outform", "der", "-out", openssldir.."cacert.der"})
+ end
+ fname = fname.."der"
+ retval.value.details.label = fname
+ elseif certtype == "PEM" then
+ fname = fname.."pem"
+ retval.value.details.label = fname
+ else
+ fname = fname.."pem"
+ end
+ retval.value.details.value = fs.read_file(fname) or ""
end
- result.value = fs.read_file(fname) or ""
- return result
+
+ return retval
end
mymodule.getnewputca = function()