mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-09 23:24:07 -08:00
* Fixed #3520 Validate accepted status codes type Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com> * Avoid crash on invalid status code Instead of failing on an invalid status code, log the error and skip to next. Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com> --------- Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>
This commit is contained in:
parent
2921f33c24
commit
71fca3f0c3
|
@ -641,6 +641,10 @@ let needSetup = false;
|
|||
let notificationIDList = monitor.notificationIDList;
|
||||
delete monitor.notificationIDList;
|
||||
|
||||
// Ensure status code ranges are strings
|
||||
if (!monitor.accepted_statuscodes.every((code) => typeof code === "string")) {
|
||||
throw new Error("Accepted status codes are not all strings");
|
||||
}
|
||||
monitor.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes);
|
||||
delete monitor.accepted_statuscodes;
|
||||
|
||||
|
@ -706,6 +710,11 @@ let needSetup = false;
|
|||
removeGroupChildren = true;
|
||||
}
|
||||
|
||||
// Ensure status code ranges are strings
|
||||
if (!monitor.accepted_statuscodes.every((code) => typeof code === "string")) {
|
||||
throw new Error("Accepted status codes are not all strings");
|
||||
}
|
||||
|
||||
bean.name = monitor.name;
|
||||
bean.description = monitor.description;
|
||||
bean.parent = monitor.parent;
|
||||
|
|
|
@ -720,7 +720,6 @@ exports.checkCertificate = function (res) {
|
|||
* @param {number} status The status code to check
|
||||
* @param {string[]} acceptedCodes An array of accepted status codes
|
||||
* @returns {boolean} True if status code within range, false otherwise
|
||||
* @throws {Error} Will throw an error if the provided status code is not a valid range string or code string
|
||||
*/
|
||||
exports.checkStatusCode = function (status, acceptedCodes) {
|
||||
if (acceptedCodes == null || acceptedCodes.length === 0) {
|
||||
|
@ -728,6 +727,11 @@ exports.checkStatusCode = function (status, acceptedCodes) {
|
|||
}
|
||||
|
||||
for (const codeRange of acceptedCodes) {
|
||||
if (typeof codeRange !== "string") {
|
||||
log.error("monitor", `Accepted status code not a string. ${codeRange} is of type ${typeof codeRange}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
const codeRangeSplit = codeRange.split("-").map(string => parseInt(string));
|
||||
if (codeRangeSplit.length === 1) {
|
||||
if (status === codeRangeSplit[0]) {
|
||||
|
@ -738,7 +742,8 @@ exports.checkStatusCode = function (status, acceptedCodes) {
|
|||
return true;
|
||||
}
|
||||
} else {
|
||||
throw new Error("Invalid status code range");
|
||||
log.error("monitor", `${codeRange} is not a valid status code range`);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue