Commit Graph

537 Commits (cba01f0865d2d78d95825eb844419efe6479c225)

Author SHA1 Message Date
Duco van Amstel 8b754017ca Fix race-condition in populateUser() (#767)
Fix the root-cause of #759 by introducing synchronisation points for
individual user fetches.
6 years ago
Wim a27600046e
Fix regression for legacy slack by #766 (#768) 6 years ago
Duco van Amstel fb2667631d Refactor channel and user management (slack) (#766) 6 years ago
Duco van Amstel b638f7037a Force Slack link unfurling (#763) 6 years ago
Duco van Amstel 74699a8262 Split-out Slack user and channel management (#762) 6 years ago
Wim e955a056e2
Trim <p> and </p> tags (matrix). Closes #686 (#753) 6 years ago
Wim 53aa076555
Do not send duplicate messages (rocketchat). Fixes #745 (#752)
For an unknown reason we get duplicate messages (from the same channel)
using the realtime API when we have > 1 channel subscribed on.
Solution for now is caching the message ID in a LRU cache and ignoring
the duplicates.

This should be reviewed when we have actual editing support from the
realtime API
6 years ago
Wim f57370f33a
Add support for URL in messageEntities (telegram). Fixes #735 (#736) 6 years ago
Wim c557d51b6f
Need to specify /topic:mytopic for channel configuration (zulip). (#751)
Breaking change for zulip channel configuration.

For zulip the channel configuration will now need to specify also
the topic with /topic:yourtopic.

Example:
[[gateway.inout]]
account="zulip.streamchat"
channel="general/topic:mytopic"

This fixes the incorrect PR #701 which didn't work with multiple
gateways.
6 years ago
Wim df3fdc26a0
Use whatsapp forks (#750) 6 years ago
Wim af00c34aac
Do not relay any bot messages (discord) (#743) 6 years ago
Wim 26a7e35f27
Add MediaConvertWebPToPNG option (telegram). (#741)
* Add MediaConvertWebPToPNG option (telegram).

When enabled matterbridge will convert .webp files to .png files
before uploading them to the mediaserver of the other bridges.

Fixes #398
6 years ago
Wim b09a73040f
Print errors as string instead of %#v (#738) 6 years ago
Wim 740b5f2602
Keep reconnecting until succeed (zulip) (#737) 6 years ago
Wim 96841c70c7 Fix regression in HTML handling (telegram). Closes #734
* Revert back to blackfriday v1
* Add testing
6 years ago
Wim a775b57134
Do not send topic changes on connect (xmpp). Fixes #732 (#733)
This checks if we get a topic change < 5 seconds after connection.
If that's the case, ignore it.
Also this PR makes the topic change an actual EventTopicChange.
6 years ago
Wim bf21604d42
Make all loggers derive from non-default instance (#728) 6 years ago
Wim 1bb39eba87
Add scripting (tengo) support for every incoming message (#731)
TengoModifyMessage allows you to specify the location of a tengo (https://github.com/d5/tengo/) script.
This script will receive every incoming message and can be used to modify the Username and the Text of that message.
The script will have the following global variables:
to modify: msgUsername and msgText
to read: msgChannel and msgAccount

The script is reloaded on every message, so you can modify the script on the fly.

Example script can be found in https://github.com/42wim/matterbridge/tree/master/gateway/bench.tengo
and https://github.com/42wim/matterbridge/tree/master/contrib/example.tengo

The example below will check if the text contains blah and if so, it'll replace the text and the username of that message.
text := import("text")
if text.re_match("blah",msgText) {
    msgText="replaced by this"
    msgUsername="fakeuser"
}

More information about tengo on: https://github.com/d5/tengo/blob/master/docs/tutorial.md and
https://github.com/d5/tengo/blob/master/docs/stdlib.md
6 years ago
Wim 1f1634ea59 Add extra debug option (slack) 6 years ago
Declan Hoare a7dd033c3b Allow sending discriminator with Discord username (#726) 6 years ago
Krzysiek Madejski 55e79063d6 Add initial WhatsApp support (#711) 6 years ago
Wim d76a04bd0a
Support quits from irc correctly. Fixes #722 (#724) 6 years ago
Wim a8fe54a78d
Allow zulip bridge to specify topic per channel. Closes #701 (#723) 6 years ago
Wim 0bcb0b882f
Support join/leaves from discord. Closes #654 (#721) 6 years ago
Wim aeaea0574f
Detect html nicks in RemoteNickFormat (matrix). Fixes #696 (#719) 6 years ago
Wim 99d71c2177
Send notices on join/parts (matrix). Fixes #712 (#716) 6 years ago
Wim 3e60cfafd3
Send username when uploading video/images (matrix). Fixes #715 (#717) 6 years ago
Wim 3123695869
Upgrade to latest girc version (irc) (#718) 6 years ago
Wim 716751cf76
Refactor and update RocketChat bridge (#707)
* Add support for editing/deleting messages
* Add support for uploading files
* Add support for avatars
* Use the Rocket.Chat.Go.SDK
* Use the rest and streaming api
6 years ago
Wim 6ebd5cbbd8 Refactor and update RocketChat bridge
* Add support for editing/deleting messages
* Add support for uploading files
* Add support for avatars
* Use the Rocket.Chat.Go.SDK
* Use the rest and streaming api
6 years ago
Wim 077b818d82 Add extra debug of SubMessage to empty messages error (slack). #709 6 years ago
Wim 5af1d80055 Do not panic on non-json response from server (zulip) 6 years ago
Wim 40d76b2296 Fix error handling on bad event queue id (zulip). Closes #694 6 years ago
Wim 57f156be83
Hint at thread replies when messages are unthreaded (slack) (#684) 6 years ago
Wim c81c0dd22a Update vendor, move to labstack/echo/v4 Fixes #698 6 years ago
Wim 4ae028fe73 Optimize handling of very large slack teams. Fixes #695
Stop getting users if we reach 2000 users. Slack will rate-limit us
even if we follow their limits.
This means that we now have to lookup every user that says a message
for the first time. This should be less intensive on the API.

This also disables partly fb713ed91b for now.
ChannelMembers will not be filled.
6 years ago
Wim 94812d8648 Handle servers without MOTD (irc). Closes #692 6 years ago
Wim 8548b69e6e Fix possible data race (irc). Closes #693 6 years ago
Wim e3cb665d92 Make discord user token work correctly (discord) #689 6 years ago
Wim fb713ed91b
Add initial support for getting ChannelMember info of all bridges (#678)
* Add initial support for getting ChannelMember info of all bridges.

Adds an EventGetChannelMembers event, which gets send every x time to
all bridges. Bridges should respond on this event with a Message
containing ChannelMembers in the EventGetChannelMembers key in the
Extra field.

handleEventGetChannelMembers will handle this Message and sets the
contained ChannelMembers to the Bridge struct.

* Add ChannelMembers support to the slack bridge
6 years ago
Wim d99eacc2e1 Run go fmt 6 years ago
Zomboy Alfrir 62e55214fc Allow to bridge non-bot Discord users (discord) (#689)
If you prefix a token with `User ` it'll treat is as a user token.

Co-Authored-By: zomboy-alfrir <zomboy@dancodes.com.ar>
6 years ago
David Hill f88c5f6c08 Fix displaying usernames for plain text clients. (matrix) (#685) 6 years ago
Patrick Connolly b33b50987b Add support for mattermost threading (#627) 6 years ago
James Nylen 5193634a52 Use only one webhook if possible (discord) (#681) 6 years ago
Wim 46e2683995 Add file comment to webhook messages (discord). Fixes #358 6 years ago
James Nylen 492722af8b Improve error reporting on failure to join Discord. Fixes #672 (#680) 6 years ago
Wim 04567c765e
Add support for markdown to HTML conversion (matrix). Closes #663 (#670)
This uses our own gomatrix lib with the SendHTML function which
adds HTML to formatted_body in matrix.
golang-commonmark is used to convert markdown into valid HTML.
6 years ago
ValdikSS 7326b9e10d Add various sshchat fixes (#675)
* SSH-Chat: set quiet mode to filter joins/quits
* SSH-Chat: Trim newlines in the end of relayed messages
* SSH-Chat: fix media links
* SSH-Chat: do not relay "Rate limiting is in effect" message
6 years ago
Qais Patankar 8522d8f29c Fix #668 strip lang in code fences sent to Slack (#673) 6 years ago