|
|
|
@ -279,6 +279,116 @@ class Notification {
|
|
|
|
|
throwGeneralAxiosError(error)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else if (notification.type === "mattermost") {
|
|
|
|
|
try {
|
|
|
|
|
const mattermostUserName = notification.mattermostusername || "Uptime Kuma";
|
|
|
|
|
// If heartbeatJSON is null, assume we're testing.
|
|
|
|
|
if (heartbeatJSON == null) {
|
|
|
|
|
let mattermostTestData = {
|
|
|
|
|
username: mattermostUserName,
|
|
|
|
|
text: msg,
|
|
|
|
|
}
|
|
|
|
|
await axios.post(notification.mattermostWebhookUrl, mattermostTestData)
|
|
|
|
|
return okMsg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const mattermostChannel = notification.mattermostchannel;
|
|
|
|
|
const mattermostIconEmoji = notification.mattermosticonemo;
|
|
|
|
|
const mattermostIconUrl = notification.mattermosticonurl;
|
|
|
|
|
|
|
|
|
|
if (heartbeatJSON["status"] == 0) {
|
|
|
|
|
let mattermostdowndata = {
|
|
|
|
|
username: mattermostUserName,
|
|
|
|
|
text: "Uptime Kuma Alert",
|
|
|
|
|
channel: mattermostChannel,
|
|
|
|
|
icon_emoji: mattermostIconEmoji,
|
|
|
|
|
icon_url: mattermostIconUrl,
|
|
|
|
|
attachments: [
|
|
|
|
|
{
|
|
|
|
|
fallback:
|
|
|
|
|
"Your " +
|
|
|
|
|
monitorJSON["name"] +
|
|
|
|
|
" service went down.",
|
|
|
|
|
color: "#FF0000",
|
|
|
|
|
title:
|
|
|
|
|
"❌ " +
|
|
|
|
|
monitorJSON["name"] +
|
|
|
|
|
" service went down. ❌",
|
|
|
|
|
title_link: monitorJSON["url"],
|
|
|
|
|
fields: [
|
|
|
|
|
{
|
|
|
|
|
short: true,
|
|
|
|
|
title: "Service Name",
|
|
|
|
|
value: monitorJSON["name"],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
short: true,
|
|
|
|
|
title: "Time (UTC)",
|
|
|
|
|
value: heartbeatJSON["time"],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
short: false,
|
|
|
|
|
title: "Error",
|
|
|
|
|
value: heartbeatJSON["msg"],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
await axios.post(
|
|
|
|
|
notification.mattermostWebhookUrl,
|
|
|
|
|
mattermostdowndata
|
|
|
|
|
);
|
|
|
|
|
return okMsg;
|
|
|
|
|
} else if (heartbeatJSON["status"] == 1) {
|
|
|
|
|
let mattermostupdata = {
|
|
|
|
|
username: mattermostUserName,
|
|
|
|
|
text: "Uptime Kuma Alert",
|
|
|
|
|
channel: mattermostChannel,
|
|
|
|
|
icon_emoji: mattermostIconEmoji,
|
|
|
|
|
icon_url: mattermostIconUrl,
|
|
|
|
|
attachments: [
|
|
|
|
|
{
|
|
|
|
|
fallback:
|
|
|
|
|
"Your " +
|
|
|
|
|
monitorJSON["name"] +
|
|
|
|
|
" service went up!",
|
|
|
|
|
color: "#32CD32",
|
|
|
|
|
title:
|
|
|
|
|
"✅ " +
|
|
|
|
|
monitorJSON["name"] +
|
|
|
|
|
" service went up! ✅",
|
|
|
|
|
title_link: monitorJSON["url"],
|
|
|
|
|
fields: [
|
|
|
|
|
{
|
|
|
|
|
short: true,
|
|
|
|
|
title: "Service Name",
|
|
|
|
|
value: monitorJSON["name"],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
short: true,
|
|
|
|
|
title: "Time (UTC)",
|
|
|
|
|
value: heartbeatJSON["time"],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
short: false,
|
|
|
|
|
title: "Ping",
|
|
|
|
|
value: heartbeatJSON["ping"] + "ms",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
await axios.post(
|
|
|
|
|
notification.mattermostWebhookUrl,
|
|
|
|
|
mattermostupdata
|
|
|
|
|
);
|
|
|
|
|
return okMsg;
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
throwGeneralAxiosError(error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else if (notification.type === "pushover") {
|
|
|
|
|
let pushoverlink = "https://api.pushover.net/1/messages.json"
|
|
|
|
|
try {
|
|
|
|
|