From ad8efb864bd72a2060436117c8f299d365091c45 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 14 May 2023 14:46:04 +0300 Subject: [PATCH] Add option to disable direct CDN uploads --- config/bridge.go | 1 + config/upgrade.go | 1 + example-config.yaml | 4 ++++ portal.go | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/config/bridge.go b/config/bridge.go index 0329163..dd1f080 100644 --- a/config/bridge.go +++ b/config/bridge.go @@ -51,6 +51,7 @@ type BridgeConfig struct { DeletePortalOnChannelDelete bool `yaml:"delete_portal_on_channel_delete"` DeleteGuildOnLeave bool `yaml:"delete_guild_on_leave"` FederateRooms bool `yaml:"federate_rooms"` + UseDiscordCDNUpload bool `yaml:"use_discord_cdn_upload"` CacheMedia string `yaml:"cache_media"` MediaPatterns MediaPatterns `yaml:"media_patterns"` diff --git a/config/upgrade.go b/config/upgrade.go index bcecbfb..4f1e99d 100644 --- a/config/upgrade.go +++ b/config/upgrade.go @@ -55,6 +55,7 @@ func DoUpgrade(helper *up.Helper) { helper.Copy(up.Bool, "bridge", "delete_portal_on_channel_delete") helper.Copy(up.Bool, "bridge", "delete_guild_on_leave") helper.Copy(up.Bool, "bridge", "federate_rooms") + helper.Copy(up.Bool, "bridge", "use_discord_cdn_upload") helper.Copy(up.Bool, "bridge", "media_patterns", "enabled") helper.Copy(up.Str, "bridge", "cache_media") helper.Copy(up.Str|up.Null, "bridge", "media_patterns", "attachments") diff --git a/example-config.yaml b/example-config.yaml index 0b354fe..29d1d24 100644 --- a/example-config.yaml +++ b/example-config.yaml @@ -145,6 +145,10 @@ bridge: # Whether or not created rooms should have federation enabled. # If false, created portal rooms will never be federated. federate_rooms: true + # Should the bridge upload media to the Discord CDN directly before sending the message when using a user token, + # like the official client does? The other option is sending the media in the message send request as a form part + # (which is always used by bots and webhooks). + use_discord_cdn_upload: true # Should mxc uris copied from Discord be cached? # This can be `never` to never cache, `unencrypted` to only cache unencrypted mxc uris, or `always` to cache everything. # If you have a media repo that generates non-unique mxc uris, you should set this to never. diff --git a/portal.go b/portal.go index 92ba0b0..f4d209a 100644 --- a/portal.go +++ b/portal.go @@ -1496,7 +1496,7 @@ func (portal *Portal) handleMatrixMessage(sender *User, evt *event.Event) { sendReq.Content, sendReq.AllowedMentions = portal.parseMatrixHTML(content) } - if !isWebhookSend && sess.IsUser { + if portal.bridge.Config.Bridge.UseDiscordCDNUpload && !isWebhookSend && sess.IsUser { att := &discordgo.MessageAttachment{ ID: "0", Filename: filename,