Matrix: switch to the mautrix-go library

Also: add initial support for [Matrix] application services
This commit is contained in:
Simon THOBY
2022-07-24 20:12:03 +02:00
committed by Simon Thoby
parent 89b0d362d2
commit 625d7cd94c
175 changed files with 31467 additions and 2873 deletions

View File

@@ -8,4 +8,5 @@ import (
func init() {
FullMap["matrix"] = bmatrix.New
UserTypingSupport["matrix"] = struct{}{}
}

View File

@@ -323,11 +323,12 @@ func (gw *Gateway) ignoreFilesComment(extra map[string][]interface{}, igMessages
return false
}
func (gw *Gateway) modifyUsername(msg *config.Message, dest *bridge.Bridge) string {
func (gw *Gateway) ModifyUsername(msg *config.Message, dest *bridge.Bridge) string {
if dest.GetBool("StripNick") {
re := regexp.MustCompile("[^a-zA-Z0-9]+")
msg.Username = re.ReplaceAllString(msg.Username, "")
}
nick := dest.GetString("RemoteNickFormat")
// loop to replace nicks
@@ -462,7 +463,7 @@ func (gw *Gateway) SendMessage(
msg.Channel = channel.Name
msg.Avatar = gw.modifyAvatar(rmsg, dest)
msg.Username = gw.modifyUsername(rmsg, dest)
msg.Username = gw.ModifyUsername(rmsg, dest)
// exclude file delete event as the msg ID here is the native file ID that needs to be deleted
if msg.Event != config.EventFileDelete {

View File

@@ -75,7 +75,7 @@ func (r *Router) Start() error {
r.logger.Infof("Starting bridge: %s ", br.Account)
err := br.Connect()
if err != nil {
e := fmt.Errorf("Bridge %s failed to start: %v", br.Account, err)
e := fmt.Errorf("bridge %s failed to initialize: %v", br.Account, err)
if r.disableBridge(br, e) {
continue
}
@@ -83,12 +83,23 @@ func (r *Router) Start() error {
}
err = br.JoinChannels()
if err != nil {
e := fmt.Errorf("Bridge %s failed to join channel: %v", br.Account, err)
e := fmt.Errorf("bridge %s failed to join channel: %v", br.Account, err)
if r.disableBridge(br, e) {
continue
}
return e
}
if starter, ok := br.Bridger.(bridge.BridgerWithChannelDependency); ok {
err = starter.Start()
if err != nil {
e := fmt.Errorf("bridge %s failed to start: %v", br.Account, err)
if r.disableBridge(br, e) {
continue
}
return e
}
}
}
// remove unused bridges
for _, gw := range r.Gateways {