forked from jshiffer/matterbridge
7183095a28
* Implement User Avatar spoofing of XMPP users
35 lines
1.0 KiB
Go
35 lines
1.0 KiB
Go
package bxmpp
|
|
|
|
import (
|
|
"github.com/42wim/matterbridge/bridge/config"
|
|
"github.com/42wim/matterbridge/bridge/helper"
|
|
"github.com/matterbridge/go-xmpp"
|
|
)
|
|
|
|
// handleDownloadAvatar downloads the avatar of userid from channel
|
|
// sends a EVENT_AVATAR_DOWNLOAD message to the gateway if successful.
|
|
// logs an error message if it fails
|
|
func (b *Bxmpp) handleDownloadAvatar(avatar xmpp.AvatarData) {
|
|
rmsg := config.Message{
|
|
Username: "system",
|
|
Text: "avatar",
|
|
Channel: b.parseChannel(avatar.From),
|
|
Account: b.Account,
|
|
UserID: avatar.From,
|
|
Event: config.EventAvatarDownload,
|
|
Extra: make(map[string][]interface{}),
|
|
}
|
|
if _, ok := b.avatarMap[avatar.From]; !ok {
|
|
b.Log.Debugf("Avatar.From: %s", avatar.From)
|
|
|
|
err := helper.HandleDownloadSize(b.Log, &rmsg, avatar.From+".png", int64(len(avatar.Data)), b.General)
|
|
if err != nil {
|
|
b.Log.Error(err)
|
|
return
|
|
}
|
|
helper.HandleDownloadData(b.Log, &rmsg, avatar.From+".png", rmsg.Text, "", &avatar.Data, b.General)
|
|
b.Log.Debugf("Avatar download complete")
|
|
b.Remote <- rmsg
|
|
}
|
|
}
|