From 16dee2aa560e07718c3420f0051f685fea0e96aa Mon Sep 17 00:00:00 2001 From: abmantis Date: Mon, 1 Nov 2021 23:17:44 +0000 Subject: [PATCH] Implement DoublePuppetServerMap --- config/bridge.go | 2 ++ custompuppet.go | 11 ++++++++++- example-config.yaml | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/config/bridge.go b/config/bridge.go index a9d8a1f..6d7ca37 100644 --- a/config/bridge.go +++ b/config/bridge.go @@ -96,6 +96,8 @@ type BridgeConfig struct { Relay RelaybotConfig `yaml:"relay"` + DoublePuppetServerMap map[string]string `yaml:"double_puppet_server_map"` + usernameTemplate *template.Template `yaml:"-"` displaynameTemplate *template.Template `yaml:"-"` } diff --git a/custompuppet.go b/custompuppet.go index c1a9036..b806b3d 100644 --- a/custompuppet.go +++ b/custompuppet.go @@ -84,7 +84,16 @@ func (puppet *Puppet) newCustomIntent() (*appservice.IntentAPI, error) { if len(puppet.CustomMXID) == 0 { return nil, ErrNoCustomMXID } - client, err := mautrix.NewClient(puppet.bridge.AS.HomeserverURL, puppet.CustomMXID, puppet.AccessToken) + _, homeserver, err := puppet.CustomMXID.Parse() + if err != nil { + return nil, err + } + homeserverUrl, found := puppet.bridge.Config.Bridge.DoublePuppetServerMap[homeserver] + if !found { + puppet.log.Debugfln("Homeserver not found in double puppet server map. Using local homeserver") + homeserverUrl = puppet.bridge.AS.HomeserverURL + } + client, err := mautrix.NewClient(homeserverUrl, puppet.CustomMXID, puppet.AccessToken) if err != nil { return nil, err } diff --git a/example-config.yaml b/example-config.yaml index 1edb8d1..9c99b8a 100644 --- a/example-config.yaml +++ b/example-config.yaml @@ -219,6 +219,9 @@ bridge: "example.com": user "@admin:example.com": admin + double_puppet_server_map: + "matrix.org": https://matrix.org + relay: # Whether relay mode should be allowed. If allowed, `!wa set-relay` can be used to turn any # authenticated user into a relaybot for that chat.