diff options
author | Ted Trask <ttrask01@yahoo.com> | 2015-01-31 11:35:25 -0500 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2015-01-31 11:35:25 -0500 |
commit | 04feaaceb5de55bf95dfc712ab97641b194a222b (patch) | |
tree | cfe683f7dfb73e55ddb59cdc2692d9e87e7af908 /openssl-model.lua | |
parent | aac2c6c96fe4be58b4ad7de8840542471903e806 (diff) | |
download | acf-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.lua | 91 |
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() |