@ -23,42 +23,53 @@ class SMTP extends NotificationProvider {
}
// Lets start with default subject and empty string for custom one
let subject = msg ;
let customSubject = "" ;
// Our subject cannot end with whitespace it's often raise spam score
// Once I got "Cannot read property 'trim' of undefined", better be safe than sorry
if ( notification . customSubject ) {
customSubject = notification . customSubject . trim ( )
}
// Change the subject if:
// - The msg ends with "Testing" or
// - Actual Up/Down Notification
if ( ( monitorJSON && heartbeatJSON ) || msg . endsWith ( "Testing" ) ) {
let customSubject = "" ;
// If custom subject is not empty, change subject for notification
if ( customSubject !== "" ) {
// Our subject cannot end with whitespace it's often raise spam score
// Once I got "Cannot read property 'trim' of undefined", better be safe than sorry
if ( notification . customSubject ) {
customSubject = notification . customSubject . trim ( ) ;
}
// Replace "MACROS" with coresponding variable
let replaceName = new RegExp ( "{{NAME}}" , "g" ) ;
let replaceHostname = new RegExp ( "{{HOSTNAME}}" , "g" ) ;
let replaceStatus = new RegExp ( "{{STATUS}}" , "g" ) ;
// If custom subject is not empty, change subject for notification
if ( customSubject !== "" ) {
// Lets start with dummy values to simplify cod e
let monitorName = "Test"
let monitorHostname = "example.com"
let serviceStatus = "⚠️ Test" ;
// Replace "MACROS" with corresponding variable
let replaceName = new RegExp ( "{{NAME}}" , "g" ) ;
let replaceHostnameOrURL = new RegExp ( "{{HOSTNAME_OR_URL}}" , "g" ) ;
let replaceStatus = new RegExp ( "{{STATUS}}" , "g" ) ;
if ( monitorJSON !== null ) {
monitorName = monitorJSON [ "name" ] ;
monitorHostname = monitorJSON [ " hostname"] ;
}
// Lets start with dummy values to simplify code
let monitorName = "Test" ;
let monitorHostname OrURL = " testing. hostname";
let serviceStatus = "⚠️ Test" ;
if ( heartbeatJSON !== null ) {
serviceStatus = heartbeatJSON [ "status" ] == DOWN ? "🔴 Down" : "✅ Up" ;
}
// Break replace to one by line for better readability
customSubject = customSubject . replace ( replaceStatus , serviceStatus ) ;
customSubject = customSubject . replace ( replaceName , monitorName ) ;
customSubject = customSubject . replace ( replaceHostname , monitorHostname ) ;
if ( monitorJSON !== null ) {
monitorName = monitorJSON [ "name" ] ;
subject = customSubject
if ( monitorJSON [ "type" ] === "http" || monitorJSON [ "type" ] === "keyword" ) {
monitorHostnameOrURL = monitorJSON [ "url" ] ;
} else {
monitorHostnameOrURL = monitorJSON [ "hostname" ] ;
}
}
if ( heartbeatJSON !== null ) {
serviceStatus = ( heartbeatJSON [ "status" ] === DOWN ) ? "🔴 Down" : "✅ Up" ;
}
// Break replace to one by line for better readability
customSubject = customSubject . replace ( replaceStatus , serviceStatus ) ;
customSubject = customSubject . replace ( replaceName , monitorName ) ;
customSubject = customSubject . replace ( replaceHostnameOrURL , monitorHostnameOrURL ) ;
subject = customSubject ;
}
}
let transporter = nodemailer . createTransport ( config ) ;