Commit Graph

871 Commits (master)

Author SHA1 Message Date
Sam W 5604d140e3
Ignore events from other guilds, add nosendjoinpart support (discord) (#1846)
* discord: add nosendjoinpart support

This allows the discord bridge to be configured with `nosendjoinpart`,
preventing discord-originating join/part messages from being send to
other bridged platforms.

* discord: Ignore incoming events for other guilds

Ignore all incoming discord events originating from Guild IDs other than
the one we have configured.
This is necessary because discord bots receive events for *all* discord
guilds that they are present in.

Fixes #1612
2 years ago
Andy 700b95546b
Improve Slack attachments formatting (slack) (#1807)
* Improve Slack attachments formatting (slack)

* Add TitleLink
* Add Footer

* Fix linter issues
2 years ago
Wim 2fa96ec0ed
Add KeepQuotedReply option for matrix to fix regression (#1823)
Matrix quotes replies and as of matterbridge 1.24.0 we strip those as this causes
issues with bridges support threading and have PreserveThreading enabled.

Introduced via 9a8ce9b17e

But if you for example use mattermost or discord with webhooks you'll need to enable
this if you want something that looks like a reply from matrix.
See issues:
- https://github.com/42wim/matterbridge/issues/1819
- https://github.com/42wim/matterbridge/issues/1780
2 years ago
Wim 888c8b9a84
Add space between filename and URL (mattermost). Fixes #1820 2 years ago
Wim e775a8a22e
Revert "Clear existing IRC event handlers before connecting new ones (#1795)"
This reverts commit f044b948e2.

Fixes #1815
2 years ago
Alexander 99fbd9cae6
Fix telegram message deletion request (#1818) 2 years ago
Daniil Suvorov ee932a9f8e
Fix UploadMessagesPhoto for vk community chat (vk) (#1812) 2 years ago
ValdikSS ce18c948e6
Do not apply any markup to URL entities (telegram) (#1808)
handleEntities code uses simple modification offset which does not
allow to detect whether the offset is placed before or after
the element in already modified string.
This works fine is most cases as Telegram server always sort the
elements by offset, in ascending order.
However, this is not the case when the modification, for example bold
text, is applied to the URL. In this case, the offset of URL and
bold entity is equal, which raises the issue.

This commit introduces additional hack for this case, stripping
any entities which intersect with URL.
2 years ago
Wim 7bc93c5506
Do not modify .webm files (telegram). Fixes #17** (#1802) 2 years ago
Bryan Davis f044b948e2
Clear existing IRC event handlers before connecting new ones (#1795)
Clear all existing IRC event handler registrations before registering
new handlers in case we are connecting via a BNC and are seeing
a reconnect.

Fixes #1564
2 years ago
Wim e63870a631
Add whatsapp deprecation warning (#1792) 2 years ago
Wim ce782ff6fb
Change discord non-native threading behaviour (discord) (#1791)
Sorta regression introduced by 9a8ce9b17e
which changes the way we get replies of matrix.

This causes issues like https://github.com/42wim/matterbridge/issues/1780
We "fix" this by mimicking the old behaviour when "PreserveThreading" is
disabled.
2 years ago
Alexander 30aae8e257
Multiple media in one message (telegram) (#1779)
* Send multiple images/video/documents as media group

* Fix media caption quotting

* Fix errors handling

* Refactor parent id detection

* Try to reduce cognitive complexity of code

* Remove unused conditional
2 years ago
Alexander d7b7ff7bb4
Preserve threading for messages with files (slack) (#1781)
* Preserve threading for slack messages with files

* Update bridge/slack/slack.go

Co-authored-by: Wim <wim@42.be>
2 years ago
Alexander 6fe0cff342
Use slack real name as user name (slack) (#1775)
* Use slack real name as user name

* Change slack option UseRealName to UseFullName
2 years ago
Alexander 5d9604cd15
Preserve threading from telegram replies (telegram) (#1776)
* Preserve threading from telegram replies

* Add fallback for unthreaded telegram message

* Fix linter issue
2 years ago
Alexander cc36ebf1c9
Add UseFullName option (telegram) (#1777) 2 years ago
Wim 952221d3b9 Fix linting (whatsapp) 2 years ago
Wim 496d5b4ec7 Add whatsappmulti buildflag for whatsapp with multidevice support (whatsapp) 2 years ago
Wim d64eed49bc Fix linting (whatsapp) 2 years ago
Wim fffa29c2f3 Fix channel in video/audio/image/document handling (whatsapp) 2 years ago
Wim 4da1444ffc Check for Conversation on receiving messages (whatsapp) 2 years ago
Wim 21c4e56d16 Use Conversation instead of ExtendedTextMessage (whatsapp) 2 years ago
Wim 320c996a21 Refactor login logic (whatsapp) 2 years ago
Wim 69c74be7bb Add busy_timeout which fixes SQLITE_BUSY errors (whatsapp) 2 years ago
Wim 1b9877fda4 Fetch avatars synchronous (whatsapp) 2 years ago
Wim 0205a67309 Refactor JoinChannel (whatsapp) 2 years ago
Wim e7b193788a Rewrite whatsapp bridge to use whatsmeow 2 years ago
Wim 17da95b094
Remove go replace by fork (matrix) (#1771) 2 years ago
Wim f0f801402d
Refactor utf-8 conversion (irc) (#1767) 2 years ago
Sebastian P 663850a2b8
Implement a workaround to signal Opus support (mumble) (#1764)
* Mumble: Implement a workaround to signal Opus support without pulling in the CGO gopus dependency.

* mumble: lowercase error messages

* mumble: Add link to #1750 in bridge/mumble/codec.go
2 years ago
ValdikSS c51753cab1
Fix for complex-formatted Telegram text (#1765)
* Telegram: handle entities before everything

* Telegram: use runes for text entities

* Telegram: use proper offset and runes for links

* Telegram: put newline after backticks for pre

* Telegram: use utf16 for entity processing
2 years ago
Wim c30e90ff3f
Fix panic in irc. Closes #1751 (#1760) 2 years ago
Wim e4c0ca0f48
Switch to discordgo upstream again (#1759)
* Switch to upstream discordgo again

* Fix discord api changes
2 years ago
ValdikSS 9c203327c0
Fix Telegram channel title in forwards (#1753)
Forward from channels requires different handling than forward from the regular users.
This patch fixes the issue: it prints channel title instead of "forwarded from unknown".
2 years ago
Jan Martin Reckel ccb5b1d075
Fix Telegram Problem (unforwarded formatting and skipping of linebreaks) (#1749)
* Change bridge/telegram/handlers.go

Comment out the removing of empty lines
add support for bold, italic and striked telegram messages

* Implement Telegram MessageEntities correctly

* Apply gofmt

Co-authored-by: Jan Martin Reckel <jan-martin.reckel@s2017.tu-chemnitz.de>
Co-authored-by: Wim <wim@42.be>
2 years ago
Wim 2a3f475ff5
Make EditSuffix option actually work (whatsapp). Fixes #1510 (#1728)
To keep it backwards compatible we keep the "(edited)" message when no
editsuffix is configured.
2 years ago
Wim 7288f71201
Make HTMLDisable work correct (matrix) (#1716) 2 years ago
Wim 9c43eff753
Add support for using ID in channel config (mattermost) (#1715) 2 years ago
Wim c8d7fdeedc
Add UseUsername option (mattermost). Fixes #1665 (#1714) 2 years ago
Wim c211152e23
Add more debug options for discord (#1712)
debuglevel=1 dumps every received discord event
debuglevel=2 dumps every discord event we are sending to discord (also
logs sensitive information)
2 years ago
Wim c3644c8d3b
Add support for client certificate (irc) (#1710)
Supports https://libera.chat/guides/certfp.html
2 years ago
Wim 6438a3dba3
Add support for deleting files from slack to discord. Fixes #1705 (#1709)
We create a new event EventFileDelete which will be used to delete
specific uploaded files using the Extra["file"] in the config.Message.

We also add a new NativeID key to the FileInfo struct which will contain
the native file ID of the sending bridge.

When a new file is added to the config.Message.Extra["file"] map, now
the bridge native file ID should be added here.

When the receiving bridge receives such a message, it should keep an
internal mapping of NativeID <> bridge fileid/message id. In the case of
discord we map it to the resulted discord message ID after uploading it.

Now when a bridge deletes a file, it should send a EventFileDelete and
setting the ID to the native file ID of the bridge.

When the receiving bridge will get this event it'll look into the
NativeID <> bridge id mapping to find their internal ID and use it to
delete the specific file on their side.

For now this is implemented for slack to discord but this will be add to
other bridges where useful.
2 years ago
Wim 4b226a6a63
Add support for sender_chat (telegram) (#1677)
* Add support for sender_chat (telegram)

Fixes #1654
https://core.telegram.org/bots/api#december-7-2021

* Add debuglevel option

Add `debuglevel=1` in telegram config to increase debug
2 years ago
Ivan Zuev 4801850013
Add Telegram Bot Command /chatId (telegram) (#1703)
* feat(telegram): command to get chat id

* Gofumpt

Co-authored-by: Ivan Zuev <i-zuev@yandex-team.ru>
Co-authored-by: Wim <wim@42.be>
2 years ago
Ivan Zuev 6a7412bf2b
Increase batch size for conversation.list api method (slack) (#1700)
Co-authored-by: Ivan Zuev <i-zuev@yandex-team.ru>
2 years ago
Wim 2bcad846c0
Add more ignore debug messages (mattermost) (#1678) 2 years ago
Wim 15ad0165fc
Log eventtype in debug (mattermost) (#1676) 2 years ago
Wim 2e8ab11978
Use current parentID if rootId is not set (mattermost) (#1675) 2 years ago
vpzomtrrfrt 9a8ce9b17e
Reply support for Matrix (#1664)
* Post replies to matrix

* Handle replies from matrix

* Include protocol in canonical ID return

* fmt
2 years ago
Daniil Suvorov 16ab4c6fed
Remove GroupID (vk) (#1668) 2 years ago
Janet Blackquill dbedc99421
Add support for Harmony (#1656)
Harmony is a relatively new (1,5yo) chat protocol with a small community.
This introduces support for Harmony into Matterbridge, using the functionality
specifically designed for bridge bots. The implementation is a modest 200 lines
of code.
2 years ago
Soloam ae2ad824a9
Add comments to messages (telegram) (#1652)
* Add's comments to message in telegram messages

This is a change to handle comments in telegram messages!

Some messages in telegram have comments added to the message! This normally is the description in images or links. This changes appends the comment to the message if available.

This should fix the issue in #1649

* [fix] discord: send comments in extras

Co-authored-by: Wim <wim@42.be>
3 years ago
Wim 02e3d7852b
Update telegram-bot-api to v5 (#1660) 3 years ago
Wim 658bdd9faa
Fix telegram/handlers.go linting (#1658) 3 years ago
Dan Walmsley b275efaeff
Add support for code blocks in telegram (#1650)
* handle code blocks in telegram.

* support multi-line code blocks.

* remove import.

* handle code blocks in middle of normal text.

* support multiple code blocks in same message.
3 years ago
Santtu Lakkala df4d76e466
Allow binding to IP on IRC (#1640)
Add configuration option "Bind" that is passed on to girc, allowing
to choose which IP address to use on systems that have multiple ones.
3 years ago
Polynomdivision 5e1be8e558
Do not fail on no avatar data (xmpp) #1529 (#1627)
* Detect errors when working with AvatarData

* Remove not neccessary line

Co-authored-by: Wim <wim@42.be>
3 years ago
Wim c4fe462d11
Use a new msgID when replacing messages (xmpp). Fixes #1584 (#1623) 3 years ago
Wim b1f403165d
Fix panic in msteams. Fixes #1588 (#1622) 3 years ago
Wim 46e4317b77
Keep the logger on a disabled bridge. Fixes #1616 (#1621) 3 years ago
Alex Vandiver e3ffbcadd8
Add better error handling on Zulip (#1589)
* zulip: Treat unknown errors with a 10-second backoff.

An unknown error (including an unauthorized error) would fall through
with no calls to time.Sleep, resulting in hammering the server as
quickly as possible.

Add a 10-second sleep in the default error case.  The heartbeat is
left with no explicit sleep, but all other codepaths now contain one.

* version: Move version information into a separate package.

This will allow it to be accessed by other sections of the code.

* zulip: Use the matterbridge version in the user-agent.

Co-authored-by: Wim <wim@42.be>
3 years ago
Iris Morelle 61bab22dde
Add UserName and RealName options for IRC (#1590)
This allows setting custom values for the IRC username/ident and real
name (gecos) fields at server registration time with gIRC.

Co-authored-by: Wim <wim@42.be>
3 years ago
Jonathan Walker (Keenan) b06a574cc5
Invalidate user in cache on user change event (#1604)
Co-authored-by: Wim <wim@42.be>
3 years ago
Wim b56f80b1b8 Add support for mattermost v6 3 years ago
Benau 53cafa9f3d
Convert .tgs with go libraries (and cgo) (telegram) (#1569)
This commit adds support for go/cgo tgs conversion when building with the -tags `cgo`
The default binaries are still "pure" go and uses the old way of converting.

* Move lottie_convert.py conversion code to its own file

* Add optional libtgsconverter

* Update vendor

* Apply suggestions from code review

* Update bridge/helper/libtgsconverter.go

Co-authored-by: Wim <wim@42.be>
3 years ago
powerjungle 86151da271
Remove newline character in bridge multiline messages (mumble) (#1572) 3 years ago
tytan652 1f365c716e
Add support for anonymous connection (xmpp) (#1548) 3 years ago
Brian V 13bbeeaceb
Add space before file upload comment (slack) (#1554) 3 years ago
tytan652 da4dcec14d
Fix XMPP parseNick function (#1547) 3 years ago
Gary Kim a79e632cdc
Add support for separate display name (nctalk) (#1506)
Signed-off-by: Gary Kim <gary@garykim.dev>
3 years ago
Gary Kim 1d50da4b1c
Add support for message deletion (nctalk) (#1492)
* nctalk: add message deletion support

Signed-off-by: Gary Kim <gary@garykim.dev>

* nctalk: seperate out deletion and sending logic

Signed-off-by: Gary Kim <gary@garykim.dev>

* nctalk: update library to v0.2.0

Signed-off-by: Gary Kim <gary@garykim.dev>

* Rename functions to be clearer

Signed-off-by: Gary Kim <gary@garykim.dev>

* Update to go-nc-talk v0.2.1

Signed-off-by: Gary Kim <gary@garykim.dev>

* Update to go-nc-talk v0.2.2

Signed-off-by: Gary Kim <gary@garykim.dev>

* Make deletions easier to debug

Signed-off-by: Gary Kim <gary@garykim.dev>
3 years ago
Gary Kim 766f35554e
Fix content body issue for redactions (matrix) (#1496)
Signed-off-by: Gary Kim <gary@garykim.dev>
3 years ago
Wim c86137449e
Add a MessageClipped option to set your own clipped message. Closes #1359 (#1487) 3 years ago
Gary Kim efec01a92f
Support sending file URLs (nctalk) (#1489)
* nctalk: support sending file URLs

Signed-off-by: Gary Kim <gary@garykim.dev>

* nctalk: reduce nesting

Co-authored-by: Wim <wim@42.be>
Signed-off-by: Gary Kim <gary@garykim.dev>

Co-authored-by: Wim <wim@42.be>
3 years ago
Avinash Reddy 4fcad8e04b
Make DocumentMessage handler use FileName attribute (whatsapp) (#1488)
* [whatsapp] make DocumentMessage handler use FileName attribute.

referenced: https://github.com/Rhymen/go-whatsapp/blob/master/message.go#L582

* fix lint
3 years ago
Avinash Reddy ec6ae343dd
Fix crash on encountering VideoMessage (whatsapp) (#1483)
* [whatsapp] fix crash on encountering VideoMessage

* Update handlers.go

* gofmt
3 years ago
Wim b9fb361959
Rename .jpe files to .jpg Fixes #1463 (whatsapp) (#1485) 3 years ago
Avinash Reddy a189298ab0
Handle document messages (whatsapp) (#1475)
* [Whatsapp] Add DocumentMessage handler

* Fix typo

Thanks @42wim :)

Co-authored-by: Wim <wim@42.be>

Co-authored-by: Wim <wim@42.be>
3 years ago
Jason Robinson 714a2ad730
Add MxId/Token login option for Matrix (#1438)
* Add possibility for using MxId/Token with Matrix

Makes it possible to configure a Matrix bot to use Matrix ID + Access token instead of username/password. This makes it possible to use the bot in environments where password login is disabled (for example SSO environments).

Matrix user ID's are commonly referred to as "MXID's". I thought about (ab)using "Login" here but it felt like a bad idea given it's used as "username" for the password login. None of the other configuration items felt fitting.

Closes #1429

* MxId -> MxID

* Add err != nil to matrix.NewClient
3 years ago
Alexandre GV ac4aee39e3
discord: Add AllowMention to restrict allowed mentions (#1462)
* Add DisablePingEveryoneHere/DisablePingRoles/DisablePingUsers keys to config

* Add basic AllowedMentions behavior to discord webhooks

* Initialize b.AllowedMentions on Discord Bridger init

* Call b.getAllowedMentions on each webhook to allow config hot reloading

* Add AllowedMentions on all Discord webhooks/messages

* Add DisablePingEveryoneHere/DisablePingRoles/DisablePingUsers to matterbridge.toml.sample

* Change 'Disable' for 'Allow' and revert logic in Discord AllowedMentions

* Update Discord AllowedMentions in matterbridge.toml.sample

* Fix typo in DisableWebPagePreview

* Replace 'AllowPingEveryoneHere' with 'AllowPingEveryone'

* Replace 3 AllowPingEveryone/Roles/Users bools with an array

* Fix typo
3 years ago
Wim a0bca42a7a
Update vendor (#1461)
* Update vendored libs

* Fix slack api changes
3 years ago
Paul b293e3fa75
Adding caption to send telegram images. Fixes #1357 (#1358)
* Used tgbotapi caption option to attach caption to photos / documents

* remove "text/template/parse"

* added TGGetParseMode to clean up. Added tg upload function for video, audio and voice

* fixed varname Textout. Changed fileextension logic to avoid chaining regex

* fixed textout varname

* fixed parsemode varname

* gofmt

Co-authored-by: Wim <wim@42.be>
3 years ago
Wim 7466e1d014
Set ogg as default audiomessage when none found (whatsapp). Fixes #1427 (#1431) 3 years ago
James Lu 2a7f28606c
Declare GUILD_MEMBERS privileged intent (discord) (#1428)
Without this declared, it seems that Discord will not send any member update
events after connection, even if the privileged gateway intent is enabled for
the bot in settings. This causes nick tracking to get out of sync when people
change their nicks after the bot connects.

See: https://discord.com/developers/docs/topics/gateway#gateway-intents
3 years ago
Ben Wiederhake 0450482e6e
Make lottie_convert work on platforms without /dev/stdout (#1424)
Fixes #1423.
3 years ago
Wim be3dfb251d
Check rune length instead of bytes (telegram). Fixes #1409 (#1412) 3 years ago
Alexander 763bb95cea
Fix webhooks for channels with special characters (xmpp) (#1405) 3 years ago
Tadeo Kondrak c147ba1da1
Handle Rocket.Chat attachments (#1395) 3 years ago
Qais Patankar 10f044c3dd
Use valid transmitter Log default (discord) (#1402)
* Use valid transmitter Log default (discord)

Using a logger created by `log.NewEntry(nil)` would crash. (matterbridge does not encounter this issue as it updates the Log field manually.)
3 years ago
Alexander ce5140febd
Fix panic when the webhook fails (xmpp) (#1401) 3 years ago
Wim 1624f10773
Pick up all the webhooks (discord) (#1383) 3 years ago
Ivanik 8764be7461
Add vk bridge (#1372)
* Add vk bridge

* Vk bridge attachments

* Vk bridge forwarded messages

* Vk bridge sample config and code cleanup

* Vk bridge add vendor

* Vk bridge message edit

* Vk bridge: fix fetching names of other bots

* Vk bridge: code cleanup

* Vk bridge: fix shadows declaration

* Vk bridge: remove UseFileURL
3 years ago
Wim 5dd15ef8e7
Add an even more debug option (discord) (#1368)
Enable discordgo debugging with debuglevel=1 under the [discord.xxx] section, for even more debugging fun.
3 years ago
Alexander 4ac6366706
Allow the XMPP bridge to use slack compatible webhooks (xmpp) (#1364)
* Add mod_slack_webhook support to the XMPP bridge

* Replace b.webhookURL with b.GetString

* Do not return a message ID on webhook POST

* Add the XMPP webhook to the sample configuration
3 years ago
Paul b039da1eba
Add jpe as valid image filename extension (telegram) (#1360) 3 years ago
Qais Patankar 8fcd0f3b6f
Improve Markdown in transmitter docs (discord) (#1351) 3 years ago
Wim 16fde6935c
Rename .oga audio files to .ogg (telegram) (#1349) 3 years ago
Qais Patankar a9d8ac8bc0
Refactor "msg-parent-not-found" to config.ParentIDNotFound (#1347) 3 years ago
Qais Patankar 1a4717b366
Reject cross-channel message references (discord) (#1345)
Discord message references have been designed in a way for this to
support cross-channel or even cross-guild references in the future.

This will ensure the ParentID is *not* set when the message refers to a
message that was sent in a different channel.
3 years ago