fix changes xmpp lib and log error on send

This commit is contained in:
Martin/Geno 2019-06-28 00:43:47 +02:00
parent 006a178d13
commit 2435b9b73b
No known key found for this signature in database
GPG Key ID: 9D7D3C6BFF600C6A
2 changed files with 68 additions and 28 deletions

View File

@ -1,47 +1,70 @@
package runtime package runtime
import ( import (
"github.com/bdlm/log"
"gosrc.io/xmpp" "gosrc.io/xmpp"
"gosrc.io/xmpp/stanza"
) )
func NotifyImage(client *xmpp.Client, hook Hook, url string, desc string) { func NotifyImage(client *xmpp.Client, hook Hook, url string, desc string) {
msg := xmpp.Message{ msg := stanza.Message{
Attrs: xmpp.Attrs{Type: xmpp.MessageTypeGroupchat}, Attrs: stanza.Attrs{Type: stanza.MessageTypeGroupchat},
Body: url, Body: url,
Extensions: []xmpp.MsgExtension{ Extensions: []stanza.MsgExtension{
xmpp.OOB{URL: url, Desc: desc}, stanza.OOB{URL: url, Desc: desc},
}, },
} }
for _, muc := range hook.NotifyMuc { for _, muc := range hook.NotifyMuc {
msg.To = muc msg.To = muc
client.Send(msg) if err := client.Send(msg); err != nil {
log.WithFields(map[string]interface{}{
"muc": muc,
"url": url,
}).Errorf("error on image notify: %s", err)
}
} }
msg.Type = xmpp.MessageTypeChat msg.Type = stanza.MessageTypeChat
for _, user := range hook.NotifyUser { for _, user := range hook.NotifyUser {
msg.To = user msg.To = user
client.Send(msg) if err := client.Send(msg); err != nil {
log.WithFields(map[string]interface{}{
"user": user,
"url": url,
}).Errorf("error on image notify: %s", err)
}
} }
} }
func Notify(client *xmpp.Client, hook Hook, text, html string) { func Notify(client *xmpp.Client, hook Hook, text, html string) {
msg := xmpp.Message{ msg := stanza.Message{
Attrs: xmpp.Attrs{Type: xmpp.MessageTypeGroupchat}, Attrs: stanza.Attrs{Type: stanza.MessageTypeGroupchat},
Body: text, Body: text,
Extensions: []xmpp.MsgExtension{ Extensions: []stanza.MsgExtension{
xmpp.HTML{Body: xmpp.HTMLBody{InnerXML: html}}, stanza.HTML{Body: stanza.HTMLBody{InnerXML: html}},
}, },
} }
for _, muc := range hook.NotifyMuc { for _, muc := range hook.NotifyMuc {
msg.To = muc msg.To = muc
client.Send(msg) if err := client.Send(msg); err != nil {
log.WithFields(map[string]interface{}{
"muc": muc,
"text": text,
}).Errorf("error on notify: %s", err)
}
} }
msg.Type = xmpp.MessageTypeChat msg.Type = stanza.MessageTypeChat
for _, user := range hook.NotifyUser { for _, user := range hook.NotifyUser {
msg.To = user msg.To = user
client.Send(msg) if err := client.Send(msg); err != nil {
log.WithFields(map[string]interface{}{
"user": user,
"text": text,
}).Errorf("error on notify: %s", err)
}
} }
} }

45
xmpp.go
View File

@ -3,26 +3,37 @@ package main
import ( import (
"github.com/bdlm/log" "github.com/bdlm/log"
"gosrc.io/xmpp" "gosrc.io/xmpp"
"gosrc.io/xmpp/stanza"
) )
var client *xmpp.Client var client *xmpp.Client
var mucs []string var mucs []string
func notify(text string) { func notify(text string) {
msg := xmpp.Message{ msg := stanza.Message{
Attrs: xmpp.Attrs{Type: xmpp.MessageTypeGroupchat}, Attrs: stanza.Attrs{Type: stanza.MessageTypeGroupchat},
Body: text, Body: text,
} }
for _, muc := range config.StartupNotifyMuc { for _, muc := range config.StartupNotifyMuc {
msg.To = muc msg.To = muc
client.Send(msg) if err := client.Send(msg); err != nil {
log.WithFields(map[string]interface{}{
"muc": muc,
"msg": text,
}).Errorf("error on startup notify: %s", err)
}
} }
msg.Type = xmpp.MessageTypeChat msg.Type = stanza.MessageTypeChat
for _, user := range config.StartupNotifyUser { for _, user := range config.StartupNotifyUser {
msg.To = user msg.To = user
client.Send(msg) if err := client.Send(msg); err != nil {
log.WithFields(map[string]interface{}{
"user": user,
"msg": text,
}).Errorf("error on startup notify: %s", err)
}
} }
log.Infof("notify: %s", text) log.Infof("notify: %s", text)
} }
@ -38,10 +49,10 @@ func joinMUC(to, nick string) error {
mucs = append(mucs, jid) mucs = append(mucs, jid)
return client.Send(xmpp.Presence{Attrs: xmpp.Attrs{To: jid}, return client.Send(stanza.Presence{Attrs: stanza.Attrs{To: jid},
Extensions: []xmpp.PresExtension{ Extensions: []stanza.PresExtension{
xmpp.MucPresence{ stanza.MucPresence{
History: xmpp.History{MaxStanzas: xmpp.NewNullableInt(0)}, History: stanza.History{MaxStanzas: stanza.NewNullableInt(0)},
}}, }},
}) })
@ -49,12 +60,16 @@ func joinMUC(to, nick string) error {
func postStartup(c xmpp.StreamClient) { func postStartup(c xmpp.StreamClient) {
for _, muc := range config.StartupNotifyMuc { for _, muc := range config.StartupNotifyMuc {
joinMUC(muc, config.Nickname) if err := joinMUC(muc, config.Nickname); err != nil {
log.WithField("muc", muc).Errorf("error on joining muc: %s", err)
}
} }
for _, hooks := range config.Hooks { for _, hooks := range config.Hooks {
for _, hook := range hooks { for _, hook := range hooks {
for _, muc := range hook.NotifyMuc { for _, muc := range hook.NotifyMuc {
joinMUC(muc, config.Nickname) if err := joinMUC(muc, config.Nickname); err != nil {
log.WithField("muc", muc).Errorf("error on joining muc: %s", err)
}
} }
} }
} }
@ -65,10 +80,12 @@ func closeXMPP() {
notify("stopped of hock2xmpp") notify("stopped of hock2xmpp")
for _, muc := range mucs { for _, muc := range mucs {
client.Send(xmpp.Presence{Attrs: xmpp.Attrs{ if err := client.Send(stanza.Presence{Attrs: stanza.Attrs{
To: muc, To: muc,
Type: xmpp.PresenceTypeUnavailable, Type: stanza.PresenceTypeUnavailable,
}}) }}); err != nil {
log.WithField("muc", muc).Errorf("error on leaving muc: %s", err)
}
} }
} }