mirror of
				https://github.com/louislam/uptime-kuma.git
				synced 2025-11-01 03:49:24 +08:00 
			
		
		
		
	prevent unexpected error throw from checkCertificate interrupt the beat
This commit is contained in:
		| @@ -6,7 +6,7 @@ var timezone = require('dayjs/plugin/timezone') | |||||||
| dayjs.extend(utc) | dayjs.extend(utc) | ||||||
| dayjs.extend(timezone) | dayjs.extend(timezone) | ||||||
| const axios = require("axios"); | const axios = require("axios"); | ||||||
| const {UP, DOWN, PENDING} = require("../util"); | const {debug, UP, DOWN, PENDING} = require("../util"); | ||||||
| const {tcping, ping, checkCertificate} = require("../util-server"); | const {tcping, ping, checkCertificate} = require("../util-server"); | ||||||
| const {R} = require("redbean-node"); | const {R} = require("redbean-node"); | ||||||
| const {BeanModel} = require("redbean-node/dist/bean-model"); | const {BeanModel} = require("redbean-node/dist/bean-model"); | ||||||
| @@ -89,10 +89,18 @@ class Monitor extends BeanModel { | |||||||
|                     bean.ping = dayjs().valueOf() - startTime; |                     bean.ping = dayjs().valueOf() - startTime; | ||||||
|  |  | ||||||
|                     // Check certificate if https is used |                     // Check certificate if https is used | ||||||
|  |  | ||||||
|  |                     let certInfoStartTime = dayjs().valueOf(); | ||||||
|                     if (this.getUrl()?.protocol === "https:") { |                     if (this.getUrl()?.protocol === "https:") { | ||||||
|                         await this.updateTlsInfo(checkCertificate(res)); |                         try { | ||||||
|  |                             await this.updateTlsInfo(checkCertificate(res)); | ||||||
|  |                         } catch (e) { | ||||||
|  |                             console.error(e.message) | ||||||
|  |                         } | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  |                     debug("Cert Info Query Time: " + (dayjs().valueOf() - certInfoStartTime) + "ms") | ||||||
|  |  | ||||||
|                     if (this.type === "http") { |                     if (this.type === "http") { | ||||||
|                         bean.status = UP; |                         bean.status = UP; | ||||||
|                     } else { |                     } else { | ||||||
| @@ -207,7 +215,7 @@ class Monitor extends BeanModel { | |||||||
|         clearInterval(this.heartbeatInterval) |         clearInterval(this.heartbeatInterval) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // Helper Method:  |     // Helper Method: | ||||||
|     // returns URL object for further usage |     // returns URL object for further usage | ||||||
|     // returns null if url is invalid |     // returns null if url is invalid | ||||||
|     getUrl() { |     getUrl() { | ||||||
| @@ -228,7 +236,7 @@ class Monitor extends BeanModel { | |||||||
|             tls_info_bean.monitor_id = this.id; |             tls_info_bean.monitor_id = this.id; | ||||||
|         } |         } | ||||||
|         tls_info_bean.info_json = JSON.stringify(checkCertificateResult); |         tls_info_bean.info_json = JSON.stringify(checkCertificateResult); | ||||||
|         R.store(tls_info_bean); |         await R.store(tls_info_bean); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     static async sendStats(io, monitorID, userID) { |     static async sendStats(io, monitorID, userID) { | ||||||
|   | |||||||
| @@ -18,3 +18,9 @@ exports.ucfirst = function (str) { | |||||||
|     return firstLetter.toUpperCase() + str.substr(1); |     return firstLetter.toUpperCase() + str.substr(1); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | exports.debug = (msg) => { | ||||||
|  |     if (process.env.NODE_ENV === "development") { | ||||||
|  |         console.log(msg) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user