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,19 +491,19 @@ 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"], | ||||||
|                     } |                     } | ||||||
|                     await axios.post(lunaseadevice, downdata) |                     await axios.post(lunaseadevice, downdata) | ||||||
|                     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"], | ||||||
|                     } |                     } | ||||||
|                     await axios.post(lunaseadevice, updata) |                     await axios.post(lunaseadevice, updata) | ||||||
|                     return okMsg; |                     return okMsg; | ||||||
|  | @ -527,18 +529,18 @@ 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"], | ||||||
|                         "body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], |                         "body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], | ||||||
|                     } |                     } | ||||||
|                     await axios.post(pushbulletUrl, updata, config) |                     await axios.post(pushbulletUrl, updata, config) | ||||||
|                 } |                 } | ||||||
|  | @ -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