Handle event IDs on xmpp; do not echo back messages
This commit is contained in:
parent
facc375e8c
commit
d97a76fcc3
4 changed files with 14 additions and 1 deletions
|
@ -7,7 +7,8 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
gxmpp "github.com/mattn/go-xmpp"
|
||||
gxmpp "github.com/matterbridge/go-xmpp"
|
||||
"github.com/rs/xid"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
. "git.deuxfleurs.fr/Deuxfleurs/easybridge/connector"
|
||||
|
@ -225,6 +226,7 @@ func (xm *XMPP) handleXMPP() error {
|
|||
if v.Type == "groupchat" && len(remote_sp) == 2 {
|
||||
event.Room = RoomID(remote_sp[0])
|
||||
event.Author = UserID(remote_sp[1] + "@" + remote_sp[0])
|
||||
event.Id = v.ID
|
||||
xm.handler.Event(event)
|
||||
}
|
||||
}
|
||||
|
@ -331,10 +333,14 @@ func (xm *XMPP) Send(event *Event) error {
|
|||
})
|
||||
return err
|
||||
} else if len(event.Room) > 0 {
|
||||
if event.Id == "" {
|
||||
event.Id = xid.New().String()
|
||||
}
|
||||
_, err := xm.conn.Send(gxmpp.Chat{
|
||||
Type: "groupchat",
|
||||
Remote: string(event.Room),
|
||||
Text: event.Text,
|
||||
ID: event.Id,
|
||||
})
|
||||
return err
|
||||
} else {
|
||||
|
|
1
go.mod
1
go.mod
|
@ -13,6 +13,7 @@ require (
|
|||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91
|
||||
github.com/mattermost/mattermost-server v5.11.1+incompatible
|
||||
github.com/mattn/go-xmpp v0.0.0-20200128155807-a86b6abcb3ad
|
||||
github.com/rs/xid v1.2.1
|
||||
github.com/sirupsen/logrus v1.4.2
|
||||
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876
|
||||
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect
|
||||
|
|
2
go.sum
2
go.sum
|
@ -115,6 +115,7 @@ github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20190210153444-cc9d05784d5d/go
|
|||
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible/go.mod h1:igE6rUAn3jai2wCdsjFHfhUoekjrFthoEjFObKKwSb4=
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180131083630-7ec2b8b7def6 h1:GDh7egrbDEzP41mScMt7Q/uPM2nJENh9LNFXjUOGts8=
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180131083630-7ec2b8b7def6/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91 h1:KzDEcy8eDbTx881giW8a6llsAck3e2bJvMyKvh1IK+k=
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
|
||||
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
|
||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
|
||||
|
@ -169,6 +170,7 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R
|
|||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
|
||||
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
|
||||
|
|
|
@ -105,6 +105,7 @@ func handleTxnEvent(e *mxlib.Event) error {
|
|||
ev := &connector.Event{
|
||||
Type: connector.EVENT_MESSAGE,
|
||||
Text: e.Content["body"].(string),
|
||||
Id: e.EventId,
|
||||
}
|
||||
typ := e.Content["msgtype"].(string)
|
||||
if typ == "m.emote" {
|
||||
|
@ -129,6 +130,9 @@ func handleTxnEvent(e *mxlib.Event) error {
|
|||
return acct.Conn.Send(ev)
|
||||
}
|
||||
} else if room := dbIsPublicRoom(e.RoomId); room != nil {
|
||||
cache_key := fmt.Sprintf("%s/event_seen/%s/%s",
|
||||
room.Protocol, e.RoomId, ev.Id)
|
||||
dbCachePut(cache_key, "yes")
|
||||
// If this is a regular room
|
||||
acct := FindJoinedAccount(e.Sender, room.Protocol, room.RoomID)
|
||||
if acct != nil {
|
||||
|
|
Loading…
Reference in a new issue