mirror of
https://github.com/komari-monitor/komari.git
synced 2025-11-02 13:03:19 +00:00
49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package messageSender
|
|
|
|
import (
|
|
"github.com/komari-monitor/komari/database/auditlog"
|
|
"github.com/komari-monitor/komari/database/config"
|
|
)
|
|
|
|
var CurrentProvider MessageSender
|
|
|
|
func init() {
|
|
CurrentProvider = &EmptyProvider{}
|
|
}
|
|
|
|
func Initialize() {
|
|
cfg, err := config.Get()
|
|
if err != nil {
|
|
CurrentProvider = &EmptyProvider{}
|
|
return
|
|
}
|
|
|
|
switch cfg.NotificationMethod {
|
|
case "telegram":
|
|
CurrentProvider = &TelegramMessageSender{}
|
|
case "email":
|
|
CurrentProvider = &EmailMessageSender{}
|
|
case "none", "":
|
|
CurrentProvider = &EmptyProvider{}
|
|
default:
|
|
CurrentProvider = &EmptyProvider{}
|
|
}
|
|
}
|
|
|
|
type MessageSender interface {
|
|
SendTextMessage(message, title string) error
|
|
}
|
|
|
|
func SendTextMessage(message string, title string) error {
|
|
var err error
|
|
for i := 0; i < 3; i++ {
|
|
err = CurrentProvider.SendTextMessage(message, title)
|
|
if err == nil {
|
|
auditlog.Log("", "", "Message sent: "+title, "info")
|
|
return nil
|
|
}
|
|
}
|
|
auditlog.Log("", "", "Failed to send message after 3 attempts: "+err.Error()+","+title, "error")
|
|
return err
|
|
}
|