mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-27 16:54:04 +00:00
Chore: General notification reformatting (#3182)
- I unified where in file the name of `NotificationProvider.name` is placed - I made sure that all the providers adhere to the signature of `NotificationProvider.send()` - I made sure that all the providers use `okMsg` if returning success messages directly from the function. Here a discussion should be had: Should this be refactored into a constant of `NotificationProvider`? I could imagine that `NotificationProvider.SENDING_SUCCESSFULL` could be a suitable alternative. - I made sure all providers have the URL they `POST`/`GET` to be extraced into a variable. => refactored this way due to Nelsons suggestion
This commit is contained in:
parent
bfd65ab6e3
commit
a9a1cf1353
50 changed files with 165 additions and 194 deletions
|
@ -1,5 +1,4 @@
|
||||||
class MonitorType {
|
class MonitorType {
|
||||||
|
|
||||||
name = undefined;
|
name = undefined;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,17 +3,15 @@ const { DOWN, UP } = require("../../src/util");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Alerta extends NotificationProvider {
|
class Alerta extends NotificationProvider {
|
||||||
|
|
||||||
name = "alerta";
|
name = "alerta";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let alertaUrl = `${notification.alertaApiEndpoint}`;
|
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json;charset=UTF-8",
|
"Content-Type": "application/json;charset=UTF-8",
|
||||||
|
@ -40,7 +38,7 @@ class Alerta extends NotificationProvider {
|
||||||
resource: "Message",
|
resource: "Message",
|
||||||
}, data);
|
}, data);
|
||||||
|
|
||||||
await axios.post(alertaUrl, postData, config);
|
await axios.post(notification.alertaApiEndpoint, postData, config);
|
||||||
} else {
|
} else {
|
||||||
let datadup = Object.assign( {
|
let datadup = Object.assign( {
|
||||||
correlate: [ "service_up", "service_down" ],
|
correlate: [ "service_up", "service_down" ],
|
||||||
|
@ -52,11 +50,11 @@ class Alerta extends NotificationProvider {
|
||||||
if (heartbeatJSON["status"] === DOWN) {
|
if (heartbeatJSON["status"] === DOWN) {
|
||||||
datadup.severity = notification.alertaAlertState; // critical
|
datadup.severity = notification.alertaAlertState; // critical
|
||||||
datadup.text = "Service " + monitorJSON["type"] + " is down.";
|
datadup.text = "Service " + monitorJSON["type"] + " is down.";
|
||||||
await axios.post(alertaUrl, datadup, config);
|
await axios.post(notification.alertaApiEndpoint, datadup, config);
|
||||||
} else if (heartbeatJSON["status"] === UP) {
|
} else if (heartbeatJSON["status"] === UP) {
|
||||||
datadup.severity = notification.alertaRecoverState; // cleaned
|
datadup.severity = notification.alertaRecoverState; // cleaned
|
||||||
datadup.text = "Service " + monitorJSON["type"] + " is up.";
|
datadup.text = "Service " + monitorJSON["type"] + " is up.";
|
||||||
await axios.post(alertaUrl, datadup, config);
|
await axios.post(notification.alertaApiEndpoint, datadup, config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return okMsg;
|
return okMsg;
|
||||||
|
|
|
@ -4,14 +4,14 @@ const { setting } = require("../util-server");
|
||||||
const { getMonitorRelativeURL, UP, DOWN } = require("../../src/util");
|
const { getMonitorRelativeURL, UP, DOWN } = require("../../src/util");
|
||||||
|
|
||||||
class AlertNow extends NotificationProvider {
|
class AlertNow extends NotificationProvider {
|
||||||
|
|
||||||
name = "AlertNow";
|
name = "AlertNow";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let textMsg = "";
|
let textMsg = "";
|
||||||
let status = "open";
|
let status = "open";
|
||||||
|
|
|
@ -11,7 +11,7 @@ class AliyunSMS extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON != null) {
|
if (heartbeatJSON != null) {
|
||||||
|
|
|
@ -2,13 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const childProcessAsync = require("promisify-child-process");
|
const childProcessAsync = require("promisify-child-process");
|
||||||
|
|
||||||
class Apprise extends NotificationProvider {
|
class Apprise extends NotificationProvider {
|
||||||
|
|
||||||
name = "apprise";
|
name = "apprise";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
const args = [ "-vv", "-b", msg, notification.appriseURL ];
|
const args = [ "-vv", "-b", msg, notification.appriseURL ];
|
||||||
if (notification.title) {
|
if (notification.title) {
|
||||||
args.push("-t");
|
args.push("-t");
|
||||||
|
@ -23,7 +24,7 @@ class Apprise extends NotificationProvider {
|
||||||
if (output) {
|
if (output) {
|
||||||
|
|
||||||
if (! output.includes("ERROR")) {
|
if (! output.includes("ERROR")) {
|
||||||
return "Sent Successfully";
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error(output);
|
throw new Error(output);
|
||||||
|
|
|
@ -46,29 +46,29 @@ class Bark extends NotificationProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add additional parameter for Bark v1 endpoints
|
* Add additional parameter for Bark v1 endpoints.
|
||||||
|
* Leads to better on device styles (iOS 15 optimized)
|
||||||
* @param {BeanModel} notification Notification to send
|
* @param {BeanModel} notification Notification to send
|
||||||
* @param {string} postUrl URL to append parameters to
|
|
||||||
* @returns {string} Additional URL parameters
|
* @returns {string} Additional URL parameters
|
||||||
*/
|
*/
|
||||||
appendAdditionalParameters(notification, postUrl) {
|
additionalParameters(notification) {
|
||||||
// set icon to uptime kuma icon, 11kb should be fine
|
// set icon to uptime kuma icon, 11kb should be fine
|
||||||
postUrl += "?icon=" + barkNotificationAvatar;
|
let params = "?icon=" + barkNotificationAvatar;
|
||||||
// grouping all our notifications
|
// grouping all our notifications
|
||||||
if (notification.barkGroup != null) {
|
if (notification.barkGroup != null) {
|
||||||
postUrl += "&group=" + notification.barkGroup;
|
params += "&group=" + notification.barkGroup;
|
||||||
} else {
|
} else {
|
||||||
// default name
|
// default name
|
||||||
postUrl += "&group=" + "UptimeKuma";
|
params += "&group=" + "UptimeKuma";
|
||||||
}
|
}
|
||||||
// picked a sound, this should follow system's mute status when arrival
|
// picked a sound, this should follow system's mute status when arrival
|
||||||
if (notification.barkSound != null) {
|
if (notification.barkSound != null) {
|
||||||
postUrl += "&sound=" + notification.barkSound;
|
params += "&sound=" + notification.barkSound;
|
||||||
} else {
|
} else {
|
||||||
// default sound
|
// default sound
|
||||||
postUrl += "&sound=" + "telegraph";
|
params += "&sound=" + "telegraph";
|
||||||
}
|
}
|
||||||
return postUrl;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -100,9 +100,8 @@ class Bark extends NotificationProvider {
|
||||||
// url encode title and subtitle
|
// url encode title and subtitle
|
||||||
title = encodeURIComponent(title);
|
title = encodeURIComponent(title);
|
||||||
subtitle = encodeURIComponent(subtitle);
|
subtitle = encodeURIComponent(subtitle);
|
||||||
let postUrl = endpoint + "/" + title + "/" + subtitle;
|
const params = this.additionalParameters(notification);
|
||||||
postUrl = this.appendAdditionalParameters(notification, postUrl);
|
result = await axios.get(`${endpoint}/${title}/${subtitle}${params}`);
|
||||||
result = await axios.get(postUrl);
|
|
||||||
} else {
|
} else {
|
||||||
result = await axios.post(`${endpoint}/push`, {
|
result = await axios.post(`${endpoint}/push`, {
|
||||||
title,
|
title,
|
||||||
|
|
|
@ -2,14 +2,15 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class ClickSendSMS extends NotificationProvider {
|
class ClickSendSMS extends NotificationProvider {
|
||||||
|
|
||||||
name = "clicksendsms";
|
name = "clicksendsms";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://rest.clicksend.com/v3/sms/send";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
|
@ -28,7 +29,7 @@ class ClickSendSMS extends NotificationProvider {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
let resp = await axios.post("https://rest.clicksend.com/v3/sms/send", data, config);
|
let resp = await axios.post(url, data, config);
|
||||||
if (resp.data.data.messages[0].status !== "SUCCESS") {
|
if (resp.data.data.messages[0].status !== "SUCCESS") {
|
||||||
let error = "Something gone wrong. Api returned " + resp.data.data.messages[0].status + ".";
|
let error = "Something gone wrong. Api returned " + resp.data.data.messages[0].status + ".";
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
|
|
|
@ -10,7 +10,7 @@ class DingDing extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON != null) {
|
if (heartbeatJSON != null) {
|
||||||
|
|
|
@ -3,14 +3,13 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class Discord extends NotificationProvider {
|
class Discord extends NotificationProvider {
|
||||||
|
|
||||||
name = "discord";
|
name = "discord";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const discordDisplayName = notification.discordUsername || "Uptime Kuma";
|
const discordDisplayName = notification.discordUsername || "Uptime Kuma";
|
||||||
|
|
|
@ -9,8 +9,7 @@ class Feishu extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
let feishuWebHookUrl = notification.feishuWebHookUrl;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
|
@ -20,7 +19,7 @@ class Feishu extends NotificationProvider {
|
||||||
text: msg,
|
text: msg,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
await axios.post(feishuWebHookUrl, testdata);
|
await axios.post(notification.feishuWebHookUrl, testdata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +45,7 @@ class Feishu extends NotificationProvider {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
await axios.post(feishuWebHookUrl, downdata);
|
await axios.post(notification.feishuWebHookUrl, downdata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +71,7 @@ class Feishu extends NotificationProvider {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
await axios.post(feishuWebHookUrl, updata);
|
await axios.post(notification.feishuWebHookUrl, updata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -2,14 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class FreeMobile extends NotificationProvider {
|
class FreeMobile extends NotificationProvider {
|
||||||
|
|
||||||
name = "FreeMobile";
|
name = "FreeMobile";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await axios.post(`https://smsapi.free-mobile.fr/sendmsg?msg=${encodeURIComponent(msg.replace("🔴", "⛔️"))}`, {
|
await axios.post(`https://smsapi.free-mobile.fr/sendmsg?msg=${encodeURIComponent(msg.replace("🔴", "⛔️"))}`, {
|
||||||
"user": notification.freemobileUser,
|
"user": notification.freemobileUser,
|
||||||
|
|
|
@ -3,21 +3,20 @@ const axios = require("axios");
|
||||||
const { UP } = require("../../src/util");
|
const { UP } = require("../../src/util");
|
||||||
|
|
||||||
class GoAlert extends NotificationProvider {
|
class GoAlert extends NotificationProvider {
|
||||||
|
|
||||||
name = "GoAlert";
|
name = "GoAlert";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let closeAction = "close";
|
|
||||||
let data = {
|
let data = {
|
||||||
summary: msg,
|
summary: msg,
|
||||||
};
|
};
|
||||||
if (heartbeatJSON != null && heartbeatJSON["status"] === UP) {
|
if (heartbeatJSON != null && heartbeatJSON["status"] === UP) {
|
||||||
data["action"] = closeAction;
|
data["action"] = "close";
|
||||||
}
|
}
|
||||||
let headers = {
|
let headers = {
|
||||||
"Content-Type": "multipart/form-data",
|
"Content-Type": "multipart/form-data",
|
||||||
|
@ -27,7 +26,6 @@ class GoAlert extends NotificationProvider {
|
||||||
};
|
};
|
||||||
await axios.post(`${notification.goAlertBaseURL}/api/v2/generic/incoming?token=${notification.goAlertToken}`, data, config);
|
await axios.post(`${notification.goAlertBaseURL}/api/v2/generic/incoming?token=${notification.goAlertToken}`, data, config);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
let msg = (error.response.data) ? error.response.data : "Error without response";
|
let msg = (error.response.data) ? error.response.data : "Error without response";
|
||||||
throw new Error(msg);
|
throw new Error(msg);
|
||||||
|
|
|
@ -5,14 +5,14 @@ const { getMonitorRelativeURL } = require("../../src/util");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class GoogleChat extends NotificationProvider {
|
class GoogleChat extends NotificationProvider {
|
||||||
|
|
||||||
name = "GoogleChat";
|
name = "GoogleChat";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic
|
// Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,13 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Gorush extends NotificationProvider {
|
class Gorush extends NotificationProvider {
|
||||||
|
|
||||||
name = "gorush";
|
name = "gorush";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
let platformMapping = {
|
let platformMapping = {
|
||||||
"ios": 1,
|
"ios": 1,
|
||||||
|
|
|
@ -2,14 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Gotify extends NotificationProvider {
|
class Gotify extends NotificationProvider {
|
||||||
|
|
||||||
name = "gotify";
|
name = "gotify";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (notification.gotifyserverurl && notification.gotifyserverurl.endsWith("/")) {
|
if (notification.gotifyserverurl && notification.gotifyserverurl.endsWith("/")) {
|
||||||
notification.gotifyserverurl = notification.gotifyserverurl.slice(0, -1);
|
notification.gotifyserverurl = notification.gotifyserverurl.slice(0, -1);
|
||||||
|
|
|
@ -3,19 +3,18 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class GrafanaOncall extends NotificationProvider {
|
class GrafanaOncall extends NotificationProvider {
|
||||||
|
|
||||||
name = "GrafanaOncall";
|
name = "GrafanaOncall";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
if (!notification.GrafanaOncallURL) {
|
if (!notification.GrafanaOncallURL) {
|
||||||
throw new Error("GrafanaOncallURL cannot be empty");
|
throw new Error("GrafanaOncallURL cannot be empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
let okMsg = "Sent Successfully.";
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON === null) {
|
if (heartbeatJSON === null) {
|
||||||
let grafanaupdata = {
|
let grafanaupdata = {
|
||||||
|
@ -23,10 +22,7 @@ class GrafanaOncall extends NotificationProvider {
|
||||||
message: msg,
|
message: msg,
|
||||||
state: "alerting",
|
state: "alerting",
|
||||||
};
|
};
|
||||||
await axios.post(
|
await axios.post(notification.GrafanaOncallURL, grafanaupdata);
|
||||||
notification.GrafanaOncallURL,
|
|
||||||
grafanaupdata
|
|
||||||
);
|
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} else if (heartbeatJSON["status"] === DOWN) {
|
} else if (heartbeatJSON["status"] === DOWN) {
|
||||||
let grafanadowndata = {
|
let grafanadowndata = {
|
||||||
|
@ -34,10 +30,7 @@ class GrafanaOncall extends NotificationProvider {
|
||||||
message: heartbeatJSON["msg"],
|
message: heartbeatJSON["msg"],
|
||||||
state: "alerting",
|
state: "alerting",
|
||||||
};
|
};
|
||||||
await axios.post(
|
await axios.post(notification.GrafanaOncallURL, grafanadowndata);
|
||||||
notification.GrafanaOncallURL,
|
|
||||||
grafanadowndata
|
|
||||||
);
|
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} else if (heartbeatJSON["status"] === UP) {
|
} else if (heartbeatJSON["status"] === UP) {
|
||||||
let grafanaupdata = {
|
let grafanaupdata = {
|
||||||
|
@ -45,10 +38,7 @@ class GrafanaOncall extends NotificationProvider {
|
||||||
message: heartbeatJSON["msg"],
|
message: heartbeatJSON["msg"],
|
||||||
state: "ok",
|
state: "ok",
|
||||||
};
|
};
|
||||||
await axios.post(
|
await axios.post(notification.GrafanaOncallURL, grafanaupdata);
|
||||||
notification.GrafanaOncallURL,
|
|
||||||
grafanaupdata
|
|
||||||
);
|
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -9,7 +9,9 @@ class HomeAssistant extends NotificationProvider {
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, message, monitor = null, heartbeat = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
const notificationService = notification?.notificationService || defaultNotificationService;
|
const notificationService = notification?.notificationService || defaultNotificationService;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -17,10 +19,10 @@ class HomeAssistant extends NotificationProvider {
|
||||||
`${notification.homeAssistantUrl.trim().replace(/\/*$/, "")}/api/services/notify/${notificationService}`,
|
`${notification.homeAssistantUrl.trim().replace(/\/*$/, "")}/api/services/notify/${notificationService}`,
|
||||||
{
|
{
|
||||||
title: "Uptime Kuma",
|
title: "Uptime Kuma",
|
||||||
message,
|
message: msg,
|
||||||
...(notificationService !== "persistent_notification" && { data: {
|
...(notificationService !== "persistent_notification" && { data: {
|
||||||
name: monitor?.name,
|
name: monitorJSON?.name,
|
||||||
status: heartbeat?.status,
|
status: heartbeatJSON?.status,
|
||||||
} }),
|
} }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -31,7 +33,7 @@ class HomeAssistant extends NotificationProvider {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
return "Sent Successfully.";
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,15 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Kook extends NotificationProvider {
|
class Kook extends NotificationProvider {
|
||||||
|
|
||||||
name = "Kook";
|
name = "Kook";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
let url = "https://www.kookapp.cn/api/v3/message/create";
|
const url = "https://www.kookapp.cn/api/v3/message/create";
|
||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
target_id: notification.kookGuildID,
|
target_id: notification.kookGuildID,
|
||||||
content: msg,
|
content: msg,
|
||||||
|
|
|
@ -3,16 +3,16 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class Line extends NotificationProvider {
|
class Line extends NotificationProvider {
|
||||||
|
|
||||||
name = "line";
|
name = "line";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://api.line.me/v2/bot/message/push";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let lineAPIUrl = "https://api.line.me/v2/bot/message/push";
|
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
|
@ -29,7 +29,7 @@ class Line extends NotificationProvider {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
await axios.post(lineAPIUrl, testMessage, config);
|
await axios.post(url, testMessage, config);
|
||||||
} else if (heartbeatJSON["status"] === DOWN) {
|
} else if (heartbeatJSON["status"] === DOWN) {
|
||||||
let downMessage = {
|
let downMessage = {
|
||||||
"to": notification.lineUserID,
|
"to": notification.lineUserID,
|
||||||
|
@ -43,7 +43,7 @@ class Line extends NotificationProvider {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
await axios.post(lineAPIUrl, downMessage, config);
|
await axios.post(url, downMessage, config);
|
||||||
} else if (heartbeatJSON["status"] === UP) {
|
} else if (heartbeatJSON["status"] === UP) {
|
||||||
let upMessage = {
|
let upMessage = {
|
||||||
"to": notification.lineUserID,
|
"to": notification.lineUserID,
|
||||||
|
@ -57,7 +57,7 @@ class Line extends NotificationProvider {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
await axios.post(lineAPIUrl, upMessage, config);
|
await axios.post(url, upMessage, config);
|
||||||
}
|
}
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -4,16 +4,16 @@ const qs = require("qs");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class LineNotify extends NotificationProvider {
|
class LineNotify extends NotificationProvider {
|
||||||
|
|
||||||
name = "LineNotify";
|
name = "LineNotify";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://notify-api.line.me/api/notify";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let lineAPIUrl = "https://notify-api.line.me/api/notify";
|
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
|
@ -24,7 +24,7 @@ class LineNotify extends NotificationProvider {
|
||||||
let testMessage = {
|
let testMessage = {
|
||||||
"message": msg,
|
"message": msg,
|
||||||
};
|
};
|
||||||
await axios.post(lineAPIUrl, qs.stringify(testMessage), config);
|
await axios.post(url, qs.stringify(testMessage), config);
|
||||||
} else if (heartbeatJSON["status"] === DOWN) {
|
} else if (heartbeatJSON["status"] === DOWN) {
|
||||||
let downMessage = {
|
let downMessage = {
|
||||||
"message": "\n[🔴 Down]\n" +
|
"message": "\n[🔴 Down]\n" +
|
||||||
|
@ -32,7 +32,7 @@ class LineNotify extends NotificationProvider {
|
||||||
heartbeatJSON["msg"] + "\n" +
|
heartbeatJSON["msg"] + "\n" +
|
||||||
`Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
`Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
||||||
};
|
};
|
||||||
await axios.post(lineAPIUrl, qs.stringify(downMessage), config);
|
await axios.post(url, qs.stringify(downMessage), config);
|
||||||
} else if (heartbeatJSON["status"] === UP) {
|
} else if (heartbeatJSON["status"] === UP) {
|
||||||
let upMessage = {
|
let upMessage = {
|
||||||
"message": "\n[✅ Up]\n" +
|
"message": "\n[✅ Up]\n" +
|
||||||
|
@ -40,7 +40,7 @@ class LineNotify extends NotificationProvider {
|
||||||
heartbeatJSON["msg"] + "\n" +
|
heartbeatJSON["msg"] + "\n" +
|
||||||
`Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
`Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
||||||
};
|
};
|
||||||
await axios.post(lineAPIUrl, qs.stringify(upMessage), config);
|
await axios.post(url, qs.stringify(upMessage), config);
|
||||||
}
|
}
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -3,28 +3,23 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class LunaSea extends NotificationProvider {
|
class LunaSea extends NotificationProvider {
|
||||||
|
|
||||||
name = "lunasea";
|
name = "lunasea";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
let lunaseaurl = "";
|
const url = "https://notify.lunasea.app/v1";
|
||||||
if (notification.lunaseaTarget === "user") {
|
|
||||||
lunaseaurl = "https://notify.lunasea.app/v1/custom/user/" + notification.lunaseaUserID;
|
|
||||||
} else {
|
|
||||||
lunaseaurl = "https://notify.lunasea.app/v1/custom/device/" + notification.lunaseaDevice;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const target = this.getTarget(notification);
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
let testdata = {
|
let testdata = {
|
||||||
"title": "Uptime Kuma Alert",
|
"title": "Uptime Kuma Alert",
|
||||||
"body": msg,
|
"body": msg,
|
||||||
};
|
};
|
||||||
await axios.post(lunaseaurl, testdata);
|
await axios.post(`${url}/custom/${target}`, testdata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +30,7 @@ class LunaSea extends NotificationProvider {
|
||||||
heartbeatJSON["msg"] +
|
heartbeatJSON["msg"] +
|
||||||
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
||||||
};
|
};
|
||||||
await axios.post(lunaseaurl, downdata);
|
await axios.post(`${url}/custom/${target}`, downdata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,13 +41,25 @@ class LunaSea extends NotificationProvider {
|
||||||
heartbeatJSON["msg"] +
|
heartbeatJSON["msg"] +
|
||||||
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
|
||||||
};
|
};
|
||||||
await axios.post(lunaseaurl, updata);
|
await axios.post(`${url}/custom/${target}`, updata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates the lunasea target to send the notification to
|
||||||
|
* @param {BeanModel} notification Notification details
|
||||||
|
* @returns {string} The target to send the notification to
|
||||||
|
*/
|
||||||
|
getTarget(notification) {
|
||||||
|
if (notification.lunaseaTarget === "user") {
|
||||||
|
return "user/" + notification.lunaseaUserID;
|
||||||
|
}
|
||||||
|
return "device/" + notification.lunaseaDevice;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ class Matrix extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
const size = 20;
|
const size = 20;
|
||||||
const randomString = encodeURIComponent(
|
const randomString = encodeURIComponent(
|
||||||
|
|
|
@ -3,14 +3,14 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class Mattermost extends NotificationProvider {
|
class Mattermost extends NotificationProvider {
|
||||||
|
|
||||||
name = "mattermost";
|
name = "mattermost";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const mattermostUserName = notification.mattermostusername || "Uptime Kuma";
|
const mattermostUserName = notification.mattermostusername || "Uptime Kuma";
|
||||||
// If heartbeatJSON is null, assume non monitoring notification (Certificate warning) or testing.
|
// If heartbeatJSON is null, assume non monitoring notification (Certificate warning) or testing.
|
||||||
|
@ -98,10 +98,7 @@ class Mattermost extends NotificationProvider {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
await axios.post(
|
await axios.post(notification.mattermostWebhookUrl, mattermostdata);
|
||||||
notification.mattermostWebhookUrl,
|
|
||||||
mattermostdata
|
|
||||||
);
|
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
|
|
|
@ -3,14 +3,14 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class Ntfy extends NotificationProvider {
|
class Ntfy extends NotificationProvider {
|
||||||
|
|
||||||
name = "ntfy";
|
name = "ntfy";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let headers = {};
|
let headers = {};
|
||||||
if (notification.ntfyAuthenticationMethod === "usernamePassword") {
|
if (notification.ntfyAuthenticationMethod === "usernamePassword") {
|
||||||
|
@ -31,7 +31,7 @@ class Ntfy extends NotificationProvider {
|
||||||
"priority": notification.ntfyPriority,
|
"priority": notification.ntfyPriority,
|
||||||
"tags": [ "test_tube" ],
|
"tags": [ "test_tube" ],
|
||||||
};
|
};
|
||||||
await axios.post(`${notification.ntfyserverurl}`, ntfyTestData, { headers: headers });
|
await axios.post(notification.ntfyserverurl, ntfyTestData, { headers: headers });
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
let tags = [];
|
let tags = [];
|
||||||
|
@ -70,7 +70,7 @@ class Ntfy extends NotificationProvider {
|
||||||
data.icon = notification.ntfyIcon;
|
data.icon = notification.ntfyIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
await axios.post(`${notification.ntfyserverurl}`, data, { headers: headers });
|
await axios.post(notification.ntfyserverurl, data, { headers: headers });
|
||||||
|
|
||||||
return okMsg;
|
return okMsg;
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,15 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Octopush extends NotificationProvider {
|
class Octopush extends NotificationProvider {
|
||||||
|
|
||||||
name = "octopush";
|
name = "octopush";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const urlV2 = "https://api.octopush.com/v1/public/sms-campaign/send";
|
||||||
|
const urlV1 = "https://www.octopush-dm.com/api/sms/json";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Default - V2
|
// Default - V2
|
||||||
|
@ -33,7 +34,7 @@ class Octopush extends NotificationProvider {
|
||||||
"purpose": "alert",
|
"purpose": "alert",
|
||||||
"sender": notification.octopushSenderName
|
"sender": notification.octopushSenderName
|
||||||
};
|
};
|
||||||
await axios.post("https://api.octopush.com/v1/public/sms-campaign/send", data, config);
|
await axios.post(urlV2, data, config);
|
||||||
} else if (notification.octopushVersion === "1") {
|
} else if (notification.octopushVersion === "1") {
|
||||||
let data = {
|
let data = {
|
||||||
"user_login": notification.octopushDMLogin,
|
"user_login": notification.octopushDMLogin,
|
||||||
|
@ -55,7 +56,7 @@ class Octopush extends NotificationProvider {
|
||||||
|
|
||||||
// V1 API returns 200 even on error so we must check
|
// V1 API returns 200 even on error so we must check
|
||||||
// response data
|
// response data
|
||||||
let response = await axios.post("https://www.octopush-dm.com/api/sms/json", {}, config);
|
let response = await axios.post(urlV1, {}, config);
|
||||||
if ("error_code" in response.data) {
|
if ("error_code" in response.data) {
|
||||||
if (response.data.error_code !== "000") {
|
if (response.data.error_code !== "000") {
|
||||||
this.throwGeneralAxiosError(`Octopush error ${JSON.stringify(response.data)}`);
|
this.throwGeneralAxiosError(`Octopush error ${JSON.stringify(response.data)}`);
|
||||||
|
|
|
@ -2,23 +2,23 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class OneBot extends NotificationProvider {
|
class OneBot extends NotificationProvider {
|
||||||
|
|
||||||
name = "OneBot";
|
name = "OneBot";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let httpAddr = notification.httpAddr;
|
let url = notification.httpAddr;
|
||||||
if (!httpAddr.startsWith("http")) {
|
if (!url.startsWith("http")) {
|
||||||
httpAddr = "http://" + httpAddr;
|
url = "http://" + url;
|
||||||
}
|
}
|
||||||
if (!httpAddr.endsWith("/")) {
|
if (!url.endsWith("/")) {
|
||||||
httpAddr += "/";
|
url += "/";
|
||||||
}
|
}
|
||||||
let onebotAPIUrl = httpAddr + "send_msg";
|
url += "send_msg";
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
|
@ -37,7 +37,7 @@ class OneBot extends NotificationProvider {
|
||||||
data["message_type"] = "private";
|
data["message_type"] = "private";
|
||||||
data["user_id"] = notification.recieverId;
|
data["user_id"] = notification.recieverId;
|
||||||
}
|
}
|
||||||
await axios.post(onebotAPIUrl, data, config);
|
await axios.post(url, data, config);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
|
|
|
@ -4,10 +4,9 @@ const { UP, DOWN } = require("../../src/util");
|
||||||
|
|
||||||
const opsgenieAlertsUrlEU = "https://api.eu.opsgenie.com/v2/alerts";
|
const opsgenieAlertsUrlEU = "https://api.eu.opsgenie.com/v2/alerts";
|
||||||
const opsgenieAlertsUrlUS = "https://api.opsgenie.com/v2/alerts";
|
const opsgenieAlertsUrlUS = "https://api.opsgenie.com/v2/alerts";
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
class Opsgenie extends NotificationProvider {
|
class Opsgenie extends NotificationProvider {
|
||||||
|
|
||||||
name = "Opsgenie";
|
name = "Opsgenie";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,14 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class PromoSMS extends NotificationProvider {
|
class PromoSMS extends NotificationProvider {
|
||||||
|
|
||||||
name = "promosms";
|
name = "promosms";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://promosms.com/api/rest/v3_2/sms";
|
||||||
|
|
||||||
if (notification.promosmsAllowLongSMS === undefined) {
|
if (notification.promosmsAllowLongSMS === undefined) {
|
||||||
notification.promosmsAllowLongSMS = false;
|
notification.promosmsAllowLongSMS = false;
|
||||||
|
@ -36,7 +36,7 @@ class PromoSMS extends NotificationProvider {
|
||||||
"sender": notification.promosmsSenderName
|
"sender": notification.promosmsSenderName
|
||||||
};
|
};
|
||||||
|
|
||||||
let resp = await axios.post("https://promosms.com/api/rest/v3_2/sms", data, config);
|
let resp = await axios.post(url, data, config);
|
||||||
|
|
||||||
if (resp.data.response.status !== 0) {
|
if (resp.data.response.status !== 0) {
|
||||||
let error = "Something gone wrong. Api returned " + resp.data.response.status + ".";
|
let error = "Something gone wrong. Api returned " + resp.data.response.status + ".";
|
||||||
|
|
|
@ -4,17 +4,16 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class Pushbullet extends NotificationProvider {
|
class Pushbullet extends NotificationProvider {
|
||||||
|
|
||||||
name = "pushbullet";
|
name = "pushbullet";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://api.pushbullet.com/v2/pushes";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let pushbulletUrl = "https://api.pushbullet.com/v2/pushes";
|
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Access-Token": notification.pushbulletAccessToken,
|
"Access-Token": notification.pushbulletAccessToken,
|
||||||
|
@ -27,7 +26,7 @@ class Pushbullet extends NotificationProvider {
|
||||||
"title": "Uptime Kuma Alert",
|
"title": "Uptime Kuma Alert",
|
||||||
"body": msg,
|
"body": msg,
|
||||||
};
|
};
|
||||||
await axios.post(pushbulletUrl, data, config);
|
await axios.post(url, data, config);
|
||||||
} else if (heartbeatJSON["status"] === DOWN) {
|
} else if (heartbeatJSON["status"] === DOWN) {
|
||||||
let downData = {
|
let downData = {
|
||||||
"type": "note",
|
"type": "note",
|
||||||
|
@ -36,7 +35,7 @@ class Pushbullet extends NotificationProvider {
|
||||||
heartbeatJSON["msg"] +
|
heartbeatJSON["msg"] +
|
||||||
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
|
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
|
||||||
};
|
};
|
||||||
await axios.post(pushbulletUrl, downData, config);
|
await axios.post(url, downData, config);
|
||||||
} else if (heartbeatJSON["status"] === UP) {
|
} else if (heartbeatJSON["status"] === UP) {
|
||||||
let upData = {
|
let upData = {
|
||||||
"type": "note",
|
"type": "note",
|
||||||
|
@ -45,7 +44,7 @@ class Pushbullet extends NotificationProvider {
|
||||||
heartbeatJSON["msg"] +
|
heartbeatJSON["msg"] +
|
||||||
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
|
`\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
|
||||||
};
|
};
|
||||||
await axios.post(pushbulletUrl, upData, config);
|
await axios.post(url, upData, config);
|
||||||
}
|
}
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -3,17 +3,15 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class PushDeer extends NotificationProvider {
|
class PushDeer extends NotificationProvider {
|
||||||
|
|
||||||
name = "PushDeer";
|
name = "PushDeer";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
let endpoint = "/message/push";
|
const serverUrl = notification.pushdeerServer || "https://api2.pushdeer.com";
|
||||||
let serverUrl = notification.pushdeerServer || "https://api2.pushdeer.com";
|
const url = `${serverUrl.trim().replace(/\/*$/, "")}/message/push`;
|
||||||
let pushdeerlink = `${serverUrl.trim().replace(/\/*$/, "")}${endpoint}`;
|
|
||||||
|
|
||||||
let valid = msg != null && monitorJSON != null && heartbeatJSON != null;
|
let valid = msg != null && monitorJSON != null && heartbeatJSON != null;
|
||||||
|
|
||||||
|
@ -34,7 +32,7 @@ class PushDeer extends NotificationProvider {
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let res = await axios.post(pushdeerlink, data);
|
let res = await axios.post(url, data);
|
||||||
|
|
||||||
if ("error" in res.data) {
|
if ("error" in res.data) {
|
||||||
let error = res.data.error;
|
let error = res.data.error;
|
||||||
|
|
|
@ -2,15 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Pushover extends NotificationProvider {
|
class Pushover extends NotificationProvider {
|
||||||
|
|
||||||
name = "pushover";
|
name = "pushover";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
let pushoverlink = "https://api.pushover.net/1/messages.json";
|
const url = "https://api.pushover.net/1/messages.json";
|
||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
"message": msg,
|
"message": msg,
|
||||||
|
@ -33,11 +32,11 @@ class Pushover extends NotificationProvider {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
await axios.post(pushoverlink, data);
|
await axios.post(url, data);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} else {
|
} else {
|
||||||
data.message += `\n<b>Time (${heartbeatJSON["timezone"]})</b>:${heartbeatJSON["localDateTime"]}`;
|
data.message += `\n<b>Time (${heartbeatJSON["timezone"]})</b>:${heartbeatJSON["localDateTime"]}`;
|
||||||
await axios.post(pushoverlink, data);
|
await axios.post(url, data);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -2,14 +2,13 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Pushy extends NotificationProvider {
|
class Pushy extends NotificationProvider {
|
||||||
|
|
||||||
name = "pushy";
|
name = "pushy";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await axios.post(`https://api.pushy.me/push?api_key=${notification.pushyAPIKey}`, {
|
await axios.post(`https://api.pushy.me/push?api_key=${notification.pushyAPIKey}`, {
|
||||||
|
|
|
@ -5,14 +5,14 @@ const { setting } = require("../util-server");
|
||||||
const { getMonitorRelativeURL, DOWN } = require("../../src/util");
|
const { getMonitorRelativeURL, DOWN } = require("../../src/util");
|
||||||
|
|
||||||
class RocketChat extends NotificationProvider {
|
class RocketChat extends NotificationProvider {
|
||||||
|
|
||||||
name = "rocket.chat";
|
name = "rocket.chat";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
let data = {
|
let data = {
|
||||||
|
|
|
@ -3,14 +3,14 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class ServerChan extends NotificationProvider {
|
class ServerChan extends NotificationProvider {
|
||||||
|
|
||||||
name = "ServerChan";
|
name = "ServerChan";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await axios.post(`https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`, {
|
await axios.post(`https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`, {
|
||||||
"title": this.checkStatus(heartbeatJSON, monitorJSON),
|
"title": this.checkStatus(heartbeatJSON, monitorJSON),
|
||||||
|
|
|
@ -2,14 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class SerwerSMS extends NotificationProvider {
|
class SerwerSMS extends NotificationProvider {
|
||||||
|
|
||||||
name = "serwersms";
|
name = "serwersms";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://api2.serwersms.pl/messages/send_sms";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let config = {
|
let config = {
|
||||||
|
@ -25,7 +25,7 @@ class SerwerSMS extends NotificationProvider {
|
||||||
"sender": notification.serwersmsSenderName,
|
"sender": notification.serwersmsSenderName,
|
||||||
};
|
};
|
||||||
|
|
||||||
let resp = await axios.post("https://api2.serwersms.pl/messages/send_sms", data, config);
|
let resp = await axios.post(url, data, config);
|
||||||
|
|
||||||
if (!resp.data.success) {
|
if (!resp.data.success) {
|
||||||
if (resp.data.error) {
|
if (resp.data.error) {
|
||||||
|
|
|
@ -2,14 +2,13 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Signal extends NotificationProvider {
|
class Signal extends NotificationProvider {
|
||||||
|
|
||||||
name = "signal";
|
name = "signal";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let data = {
|
let data = {
|
||||||
|
|
|
@ -4,7 +4,6 @@ const { setSettings, setting } = require("../util-server");
|
||||||
const { getMonitorRelativeURL, UP } = require("../../src/util");
|
const { getMonitorRelativeURL, UP } = require("../../src/util");
|
||||||
|
|
||||||
class Slack extends NotificationProvider {
|
class Slack extends NotificationProvider {
|
||||||
|
|
||||||
name = "slack";
|
name = "slack";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ class Slack extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
if (notification.slackchannelnotify) {
|
if (notification.slackchannelnotify) {
|
||||||
msg += " <!channel>";
|
msg += " <!channel>";
|
||||||
|
|
|
@ -8,7 +8,9 @@ class SMSC extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://smsc.kz/sys/send.php?";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
|
@ -29,7 +31,7 @@ class SMSC extends NotificationProvider {
|
||||||
getArray.push("sender=" + notification.smscSenderName);
|
getArray.push("sender=" + notification.smscSenderName);
|
||||||
}
|
}
|
||||||
|
|
||||||
let resp = await axios.get("https://smsc.kz/sys/send.php?" + getArray.join("&"), config);
|
let resp = await axios.get(url + getArray.join("&"), config);
|
||||||
if (resp.data.id === undefined) {
|
if (resp.data.id === undefined) {
|
||||||
let error = `Something gone wrong. Api returned code ${resp.data.error_code}: ${resp.data.error}`;
|
let error = `Something gone wrong. Api returned code ${resp.data.error_code}: ${resp.data.error}`;
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
|
|
|
@ -2,14 +2,13 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class SMSEagle extends NotificationProvider {
|
class SMSEagle extends NotificationProvider {
|
||||||
|
|
||||||
name = "SMSEagle";
|
name = "SMSEagle";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let config = {
|
let config = {
|
||||||
|
|
|
@ -2,23 +2,24 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class SMSManager extends NotificationProvider {
|
class SMSManager extends NotificationProvider {
|
||||||
|
|
||||||
name = "SMSManager";
|
name = "SMSManager";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://http-api.smsmanager.cz/Send";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let data = {
|
let data = {
|
||||||
apikey: notification.smsmanagerApiKey,
|
apikey: notification.smsmanagerApiKey,
|
||||||
endpoint: "https://http-api.smsmanager.cz/Send",
|
|
||||||
message: msg.replace(/[^\x00-\x7F]/g, ""),
|
message: msg.replace(/[^\x00-\x7F]/g, ""),
|
||||||
to: notification.numbers,
|
number: notification.numbers,
|
||||||
messageType: notification.messageType,
|
gateway: notification.messageType,
|
||||||
};
|
};
|
||||||
await axios.get(`${data.endpoint}?apikey=${data.apikey}&message=${data.message}&number=${data.to}&gateway=${data.messageType}`);
|
await axios.get(`${url}?apikey=${data.apikey}&message=${data.message}&number=${data.number}&gateway=${data.messageType}`);
|
||||||
return "SMS sent sucessfully.";
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,13 +4,13 @@ const { DOWN } = require("../../src/util");
|
||||||
const { Liquid } = require("liquidjs");
|
const { Liquid } = require("liquidjs");
|
||||||
|
|
||||||
class SMTP extends NotificationProvider {
|
class SMTP extends NotificationProvider {
|
||||||
|
|
||||||
name = "smtp";
|
name = "smtp";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
host: notification.smtpHost,
|
host: notification.smtpHost,
|
||||||
|
@ -76,7 +76,7 @@ class SMTP extends NotificationProvider {
|
||||||
text: body,
|
text: body,
|
||||||
});
|
});
|
||||||
|
|
||||||
return "Sent Successfully.";
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,14 +3,13 @@ const axios = require("axios");
|
||||||
const { DOWN } = require("../../src/util");
|
const { DOWN } = require("../../src/util");
|
||||||
|
|
||||||
class Squadcast extends NotificationProvider {
|
class Squadcast extends NotificationProvider {
|
||||||
|
|
||||||
name = "squadcast";
|
name = "squadcast";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
|
|
@ -4,14 +4,14 @@ const { setting } = require("../util-server");
|
||||||
const { getMonitorRelativeURL } = require("../../src/util");
|
const { getMonitorRelativeURL } = require("../../src/util");
|
||||||
|
|
||||||
class Stackfield extends NotificationProvider {
|
class Stackfield extends NotificationProvider {
|
||||||
|
|
||||||
name = "stackfield";
|
name = "stackfield";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Stackfield message formatting: https://www.stackfield.com/help/formatting-messages-2001
|
// Stackfield message formatting: https://www.stackfield.com/help/formatting-messages-2001
|
||||||
|
|
||||||
|
|
|
@ -208,7 +208,7 @@ class Teams extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
|
|
|
@ -2,14 +2,13 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class TechulusPush extends NotificationProvider {
|
class TechulusPush extends NotificationProvider {
|
||||||
|
|
||||||
name = "PushByTechulus";
|
name = "PushByTechulus";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await axios.post(`https://push.techulus.com/api/v1/notify/${notification.pushAPIKey}`, {
|
await axios.post(`https://push.techulus.com/api/v1/notify/${notification.pushAPIKey}`, {
|
||||||
|
|
|
@ -2,14 +2,14 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Telegram extends NotificationProvider {
|
class Telegram extends NotificationProvider {
|
||||||
|
|
||||||
name = "telegram";
|
name = "telegram";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
const url = "https://api.telegram.org";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let params = {
|
let params = {
|
||||||
|
@ -22,7 +22,7 @@ class Telegram extends NotificationProvider {
|
||||||
params.message_thread_id = notification.telegramMessageThreadID;
|
params.message_thread_id = notification.telegramMessageThreadID;
|
||||||
}
|
}
|
||||||
|
|
||||||
await axios.get(`https://api.telegram.org/bot${notification.telegramBotToken}/sendMessage`, {
|
await axios.get(`${url}/bot${notification.telegramBotToken}/sendMessage`, {
|
||||||
params: params,
|
params: params,
|
||||||
});
|
});
|
||||||
return okMsg;
|
return okMsg;
|
||||||
|
|
|
@ -2,26 +2,21 @@ const NotificationProvider = require("./notification-provider");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
|
|
||||||
class Twilio extends NotificationProvider {
|
class Twilio extends NotificationProvider {
|
||||||
|
|
||||||
name = "twilio";
|
name = "twilio";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
let okMsg = "Sent Successfully.";
|
let apiKey = notification.twilioApiKey ? notification.twilioApiKey : notification.twilioAccountSID;
|
||||||
|
|
||||||
let accountSID = notification.twilioAccountSID;
|
|
||||||
let apiKey = notification.twilioApiKey ? notification.twilioApiKey : accountSID;
|
|
||||||
let authToken = notification.twilioAuthToken;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
|
"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
|
||||||
"Authorization": "Basic " + Buffer.from(apiKey + ":" + authToken).toString("base64"),
|
"Authorization": "Basic " + Buffer.from(apiKey + ":" + notification.twilioAuthToken).toString("base64"),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,9 +25,7 @@ class Twilio extends NotificationProvider {
|
||||||
data.append("From", notification.twilioFromNumber);
|
data.append("From", notification.twilioFromNumber);
|
||||||
data.append("Body", msg);
|
data.append("Body", msg);
|
||||||
|
|
||||||
let url = "https://api.twilio.com/2010-04-01/Accounts/" + accountSID + "/Messages.json";
|
await axios.post(`https://api.twilio.com/2010-04-01/Accounts/${(notification.twilioAccountSID)}/Messages.json`, data, config);
|
||||||
|
|
||||||
await axios.post(url, data, config);
|
|
||||||
|
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -4,14 +4,13 @@ const FormData = require("form-data");
|
||||||
const { Liquid } = require("liquidjs");
|
const { Liquid } = require("liquidjs");
|
||||||
|
|
||||||
class Webhook extends NotificationProvider {
|
class Webhook extends NotificationProvider {
|
||||||
|
|
||||||
name = "webhook";
|
name = "webhook";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let data = {
|
let data = {
|
||||||
|
|
|
@ -3,24 +3,22 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class WeCom extends NotificationProvider {
|
class WeCom extends NotificationProvider {
|
||||||
|
|
||||||
name = "WeCom";
|
name = "WeCom";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let WeComUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + notification.weComBotKey;
|
|
||||||
let config = {
|
let config = {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json"
|
"Content-Type": "application/json"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let body = this.composeMessage(heartbeatJSON, msg);
|
let body = this.composeMessage(heartbeatJSON, msg);
|
||||||
await axios.post(WeComUrl, body, config);
|
await axios.post(`https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${notification.weComBotKey}`, body, config);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.throwGeneralAxiosError(error);
|
this.throwGeneralAxiosError(error);
|
||||||
|
|
|
@ -3,7 +3,6 @@ const axios = require("axios");
|
||||||
const { DOWN, UP } = require("../../src/util");
|
const { DOWN, UP } = require("../../src/util");
|
||||||
|
|
||||||
class ZohoCliq extends NotificationProvider {
|
class ZohoCliq extends NotificationProvider {
|
||||||
|
|
||||||
name = "ZohoCliq";
|
name = "ZohoCliq";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,7 +79,7 @@ class ZohoCliq extends NotificationProvider {
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
let okMsg = "Sent Successfully.";
|
const okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
|
|
Loading…
Reference in a new issue