mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-24 07:14:04 +00:00
Merge pull request #315 from tgxn/patch-1
Notifications Content Improvements: SMTP, LunaSea, PushBullet
This commit is contained in:
commit
f9c177b150
1 changed files with 28 additions and 21 deletions
|
@ -4,6 +4,8 @@ const FormData = require("form-data");
|
||||||
const nodemailer = require("nodemailer");
|
const nodemailer = require("nodemailer");
|
||||||
const child_process = require("child_process");
|
const child_process = require("child_process");
|
||||||
|
|
||||||
|
const { UP, DOWN } = require("../src/util");
|
||||||
|
|
||||||
class Notification {
|
class Notification {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,7 +82,7 @@ class Notification {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (notification.type === "smtp") {
|
} else if (notification.type === "smtp") {
|
||||||
return await Notification.smtp(notification, msg)
|
return await Notification.smtp(notification, msg, heartbeatJSON)
|
||||||
|
|
||||||
} else if (notification.type === "discord") {
|
} else if (notification.type === "discord") {
|
||||||
try {
|
try {
|
||||||
|
@ -109,7 +111,7 @@ class Notification {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If heartbeatJSON is not null, we go into the normal alerting loop.
|
// If heartbeatJSON is not null, we go into the normal alerting loop.
|
||||||
if (heartbeatJSON["status"] == 0) {
|
if (heartbeatJSON["status"] == DOWN) {
|
||||||
let discorddowndata = {
|
let discorddowndata = {
|
||||||
username: discordDisplayName,
|
username: discordDisplayName,
|
||||||
embeds: [{
|
embeds: [{
|
||||||
|
@ -139,7 +141,7 @@ class Notification {
|
||||||
await axios.post(notification.discordWebhookUrl, discorddowndata)
|
await axios.post(notification.discordWebhookUrl, discorddowndata)
|
||||||
return okMsg;
|
return okMsg;
|
||||||
|
|
||||||
} else if (heartbeatJSON["status"] == 1) {
|
} else if (heartbeatJSON["status"] == UP) {
|
||||||
let discordupdata = {
|
let discordupdata = {
|
||||||
username: discordDisplayName,
|
username: discordDisplayName,
|
||||||
embeds: [{
|
embeds: [{
|
||||||
|
@ -343,7 +345,7 @@ class Notification {
|
||||||
const mattermostIconEmoji = notification.mattermosticonemo;
|
const mattermostIconEmoji = notification.mattermosticonemo;
|
||||||
const mattermostIconUrl = notification.mattermosticonurl;
|
const mattermostIconUrl = notification.mattermosticonurl;
|
||||||
|
|
||||||
if (heartbeatJSON["status"] == 0) {
|
if (heartbeatJSON["status"] == DOWN) {
|
||||||
let mattermostdowndata = {
|
let mattermostdowndata = {
|
||||||
username: mattermostUserName,
|
username: mattermostUserName,
|
||||||
text: "Uptime Kuma Alert",
|
text: "Uptime Kuma Alert",
|
||||||
|
@ -387,7 +389,7 @@ class Notification {
|
||||||
mattermostdowndata
|
mattermostdowndata
|
||||||
);
|
);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
} else if (heartbeatJSON["status"] == 1) {
|
} else if (heartbeatJSON["status"] == UP) {
|
||||||
let mattermostupdata = {
|
let mattermostupdata = {
|
||||||
username: mattermostUserName,
|
username: mattermostUserName,
|
||||||
text: "Uptime Kuma Alert",
|
text: "Uptime Kuma Alert",
|
||||||
|
@ -489,7 +491,7 @@ class Notification {
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heartbeatJSON["status"] == 0) {
|
if (heartbeatJSON["status"] == DOWN) {
|
||||||
let downdata = {
|
let downdata = {
|
||||||
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
||||||
"body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
"body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
||||||
|
@ -498,7 +500,7 @@ class Notification {
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heartbeatJSON["status"] == 1) {
|
if (heartbeatJSON["status"] == UP) {
|
||||||
let updata = {
|
let updata = {
|
||||||
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
||||||
"body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
"body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
||||||
|
@ -527,14 +529,14 @@ class Notification {
|
||||||
"body": "Testing Successful.",
|
"body": "Testing Successful.",
|
||||||
}
|
}
|
||||||
await axios.post(pushbulletUrl, testdata, config)
|
await axios.post(pushbulletUrl, testdata, config)
|
||||||
} else if (heartbeatJSON["status"] == 0) {
|
} else if (heartbeatJSON["status"] == DOWN) {
|
||||||
let downdata = {
|
let downdata = {
|
||||||
"type": "note",
|
"type": "note",
|
||||||
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
||||||
"body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
"body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
||||||
}
|
}
|
||||||
await axios.post(pushbulletUrl, downdata, config)
|
await axios.post(pushbulletUrl, downdata, config)
|
||||||
} else if (heartbeatJSON["status"] == 1) {
|
} else if (heartbeatJSON["status"] == UP) {
|
||||||
let updata = {
|
let updata = {
|
||||||
"type": "note",
|
"type": "note",
|
||||||
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
"title": "UptimeKuma Alert: " + monitorJSON["name"],
|
||||||
|
@ -566,7 +568,7 @@ class Notification {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
await axios.post(lineAPIUrl, testMessage, config)
|
await axios.post(lineAPIUrl, testMessage, config)
|
||||||
} else if (heartbeatJSON["status"] == 0) {
|
} else if (heartbeatJSON["status"] == DOWN) {
|
||||||
let downMessage = {
|
let downMessage = {
|
||||||
"to": notification.lineUserID,
|
"to": notification.lineUserID,
|
||||||
"messages": [
|
"messages": [
|
||||||
|
@ -577,7 +579,7 @@ class Notification {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
await axios.post(lineAPIUrl, downMessage, config)
|
await axios.post(lineAPIUrl, downMessage, config)
|
||||||
} else if (heartbeatJSON["status"] == 1) {
|
} else if (heartbeatJSON["status"] == UP) {
|
||||||
let upMessage = {
|
let upMessage = {
|
||||||
"to": notification.lineUserID,
|
"to": notification.lineUserID,
|
||||||
"messages": [
|
"messages": [
|
||||||
|
@ -634,7 +636,7 @@ class Notification {
|
||||||
await R.trash(bean)
|
await R.trash(bean)
|
||||||
}
|
}
|
||||||
|
|
||||||
static async smtp(notification, msg) {
|
static async smtp(notification, msg, heartbeatJSON = null) {
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
host: notification.smtpHost,
|
host: notification.smtpHost,
|
||||||
|
@ -652,12 +654,17 @@ class Notification {
|
||||||
|
|
||||||
let transporter = nodemailer.createTransport(config);
|
let transporter = nodemailer.createTransport(config);
|
||||||
|
|
||||||
|
let bodyTextContent = msg;
|
||||||
|
if(heartbeatJSON) {
|
||||||
|
bodyTextContent = `${msg}\nTime (UTC): ${heartbeatJSON["time"]}`;
|
||||||
|
}
|
||||||
|
|
||||||
// send mail with defined transport object
|
// send mail with defined transport object
|
||||||
await transporter.sendMail({
|
await transporter.sendMail({
|
||||||
from: `"Uptime Kuma" <${notification.smtpFrom}>`,
|
from: `"Uptime Kuma" <${notification.smtpFrom}>`,
|
||||||
to: notification.smtpTo,
|
to: notification.smtpTo,
|
||||||
subject: msg,
|
subject: msg,
|
||||||
text: msg,
|
text: bodyTextContent,
|
||||||
});
|
});
|
||||||
|
|
||||||
return "Sent Successfully.";
|
return "Sent Successfully.";
|
||||||
|
|
Loading…
Reference in a new issue