forked from jshiffer/matterbridge
7183095a28
* Implement User Avatar spoofing of XMPP users
31 lines
911 B
Go
31 lines
911 B
Go
package bxmpp
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"github.com/42wim/matterbridge/bridge/config"
|
|
)
|
|
|
|
var pathRegex = regexp.MustCompile("[^a-zA-Z0-9]+")
|
|
|
|
// GetAvatar constructs a URL for a given user-avatar if it is available in the cache.
|
|
func getAvatar(av map[string]string, userid string, general *config.Protocol) string {
|
|
if hash, ok := av[userid]; ok {
|
|
// NOTE: This does not happen in bridge/helper/helper.go but messes up XMPP
|
|
id := pathRegex.ReplaceAllString(userid, "_")
|
|
return general.MediaServerDownload + "/" + hash + "/" + id + ".png"
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (b *Bxmpp) cacheAvatar(msg *config.Message) string {
|
|
fi := msg.Extra["file"][0].(config.FileInfo)
|
|
/* if we have a sha we have successfully uploaded the file to the media server,
|
|
so we can now cache the sha */
|
|
if fi.SHA != "" {
|
|
b.Log.Debugf("Added %s to %s in avatarMap", fi.SHA, msg.UserID)
|
|
b.avatarMap[msg.UserID] = fi.SHA
|
|
}
|
|
return ""
|
|
}
|