From bf0d83a6b7e0959f18ce6538fb94f08194566805 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Thu, 9 Mar 2017 16:54:40 +0100 Subject: [PATCH] security/acme-client: show acme status for each certificate in GUI --- .../AcmeClient/Api/CertificatesController.php | 2 +- .../models/OPNsense/AcmeClient/AcmeClient.xml | 12 +++++ .../OPNsense/AcmeClient/certificates.volt | 47 +++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/CertificatesController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/CertificatesController.php index fcba67fa2..913afdc4c 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/CertificatesController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/CertificatesController.php @@ -203,7 +203,7 @@ class CertificatesController extends ApiControllerBase $grid = new UIModelGrid($mdlAcme->certificates->certificate); return $grid->fetchBindRequest( $this->request, - array("enabled", "name", "altNames", "description"), + array("enabled", "name", "altNames", "description", "lastUpdate", "statusCode", "statusLastUpdate"), "name" ); } diff --git a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml index dd011e54a..50f6823de 100644 --- a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml +++ b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml @@ -224,6 +224,18 @@ N + + + N + + + 100 + 1000 + + + + N + diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt index 8f3ac324f..f806c2225 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt @@ -69,6 +69,50 @@ POSSIBILITY OF SUCH DAMAGE. } else { return ""; } + }, + "certdate": function (column, row) { + if (row.lastUpdate == "" || row.lastUpdate == undefined) { + return "pending"; + } else { + var certdate = new Date(row.lastUpdate*1000); + return certdate.toLocaleString(); + } + }, + "certstatus": function (column, row) { + if (row.statusCode == "" || row.statusCode == undefined) { + // fallback to lastUpdate value (unset if cert was never issued/imported) + if (row.lastUpdate == "" || row.lastUpdate == undefined) { + return "never"; + } else { + return "OK"; + } + } else if (row.statusCode == "100") { + return "never"; + } else if (row.statusCode == "200") { + return "OK"; + } else if (row.statusCode == "250") { + return "OK (renewed)"; + } else if (row.statusCode == "400") { + return "failed"; + } else if (row.statusCode == "500") { + return "internal error"; + } else { + return "unknown"; + } + }, + "certstatusdate": function (column, row) { + if (row.statusLastUpdate == "" || row.statusCode == undefined) { + // fallback to lastUpdate value + if (row.lastUpdate == "" || row.lastUpdate == undefined) { + return "unknown"; + } else { + var legacydate = new Date(row.lastUpdate*1000); + return legacydate.toLocaleString(); + } + } else { + var statusdate = new Date(row.statusLastUpdate*1000); + return statusdate.toLocaleString(); + } } }, }; @@ -339,6 +383,9 @@ POSSIBILITY OF SUCH DAMAGE. {{ lang._('Certificate Name') }} {{ lang._('Multi-Domain (SAN)') }} {{ lang._('Description') }} + {{ lang._('Issue/Renewal Date') }} + {{ lang._('Last Acme Status') }} + {{ lang._('Last Acme Run') }} {{ lang._('Commands') }} {{ lang._('ID') }}