46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package xmpp
|
|
|
|
import (
|
|
"github.com/genofire/logmania/database"
|
|
"github.com/genofire/logmania/lib"
|
|
"github.com/genofire/logmania/log"
|
|
"github.com/genofire/logmania/notify"
|
|
xmpp "github.com/mattn/go-xmpp"
|
|
)
|
|
|
|
type Notifier struct {
|
|
notify.Notifier
|
|
client *xmpp.Client
|
|
}
|
|
|
|
func NotifyInit(config *lib.NotifyConfig) notify.Notifier {
|
|
options := xmpp.Options{
|
|
Host: config.XMPP.Host,
|
|
User: config.XMPP.Username,
|
|
Password: config.XMPP.Password,
|
|
NoTLS: config.XMPP.NoTLS,
|
|
Debug: config.XMPP.Debug,
|
|
Session: config.XMPP.Session,
|
|
Status: config.XMPP.Status,
|
|
StatusMessage: config.XMPP.StatusMessage,
|
|
}
|
|
client, err := options.NewClient()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return &Notifier{client: client}
|
|
}
|
|
|
|
func (n *Notifier) Send(e *database.Entry) {
|
|
users := database.UserByApplication(e.ApplicationID)
|
|
for _, user := range users {
|
|
if user.NotifyXMPP && user.NotifyAfterLoglevel <= log.LogLevel(e.Level) {
|
|
n.client.SendHtml(xmpp.Chat{Remote: user.XMPP, Type: "chat", Text: FormatEntry(e)})
|
|
}
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
notify.AddNotifier(NotifyInit)
|
|
}
|