@ -1,5 +1,6 @@
const NotificationProvider = require ( "./notification-provider" ) ;
const axios = require ( "axios" ) ;
const { DOWN , UP } = require ( "../../src/util" ) ;
class Ntfy extends NotificationProvider {
@ -14,11 +15,45 @@ class Ntfy extends NotificationProvider {
"Authorization" : "Basic " + Buffer . from ( notification . ntfyusername + ":" + notification . ntfypassword ) . toString ( "base64" ) ,
} ;
}
let data = {
// If heartbeatJSON is null, assume non monitoring notification (Certificate warning) or testing.
if ( heartbeatJSON == null ) {
let ntfyTestData = {
"topic" : notification . ntfytopic ,
"title" : ( monitorJSON ? . name || notification . ntfytopic ) + " [Uptime-Kuma]" ,
"message" : msg ,
"priority" : notification . ntfyPriority || 4 ,
"title" : "Uptime-Kuma" ,
"priority" : notification . ntfyPriority ,
"tags" : [ "test_tube" ]
} ;
await axios . post ( ` ${ notification . ntfyserverurl } ` , ntfyTestData , { headers : headers } ) ;
return okMsg ;
}
let tags = [ ] ;
let status = "unknown" ;
let priority = notification . ntfyPriority || 4 ;
if ( "status" in heartbeatJSON ) {
if ( heartbeatJSON . status === DOWN ) {
tags = [ "red_circle" ] ;
status = "Down" ;
// if priority is not 5, increase priority for down alerts
priority = priority === 5 ? priority : priority + 1 ;
} else if ( heartbeatJSON [ "status" ] === UP ) {
tags = [ "green_circle" ] ;
status = "Up" ;
}
}
let data = {
"topic" : notification . ntfytopic ,
"message" : heartbeatJSON . msg ,
"priority" : priority ,
"title" : monitorJSON . name + " " + status + " [Uptime-Kuma]" ,
"tags" : tags ,
"actions" : [
{
"action" : "view" ,
"label" : "Open " + monitorJSON . name ,
"url" : monitorJSON . url
}
]
} ;
if ( notification . ntfyIcon ) {