summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--openssl-controller.lua6
-rw-r--r--openssl-model.lua91
-rw-r--r--openssl-status-html.lsp4
3 files changed, 64 insertions, 37 deletions
diff --git a/openssl-controller.lua b/openssl-controller.lua
index 994c00b..450332c 100644
--- a/openssl-controller.lua
+++ b/openssl-controller.lua
@@ -72,7 +72,7 @@ end
-- Get the specified cert
mymodule.getcert = function(self)
- return self.model.getcert(self.clientdata.cert)
+ return self.model.getcert(self, self.clientdata)
end
-- Revoke the specified cert
@@ -97,7 +97,7 @@ end
-- Get the revoked list
mymodule.getrevoked = function(self)
- return self.model.getcrl(self.clientdata.crltype)
+ return self.model.getcrl(self, self.clientdata)
end
-- Put the CA cert
@@ -106,7 +106,7 @@ mymodule.putcacert = function(self)
end
mymodule.downloadcacert = function(self)
- return self.model.getca(self.clientdata.certtype)
+ return self.model.getca(self, self.clientdata)
end
-- Generate a self-signed CA
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()
diff --git a/openssl-status-html.lsp b/openssl-status-html.lsp
index 3dfb813..e980114 100644
--- a/openssl-status-html.lsp
+++ b/openssl-status-html.lsp
@@ -45,8 +45,8 @@ end
<%
if not view.value.cacert.errtxt and viewlibrary.check_permission("downloadcacert") then
htmlviewfunctions.displaysectionstart(cfe({label="Download CA Cert"}), page_info, header_level)
- htmlviewfunctions.displayitem(cfe({type="link", value={certtype=cfe({type="hidden", value="pem"}), viewtype=cfe({type="hidden", value="stream"})}, label="", option="Download PEM", action="downloadcacert"}), page_info, -1)
- htmlviewfunctions.displayitem(cfe({type="link", value={certtype=cfe({type="hidden", value="der"}), viewtype=cfe({type="hidden", value="stream"})}, label="", option="Download DER", action="downloadcacert"}), page_info, -1)
+ htmlviewfunctions.displayitem(cfe({type="link", value={certtype=cfe({type="hidden", value="PEM"}), viewtype=cfe({type="hidden", value="stream"})}, label="", option="Download PEM", action="downloadcacert"}), page_info, -1)
+ htmlviewfunctions.displayitem(cfe({type="link", value={certtype=cfe({type="hidden", value="DER"}), viewtype=cfe({type="hidden", value="stream"})}, label="", option="Download DER", action="downloadcacert"}), page_info, -1)
htmlviewfunctions.displaysectionend(header_level)
end
%>