forked from MirrorHub/mautrix-whatsapp
Fix displayname not being html-escaped in relay mode templates
This commit is contained in:
parent
911fdd37f0
commit
64db9c9c9b
2 changed files with 11 additions and 7 deletions
|
@ -283,8 +283,8 @@ func (rc *RelaybotConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type Sender struct {
|
type Sender struct {
|
||||||
UserID id.UserID
|
UserID string
|
||||||
*event.MemberEventContent
|
event.MemberEventContent
|
||||||
}
|
}
|
||||||
|
|
||||||
type formatData struct {
|
type formatData struct {
|
||||||
|
@ -293,11 +293,15 @@ type formatData struct {
|
||||||
Content *event.MessageEventContent
|
Content *event.MessageEventContent
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rc *RelaybotConfig) FormatMessage(content *event.MessageEventContent, sender id.UserID, member *event.MemberEventContent) (string, error) {
|
func (rc *RelaybotConfig) FormatMessage(content *event.MessageEventContent, sender id.UserID, member event.MemberEventContent) (string, error) {
|
||||||
|
if len(member.Displayname) == 0 {
|
||||||
|
member.Displayname = sender.String()
|
||||||
|
}
|
||||||
|
member.Displayname = template.HTMLEscapeString(member.Displayname)
|
||||||
var output strings.Builder
|
var output strings.Builder
|
||||||
err := rc.messageTemplates.ExecuteTemplate(&output, string(content.MsgType), formatData{
|
err := rc.messageTemplates.ExecuteTemplate(&output, string(content.MsgType), formatData{
|
||||||
Sender: Sender{
|
Sender: Sender{
|
||||||
UserID: sender,
|
UserID: template.HTMLEscapeString(sender.String()),
|
||||||
MemberEventContent: member,
|
MemberEventContent: member,
|
||||||
},
|
},
|
||||||
Content: content,
|
Content: content,
|
||||||
|
|
|
@ -1847,15 +1847,15 @@ type MediaUpload struct {
|
||||||
|
|
||||||
func (portal *Portal) addRelaybotFormat(sender *User, content *event.MessageEventContent) bool {
|
func (portal *Portal) addRelaybotFormat(sender *User, content *event.MessageEventContent) bool {
|
||||||
member := portal.MainIntent().Member(portal.MXID, sender.MXID)
|
member := portal.MainIntent().Member(portal.MXID, sender.MXID)
|
||||||
if len(member.Displayname) == 0 {
|
if member == nil {
|
||||||
member.Displayname = string(sender.MXID)
|
member = &event.MemberEventContent{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if content.Format != event.FormatHTML {
|
if content.Format != event.FormatHTML {
|
||||||
content.FormattedBody = strings.Replace(html.EscapeString(content.Body), "\n", "<br/>", -1)
|
content.FormattedBody = strings.Replace(html.EscapeString(content.Body), "\n", "<br/>", -1)
|
||||||
content.Format = event.FormatHTML
|
content.Format = event.FormatHTML
|
||||||
}
|
}
|
||||||
data, err := portal.bridge.Config.Bridge.Relay.FormatMessage(content, sender.MXID, member)
|
data, err := portal.bridge.Config.Bridge.Relay.FormatMessage(content, sender.MXID, *member)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Errorln("Failed to apply relaybot format:", err)
|
portal.log.Errorln("Failed to apply relaybot format:", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue