From eb22ad5ffeee73eac830edb240e7fa88160aaee6 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 27 Oct 2021 16:12:18 +0800 Subject: [PATCH] [certificate notification] error handling and better msg --- server/model/monitor.js | 45 +++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 7f56cd42e..a1aa1656d 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -451,29 +451,34 @@ class Monitor extends BeanModel { let tls_info_bean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ this.id, ]); + if (tls_info_bean == null) { tls_info_bean = R.dispense("monitor_tls_info"); tls_info_bean.monitor_id = this.id; - } - - // Clear sent history if the cert changed. - let oldCertInfo = JSON.parse(tls_info_bean.info_json); - - let isValidObjects = oldCertInfo && oldCertInfo.certInfo && checkCertificateResult && checkCertificateResult.certInfo; - - if (isValidObjects) { - if (oldCertInfo.certInfo.fingerprint256 !== checkCertificateResult.certInfo.fingerprint256) { - debug("Resetting sent_history"); - await R.exec("DELETE FROM notification_sent_history WHERE type = 'certificate' AND monitor_id = ?", [ - this.id - ]); - } else { - debug("No need to reset sent_history"); - debug(oldCertInfo.certInfo.fingerprint256); - debug(checkCertificateResult.certInfo.fingerprint256); - } } else { - debug("Not valid object"); + + // Clear sent history if the cert changed. + try { + let oldCertInfo = JSON.parse(tls_info_bean.info_json); + + let isValidObjects = oldCertInfo && oldCertInfo.certInfo && checkCertificateResult && checkCertificateResult.certInfo; + + if (isValidObjects) { + if (oldCertInfo.certInfo.fingerprint256 !== checkCertificateResult.certInfo.fingerprint256) { + debug("Resetting sent_history"); + await R.exec("DELETE FROM notification_sent_history WHERE type = 'certificate' AND monitor_id = ?", [ + this.id + ]); + } else { + debug("No need to reset sent_history"); + debug(oldCertInfo.certInfo.fingerprint256); + debug(checkCertificateResult.certInfo.fingerprint256); + } + } else { + debug("Not valid object"); + } + } catch (e) { } + } tls_info_bean.info_json = JSON.stringify(checkCertificateResult); @@ -690,7 +695,7 @@ class Monitor extends BeanModel { for (let notification of notificationList) { try { debug("Sending to " + notification.name); - await Notification.send(JSON.parse(notification.config), `The certificate of ${this.url} will be expired in ${daysRemaining} days`); + await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] Certificate will be expired in ${daysRemaining} days`); sent = true; } catch (e) { console.error("Cannot send cert notification to " + notification.name);