Commit Graph

872 Commits

Author SHA1 Message Date
NikkyAI
27c02549c8
Replace gorilla with melody for websocket API (#1205) 2020-08-26 22:27:00 +02:00
Wim
d5feda5c8a
Fix error loop (zulip) (#1210)
Fixes #1047
2020-08-25 00:12:13 +02:00
Wim
2f506425c2
Update whatsapp vendor and fix a panic (#1209)
* Fix another whatsapp panic

* Update whatsapp vendor
2020-08-24 23:35:08 +02:00
Wim
56159b9bce
Sleep when ratelimited on joins (matrix). Fixes #1201 (#1206) 2020-08-24 00:12:30 +02:00
Ben Wiederhake
b2af76e7dc
Support Telegram animated stickers (tgs) format (#1173)
This is half a fix for #874

This patch introduces a new config flag:
- MediaConvertTgs

These need to be treated independently from the existing
MediaConvertWebPToPNG flag because Tgs→WebP results in an
*animated* WebP, and the WebP→PNG converter can't handle
animated WebP files yet.

Furthermore, some platforms (like discord) don't even support
animated WebP files, so the user may want to fall back to
static PNGs (not APNGs).

The final reason why this is only half a fix is that this
introduces an external dependency, namely lottie, to be
installed like this:

$ pip3 install lottie cairosvg

This patch works by writing the tgs to a temporary file in /tmp,
calling lottie to convert it (this conversion may take several seconds!),
and then deleting the temporary file.
The temporary file is absolutely necessary, as lottie refuses to
work on non-seekable files.
If anyone comes up with a reasonable use case where /tmp is
unavailable, I can add yet another config option for that, if desired.

Telegram will bail out if the option is configured but lottie isn't found.
2020-08-23 22:34:28 +02:00
Dellle
63a1847cdc
Remove HTML formatting for push messages (#1188) (#1189)
When there is a valid HTML formatting then remove this in the cleartext
field of the matrix client. This leads to nicer push messages on
smartphone apps.

Fix #1188
2020-08-20 22:41:53 +02:00
Wim
4e50fd8649
Use mattermost v5 module (#1192) 2020-08-10 00:29:54 +02:00
Wim
ebd2073144
Handle panic in whatsapp. Fixes #1180 (#1184) 2020-07-30 23:55:31 +02:00
Gary Kim
71a5b72aff
Add Nextcloud Talk support (#1167)
Signed-off-by: Gary Kim <gary@garykim.dev>
2020-07-18 16:08:25 +02:00
z3bra
213bf349c3
Add an option to log into a file rather than stdout (#1168)
Use Logfile option in the `[general]` section
2020-07-18 15:46:19 +02:00
Andrey Groshev
a94fe55886
Fix MarkdownV2 support in Telegram (#1169) 2020-07-12 22:40:22 +02:00
haykam821
9b22f16497
Add websocket to API (#970)
Co-authored-by: Qais Patankar <qaisjp@gmail.com>
2020-07-12 21:13:28 +02:00
Nathanaël
1fee323247
Reload user information when a new contact is detected (whatsapp) (#1160)
Before returning an empty string, we refresh the WhatsApp contacts and if we found the one we wanted, we can return a real name. Fixes #796
2020-06-25 00:35:49 +02:00
Qais Patankar
a41accd033
Add sane RemoteNickFormat default for API (#1157) 2020-06-25 00:25:10 +02:00
James Lu
37f7caf7f3
Skip gIRC built-in rate limiting (irc) (#1164)
By default, gIRC rate limits all outgoing messages. 
Since matterbridge already implements message throttling, this is extra layer of throttling is not necessary.
2020-06-24 23:57:37 +02:00
TheHolyRoger
5847f7758c
Only colour IRC nicks if there is one. (#1161) 2020-06-24 23:48:54 +02:00
Wim
7f7ca697a0
Ignore non-user messages (msteams). Fixes #1141 (#1149)
Ignore these messages for now, also add a extra
debug option for msteams so we can dump the whole
message.
2020-05-24 15:49:24 +02:00
Alexander
900375679b
Prevent re-requesting avatar data (xmpp) (#1117)
Prevent asking the server again and again for a
user's avatar if the server does not respond to
our initial request.
2020-05-24 14:07:36 +02:00
Wim
393f9e998b
Update dependencies / vendor (#1146) 2020-05-24 00:06:21 +02:00
Wim
ba0bfe70a8
Add StripMarkdown option (irc). (#1145)
Enable `StripMarkdown` to strip markdown for irc.
2020-05-23 21:46:15 +02:00
Wim
3c4a3e3f75
Implement xep-0245 (xmpp). Closes #1137 (#1144) 2020-05-23 20:51:04 +02:00
Wim
274fb09ed4
Fix forward from hidden users (telegram). Closes #1131 (#1143)
Use ForwardDate to check if a message is forwarded.
If we have a nil ForwardedFrom then make this an unknown user.
2020-05-23 19:15:26 +02:00
Wim
d44598a900
Add an option to disable sending HTML to matrix. Fixes #1022 (#1135) 2020-05-14 00:37:41 +02:00
Wim
c9cfa59f54
Do not use webhooks when token is configured (slack) (fixes #1123) (#1134) 2020-05-14 00:27:34 +02:00
Tiago Epifânio
7062234331
Avoid creating invalid url when the user doesn't have an avatar (matrix) (#1130) 2020-05-11 00:21:56 +02:00
Qais Patankar
9754569525
Fix webhook EventUserAction messages being skipped (discord) (#1133)
Fixes #1132
2020-05-11 00:20:35 +02:00
Qais Patankar
52a071e34d
Fix #1049: missing space before embeds (discord) (#1124) 2020-05-07 00:19:48 +02:00
Qais Patankar
2d8f749e36
Fix #1120: replaceAction "_" crash (discord) (#1121) 2020-04-25 14:22:22 +02:00
Wim
eaf92fca4d
Add an ID cache (discord). Fixes #1106 (#1111)
When a webhook "edits" a message, it does this by deleting the message
and creating a new one with the new content.

On creation of this new message, we'll get another ID then already is
know by the gateway in its id cache. So we add it in our own cache and
replace it whenever we want to edit/delete it again.
2020-04-21 23:35:46 +02:00
Wim
d99c54343a
Remove panics and retry polling on failure (msteams). Fixes #1104 (#1105) 2020-04-21 19:29:24 +02:00
Wim
e564c555d7
Clip too long messages on 3000 length (slack). Fixes #1081 (#1102) 2020-04-19 17:00:11 +02:00
Wim
f7ec9af9e8
Add extra space before colon in attachments (irc). Fixes #1089 (#1101) 2020-04-19 16:45:53 +02:00
Wim
4d93a774ce
Ignore non-critical errors (whatsapp). Fixes #1094 (#1100) 2020-04-19 13:45:35 +02:00
Wim
9190365289
Add JoinDelay option (irc). Fixes #1084 (#1098) 2020-04-19 00:46:35 +02:00
Wim
57794b3b9f
Prevent image/message looping (slack). Fixes #1088 (#1096)
Also check for our matterbridge ID in Blocks set in SubMessages.
2020-04-18 22:30:49 +02:00
ldruschk
8e6ddadba2
Relay Joins/Topic changes in RocketChat bridge (#1085)
This pull request properly sets the events EventJoinLeave and EventTopicChange for messages from the RocketChat bridge and drops messages which are neither one of those events nor plain messages.
2020-04-18 22:00:35 +02:00
Alexander
7183095a28
Implement User Avatar spoofing of XMPP users (#1090)
* Implement User Avatar spoofing of XMPP users
2020-04-16 22:16:25 +02:00
Wim
8950575bfb
Update Rhymen/go-whatsapp vendor and whatsapp version (#1078) 2020-04-09 22:30:08 +02:00
Wim
8d08e348a9
Reset start timestamp on reconnect (whatsapp). Fixes #1059 (#1064) 2020-03-31 23:26:53 +02:00
Wim
29f658fd3c Use DebugWriter after upstream changes (xmpp) 2020-03-29 15:03:24 +02:00
Wim
0df2539641
Use upstream yaegashi/msgraph.go/msauth (msteams) (#1067) 2020-03-28 23:44:49 +01:00
Wim
1aa662f763
Update client version whatsapp. Fixes #1061 (#1062)
See https://github.com/Rhymen/go-whatsapp/issues/305
2020-03-28 00:18:03 +01:00
Qais Patankar
98033b1ba7
Don't transmit typing events from ourselves (slack/discord) (#1056) 2020-03-22 18:39:11 +01:00
Qais Patankar
af0acf0dae
Strip extra info from emotes (discord) (#1052) 2020-03-22 14:16:31 +01:00
Qais Patankar
802c80f40c Update vendor yaegashi/msgraph.go to v0.1.2 (1) 2020-03-22 00:02:48 +01:00
Wim
281016a501
Fix duplicate separator on empty description/url (discord). Fixes #1008 (#1035)
Make this work for all possible cases.
Add tests
2020-03-21 21:27:17 +01:00
Qais Patankar
d4acdf2f89
Use blocks not attachments (slack) (#1048)
This removes the extra space below messages, as shown in
https://user-images.githubusercontent.com/923242/77235190-a3359980-6bab-11ea-8b7b-697d730ae5c1.png
2020-03-21 21:03:12 +01:00
Qais Patankar
0951e75c85
Fix #1039: messages sent to Slack being synced back (#1046)
This is a regression from https://github.com/42wim/matterbridge/pull/581#issuecomment-562937576

Behaves the same as 95190f11bf
2020-03-21 20:12:30 +01:00
Jakub
6b017b226a
Support JSON and YAML config formats (#1045)
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-03-18 23:20:29 +01:00
Qais Patankar
9e3bd7398c
Fix #1027: warning when handling inbound webhooks (discord) (#1044) 2020-03-18 23:12:48 +01:00
Qais Patankar
79f764c7a8 Refactor webhook permission checks 2020-03-18 23:10:47 +01:00
Qais Patankar
b5dc4353fb Fix #1040: spotty webhook permission verification 2020-03-18 23:10:47 +01:00
Qais Patankar
2fbac73c29
Ignore ConnectingEvent (slack) (#1041) 2020-03-18 23:03:20 +01:00
Wim
9785edd263
Remove replace directives and use own fork to make go get work again (#1028)
See https://github.com/golang/go/issues/30354
go get doesn't honor the go.mod replace options.
2020-03-08 17:08:18 +01:00
Wim
3f06a40bd5 Support code snippets from msteams 2020-03-01 22:19:33 +01:00
Wim
68f43985ad Add scopes again 2020-03-01 22:19:33 +01:00
Wim
915ca8f817 Make linter happy and cleanup (msteams) 2020-03-01 22:19:33 +01:00
Wim
a65a81610b Support threading from other bridges to msteams 2020-03-01 22:19:33 +01:00
Wim
8eb6ed5639 Support receiving attachments from msteams 2020-03-01 22:19:33 +01:00
Wim
795a8705c3 Add initial Microsoft Teams support
Documentation on https://github.com/42wim/matterbridge/wiki/MS-Teams-setup
2020-03-01 22:19:33 +01:00
Wim
250b3bb579
Use upstream slack-go/slack again (#1018) 2020-03-01 20:59:19 +01:00
Wim
e343db6f72
Make avatars download work with mediaserverdownload (telegram). Fixes #920 (#1012) 2020-02-15 18:31:40 +01:00
Wim
54ed6320c2 Add support for avatars from matrix. #984 (#1007) 2020-02-10 00:06:54 +01:00
Wim
1985873494 Implement basic reconnect (whatsapp). Fixes #987 (#1003) 2020-02-09 22:11:46 +01:00
Qais Patankar
8ae5917659
Be less lossy when throttling IRC messages (#1004)
Note that msg.Text and chucking it through a chan is OK: https://play.golang.org/p/MTfT3YSsgPX
2020-02-09 22:10:18 +01:00
Qais Patankar
c91bfd08d8 Add ability to procure avatars from the destination bridge (#1000)
* remote_avatar: add UseLocalAvatar

* remote_avatar: make sure msg.Protocol is always set correctly

* remote_avatars: support msg.Account

* remote_avatar: add to matterbridge.toml.sample

* remote_avatar: clarify something
2020-02-09 22:07:26 +01:00
Wim
c01c8edeb8 Fix go-keybase-chat-bot api changes 2020-02-08 18:33:05 +01:00
Qais Patankar
1420f68050 Check only bridged channels for PermManageWebhooks (discord) (#1001)
* Check only bridged channels for PermManageWebhooks

* add note
2020-02-08 15:13:23 +01:00
Martijn Braam
c0be3e585a
Enable intra-word emphasis supression in markdown (#999)
This fixes plain links sent to Matrix being broken if they contain
underscores. Fixes issue #997
2020-02-04 13:22:05 +01:00
Wim
1bf46b7711
Fix duplicated messages (sshchat). Fixes #950 (#996) 2020-02-02 22:08:37 +01:00
Wim
b85bae31d9
Show file comment in webhook if normal message is empty (discord). Fixes #962 (#995) 2020-02-02 21:14:54 +01:00
Wim
f8ad877601
Add DisableWebPagePreview option (telegram). Closes #980 (#994) 2020-02-02 18:53:04 +01:00
Wim
585d1556c1
Disable smartypants in markdown parser. Fixes #989, #983 (#993) 2020-02-02 18:35:43 +01:00
Wim
7486555875
Fail with message instead of panic. #988 (#991) 2020-02-01 15:23:50 +01:00
Humorhenker
fc30b1bacc
Add QuoteLengthLimit option (telegram) fixes #963 (#985)
* QuoteLengthLimit option added to limit max. quoted message length if QuoteLengthLimit = 0 the whole message will be quoted
2020-01-30 00:02:33 +01:00
Wim
4c44515f9d
Fix channel ID problem with multiple gateways (discord). Fixes #953 (#977) 2020-01-09 23:54:04 +01:00
Guillaume Lazzara
c9d5f4c898 Add support for WhatsApp media (jpeg/png/gif) bridging (#974)
* Whatsapp image bridging

* Prevent double message in telegram when media with caption received

Co-authored-by: imShara <shara@protonmail.com>
2020-01-09 18:14:01 +01:00
c0ncord2
810c150781 move stripCustomoji logic to default Tengo script (#973)
*  move stripCustomoji logic to default Tengo script 

Removing the image ID from the message (without any possibility of recovering it later) is a loss of valuable data that prevents users from giving support to custom emoji via Tengo scripts.

* bugfix - do send colors to other irc bridges

"if we're not sending to an irc bridge we strip the IRC colors"

Co-authored-by: c0ncord <59654954+c0ncord@users.noreply.github.com>
2020-01-09 18:02:53 +01:00
Wim
1f830963f6
Return when we have only WebhookURL (mattermost). Fixes #954 (#960) 2019-12-15 23:49:17 +01:00
Benjamin
0917dc8766 Update markdown parsing library to github.com/gomarkdown/markdown (#944) 2019-11-17 21:18:01 +01:00
Gonçalo Ribeiro
c394de0c88 Add support for receiving attachments (keybase) (#923) 2019-11-01 22:29:52 +01:00
Wim
0bc159341d
Update vendor (#932)
* Update vendor

* Fix godiscord api change
2019-10-27 01:45:57 +02:00
Wim
45bf1fd63a
Convert slack bold/strike to correct markdown (slack). Fixes #918 (#930) 2019-10-27 01:10:59 +02:00
Wim
ff0de85817
Remove obsolete file upload links (discord). Fixes #908 (#931)
Since v1.16.0 we now can upload files via webhook.
Old way of showing files with webhook only setup can be removed.
2019-10-27 01:10:43 +02:00
Wim
727fa9f929
Add support for uploading application/x and audio/x (matrix). Fixes #925 (#929) 2019-10-27 00:06:44 +02:00
Wim
00967a98ac
Fix panic on WebhookURL only setting (mattermost). Closes #916 (#917) 2019-10-04 01:01:24 +02:00
Qais Patankar
1d708ab351 Suppress unhandled HelloEvent message (slack) (#913) 2019-10-04 00:19:50 +02:00
Qais Patankar
ba6759010b Add UserTypingSupport (discord) (#914)
* Add Discord to UserTypingSupport

* discord: start typing in a channel on EventUserTyping receive

* discord: emit EventUserTyping to gateway
2019-10-04 00:18:56 +02:00
Wim
0abf4d5d5d
Specify correct GuildID on unknown user query (discord). Fixes #879 (#894) 2019-09-15 20:25:42 +02:00
Michal Suchánek
9b320cd43f Add token support (RocketChat) (#892)
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
2019-09-13 23:41:02 +02:00
Wim
28783a4146
Do configuration validation on start-up. Fixes #888 (#889)
Fail if:
* we don't have any gateways configured
* we have gateways configured but with non-existing bridge configuration
* we have gateways configured without any configuration
2019-09-09 23:48:00 +02:00
Wim
a3bee01e0a
Update dependencies (#886) 2019-09-07 22:46:58 +02:00
Wim
3562d4220c
Bail if incorrect Jid (xmpp). Fixes #869 (#883) 2019-09-07 21:36:25 +02:00
Wim
f66d5f1e58 Add extra debug info (discord) 2019-09-05 22:39:43 +02:00
MOZGIII
cec086994e Add support for sending files via webhook (discord) (#872) 2019-08-29 00:13:10 +02:00
cori hudson
921f2dfcdf Add initial Keybase Chat support (#877)
* initial work on native keybase bridging

* Hopefully make a functional keybase bridge

* add keybase to bridgemap

* send to right channel, try to figure out received msgs

* add account and userid

* i am a Dam Fool

* Fix formatting for messages, handle /me

* update vendors, ran golint and goimports

* move handlers to handlers.go, clean up unused config options

* add sample config, fix inconsistent remote nick handling

* Update readme with keybase links

* Resolve fixmie errors

* Error -> Errorf

* fix linting errors in go.mod and go.sum

* explicitly join channels, ignore messages from non-specified channels

* check that team names match before bridging message
2019-08-26 21:00:31 +02:00
Wim
79a006c8de
Fix regression (discord). Closes #864 (#866) 2019-07-29 23:37:38 +02:00
Wim
7d2e440c83
Add support for discord category channels (discord) (#863)
This adds support for the discord category option that can be used
to group channels in. This means we can have multiple channels with
the same name.

We add the option to specify a category in the channel option of a
discord account under [[gateway]]

Besides channel="channel" or channel="ID:channelID", now also
channel="category/channel" can be specified.

This change remains backwards compatible with people that haven't
specified the category and incorporates the fix in #861
2019-07-15 21:56:35 +02:00
Qais Patankar
5551f9d56f Fix discord channel & category name clash. #860 (#861) 2019-07-14 19:53:09 +02:00
Wim
1fb91c6316
Fix panic by checking slice bounds in handleEntities (telegram). Fixes #857 (#858)
Besides the bound checking, this now also use utf16 as suggested by
https://github.com/go-telegram-bot-api/telegram-bot-api/issues/231
2019-07-08 22:19:45 +02:00
Qais Patankar
e60949ff3f Support webhook message deletions (discord) (#853)
* Support webhook message deletions (discord)

Messages sent via webhook can now be deleted. It seems it can do this
without any special permissions.

This copies discordgo.WebhookExecute and makes it support the returning
of discordgo.Message.

A pull request has been sent upstream, so we should use that if
@bwmariin accepts the pull request:

https://github.com/bwmarrin/discordgo/pull/663

Changes in behaviour (webhook mode only):
- Previously messages *edited* on other platforms would just be
retransmitted as a brand new message to Discord.
- Message *edits* will now be ignored.
- Debug: message edits will now print out a "permission error".

In the future it may be good to send an "message edited" react to those
webhook messages, so at least people know that the message was edited on
other platforms. (Even though it can't actually show the new message.)

Alternatively, message edits could just send a brand new message with a
link back to the old one. This is a little ugly but it would ensure that
Discord users are able to see the edited message. These "message edit
notifications" would be sent from the bot user (not from a webhook), so
we could edit the "edit notification" if subsequent edits to the
original message are made.
2019-07-08 22:18:37 +02:00
Wim
cf3cddafab Keep connection state. Fixes #856
Actually check if we're connected when trying to Send() a message.
Messages now will get dropped when not connected.

TODO: Ideally this should be in a ring buffer to retransmit when the
connection comes back up.
2019-06-30 18:34:41 +02:00
Joona Hoikkala
80b4cec87a Add an option to skip the Mattermost server version check (#849)
Adds SkipVersionCheck bool option for mattermost
2019-06-16 16:23:50 +02:00
Qais Patankar
76c7b69e4e Support bulk deletions (discord) 2019-06-16 16:07:48 +02:00
Nick
7a3bb0e55c Verify TLS against JID domain, not the host. (xmpp) (#834)
Partially fixes #820.

A full fix requires patching https://github.com/matterbridge/go-xmpp to use DNS SRV records.
2019-06-14 01:10:43 +02:00
Wim
6e8f535e8b Fix logic (xmpp) 2019-06-14 00:44:31 +02:00
Wim
5619a75b05
Fix regression in autojoining with legacy tokens (slack). Fixes #651 (#848) 2019-06-14 00:42:55 +02:00
Wim
53dfb78215
Allow messages with timestamp (xmpp). Fixes #835 (#847) 2019-06-14 00:24:42 +02:00
Wim
8e97cbab1e Fix noisy whatsapp error logging 2019-06-14 00:02:32 +02:00
Wim
ce7b749fd5 Update github.com/Rhymen/go-whatsapp vendor. Fixes #843 2019-06-14 00:02:32 +02:00
Wim
6617bd6609 Revert xmpp to orig behaviour. Closes #844 2019-06-13 23:35:04 +02:00
Wim
e610fb3201 Make config parse errors readable 2019-06-02 09:35:20 +01:00
Wim
40f1d35415 Fix go mod issue by removing whatsapp-ext 2019-06-02 09:35:20 +01:00
Duco van Amstel
3724cc3a15 Clean-up XMPP handling code (#831) 2019-05-30 12:31:54 +02:00
Wim
3418e8c9af
Use upstream whatsapp again (#809) 2019-05-30 12:20:56 +02:00
Wim
1829dc3d9f Allow messages from other bots (discord). Fixes #816 2019-05-01 18:10:31 +02:00
Wim
65781b9316
Disable user lookups on delete messages (slack) (#812) 2019-04-23 23:29:15 +02:00
Duco van Amstel
9be0be0316 Add lacking clean-up in Slack synchronisation (#811) 2019-04-23 23:08:34 +02:00
Wim
fed77cccf3 Handle unthreaded messages (mattermost). Fixes #803 2019-04-19 23:31:45 +02:00
Wim
9b520dfb78 Fix panic on nil message.Post (mattermost). Fixes #804 2019-04-19 23:08:41 +02:00
Wim
2d277a15f5
Add scripting (tengo) support for every outgoing message (#806)
Adds a new key OutMessage under [tengo] table, which specifies the location of the script that
will be invoked on each message being sent to a bridge and can be used to modify the Username
and the Text of that message.

The script will have the following global variables:
read-only:
inAccount, inProtocol, inChannel, inGateway
outAccount, outProtocol, outChannel, outGateway

read-write:
msgText, msgUsername

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

The default script in https://github.com/42wim/matterbridge/tree/master/internal/tengo/outmessage.tengo
is compiled in and will be executed if no script is specified.
2019-04-19 18:27:31 +02:00
chotaire
6b47e29583 Add verbose IRC joins/parts (ident@host) (#805)
New configuration setting: VerboseJoinPart (default is false)
2019-04-18 23:56:05 +02:00
Wim
380c38674c Fix deadlock on reconnect (irc). Closes #757 2019-04-15 23:28:47 +02:00
Wim
5677c912a8
Add useraction support (rocketchat). Closes #772 (#794) 2019-04-08 23:30:22 +02:00
Wim
7a24de15e4
Add tengo support to RemoteNickFormat (#793)
This commit add support for using the result of a tengo script in RemoteNickFormat using {TENGO}
Also adds a new toml table [tengo] with key RemoteNickFormat and value location of the script.
This also moves the TengoModifyMessage from [general] to Message in [tengo]

Documentation:

RemoteNickFormat allows you to specify the location of a tengo (https://github.com/d5/tengo/) script.
The script will have the following global variables:
to modify: result
to read: channel, bridge, gateway, protocol, nick

The result will be set in {TENGO} in the RemoteNickFormat key of every bridge where {TENGO} is specified
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/contrib/remotenickformat.tengo

[tengo]
RemoteNickFormat="remotenickformat.tengo"
2019-04-08 20:58:21 +02:00
Wim
8a875f292e Revert fix for #722. Closes #781
Revert "Fix typo"

This reverts commit dffd67eb31.

Revert "Handle quit message relay better on gateways with one channel on the irc bridge #722"

This reverts commit 240559581a.

Revert "Support quits from irc correctly. Fixes #722 (#724)"

This reverts commit d76a04bd0a.
2019-04-06 23:12:48 +02:00
Wim
60a85621ea Return when not connected and drop a message (irc). Fixes #786 2019-04-06 22:34:41 +02:00
Wim
cdf33e5748 Use default nick if none specified (irc). Fixes #785 2019-04-05 00:17:46 +02:00
Wim
01d0a9f412 Handle nil message (telegram). Fixes #777 2019-04-05 00:04:08 +02:00
Wim
8cc2d3b4fe Revert "Bail if any vars are nil, not if all (telegram) (#778)"
This reverts commit efd2c99862.
2019-04-05 00:02:26 +02:00
Wim
64b57f2da3
Ignore message_replied and hidden messages (slack). Fixes #709 (#779) 2019-03-27 22:54:18 +01:00
David Hill
efd2c99862 Bail if any vars are nil, not if all (telegram) (#778) 2019-03-27 21:00:57 +01:00
Wim
16763b715a
Look up #channel too (rocketchat). Fix #773 (#775) 2019-03-24 20:15:15 +01:00
David Hill
97f9d4be67 Fix double unlock (slack) (#771) 2019-03-21 17:30:28 +01:00
Wim
77516c97db
Allow the # in rocketchat channels (backward compatible) (#769) 2019-03-20 23:19:27 +01:00
Duco van Amstel
8b754017ca Fix race-condition in populateUser() (#767)
Fix the root-cause of #759 by introducing synchronisation points for
individual user fetches.
2019-03-20 22:54:31 +01:00
Wim
a27600046e
Fix regression for legacy slack by #766 (#768) 2019-03-20 22:52:23 +01:00
Duco van Amstel
fb2667631d Refactor channel and user management (slack) (#766) 2019-03-15 21:23:09 +01:00
Duco van Amstel
b638f7037a Force Slack link unfurling (#763) 2019-03-12 22:56:43 +01:00
Duco van Amstel
74699a8262 Split-out Slack user and channel management (#762) 2019-03-12 22:52:36 +01:00
Wim
e955a056e2
Trim <p> and </p> tags (matrix). Closes #686 (#753) 2019-03-03 00:29:29 +01:00
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
2019-03-02 22:58:14 +01:00
Wim
f57370f33a
Add support for URL in messageEntities (telegram). Fixes #735 (#736) 2019-03-02 22:38:44 +01:00
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.
2019-03-02 20:31:38 +01:00
Wim
df3fdc26a0
Use whatsapp forks (#750) 2019-03-02 13:04:28 +01:00
Wim
af00c34aac
Do not relay any bot messages (discord) (#743) 2019-02-28 12:59:52 +01:00
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
2019-02-27 00:41:50 +01:00
Wim
b09a73040f
Print errors as string instead of %#v (#738) 2019-02-26 17:21:23 +01:00
Wim
740b5f2602
Keep reconnecting until succeed (zulip) (#737) 2019-02-26 17:08:20 +01:00
Wim
96841c70c7 Fix regression in HTML handling (telegram). Closes #734
* Revert back to blackfriday v1
* Add testing
2019-02-24 15:13:56 +01:00
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.
2019-02-23 23:03:21 +01:00
Wim
bf21604d42
Make all loggers derive from non-default instance (#728) 2019-02-23 22:51:27 +01:00
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
2019-02-23 16:39:44 +01:00
Wim
1f1634ea59 Add extra debug option (slack) 2019-02-22 19:36:50 +01:00
Declan Hoare
a7dd033c3b Allow sending discriminator with Discord username (#726) 2019-02-22 14:28:27 +01:00
Krzysiek Madejski
55e79063d6 Add initial WhatsApp support (#711) 2019-02-21 20:28:13 +01:00
Wim
d76a04bd0a
Support quits from irc correctly. Fixes #722 (#724) 2019-02-17 22:43:04 +01:00
Wim
a8fe54a78d
Allow zulip bridge to specify topic per channel. Closes #701 (#723) 2019-02-17 21:50:05 +01:00
Wim
0bcb0b882f
Support join/leaves from discord. Closes #654 (#721) 2019-02-17 21:49:45 +01:00
Wim
aeaea0574f
Detect html nicks in RemoteNickFormat (matrix). Fixes #696 (#719) 2019-02-17 21:48:32 +01:00
Wim
99d71c2177
Send notices on join/parts (matrix). Fixes #712 (#716) 2019-02-16 18:36:09 +01:00
Wim
3e60cfafd3
Send username when uploading video/images (matrix). Fixes #715 (#717) 2019-02-16 18:35:36 +01:00
Wim
3123695869
Upgrade to latest girc version (irc) (#718) 2019-02-16 17:24:04 +01:00
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
2019-02-15 18:20:32 +01:00
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
2019-02-15 18:19:34 +01:00
Wim
077b818d82 Add extra debug of SubMessage to empty messages error (slack). #709 2019-02-15 18:05:10 +01:00
Wim
5af1d80055 Do not panic on non-json response from server (zulip) 2019-02-13 00:29:34 +01:00
Wim
40d76b2296 Fix error handling on bad event queue id (zulip). Closes #694 2019-02-11 01:34:50 +01:00
Wim
57f156be83
Hint at thread replies when messages are unthreaded (slack) (#684) 2019-02-10 17:23:50 +01:00
Wim
c81c0dd22a Update vendor, move to labstack/echo/v4 Fixes #698 2019-01-31 17:06:36 +01:00
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.
2019-01-30 23:28:37 +01:00
Wim
94812d8648 Handle servers without MOTD (irc). Closes #692 2019-01-24 21:58:27 +01:00
Wim
8548b69e6e Fix possible data race (irc). Closes #693 2019-01-24 21:51:52 +01:00
Wim
e3cb665d92 Make discord user token work correctly (discord) #689 2019-01-19 20:39:58 +01:00
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
2019-01-18 18:35:31 +01:00
Wim
d99eacc2e1 Run go fmt 2019-01-14 19:41:32 +01:00
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>
2019-01-14 19:27:49 +01:00
David Hill
f88c5f6c08 Fix displaying usernames for plain text clients. (matrix) (#685) 2019-01-09 23:15:26 +01:00
Patrick Connolly
b33b50987b Add support for mattermost threading (#627) 2019-01-09 21:50:03 +01:00
James Nylen
5193634a52 Use only one webhook if possible (discord) (#681) 2019-01-09 21:28:47 +01:00
Wim
46e2683995 Add file comment to webhook messages (discord). Fixes #358 2019-01-07 22:16:00 +01:00
James Nylen
492722af8b Improve error reporting on failure to join Discord. Fixes #672 (#680) 2019-01-07 21:39:53 +01:00
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.
2019-01-06 22:25:19 +01:00
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
2019-01-05 15:42:36 +01:00
Qais Patankar
8522d8f29c Fix #668 strip lang in code fences sent to Slack (#673) 2019-01-04 20:32:58 +01:00
Wim
bab385c342 Remove unused key (config) 2019-01-04 16:37:45 +01:00
Wim
c585d00f16 Ignore LatencyReport event (slack) 2019-01-02 23:55:00 +01:00
Duco van Amstel
da8e415ae1 Use logrus imports instead of log (#662) 2018-12-26 15:16:09 +01:00
Duco van Amstel
1b834c6858 Fix sshchat connection logic (#661) 2018-12-26 15:09:36 +01:00
Jerry Heiselman
d82726cd1b Try downloading files again if slack is too slow (slack). Closes #655 (#656) 2018-12-19 22:01:05 +01:00
Wim
53c86702a3
Add wait option for populateUsers/Channels (slack) Fixes #579 (#653)
When setting wait to true, we wait until the populating isn't in progress anymore.
This is used on startup connections where we really need the initial information
which could take a long time on big servers.
2018-12-15 23:11:03 +01:00
David Hill
192fe89789 Populate user on channel join (slack) (#644) 2018-12-15 22:57:54 +01:00
Wim
959ca3cef3 Fix bot (legacy token) messages not being send. Closes #571 2018-12-13 20:49:14 +01:00
Wim
bfa9a83d31
Refactor telegram (#649)
* Decrease complexity in Send() (makes codeclimate happy)
2018-12-12 23:50:08 +01:00
Wim
2f7b4d7f68
Refactor sshchat bridge (#650)
* Decrease complexity in Send()
* Add handleUploadFile() function
2018-12-12 23:47:07 +01:00
Wim
d887855e16 Add bot debug info (slack) 2018-12-12 00:27:55 +01:00
Duco van Amstel
a2754f15fc Enable errcheck linter (#646) 2018-12-08 17:04:10 +01:00
Wim
f9fb33e696
Refactor steam bridge (#630)
* split up in different files
* decrease complexity
2018-12-07 23:48:24 +01:00
Wim
f72d5de2d7 Disable some unparam checks (discord) 2018-12-07 23:48:00 +01:00
Duco van Amstel
0365c0786a Split Discord bridge in multiple files (#632) 2018-12-07 23:36:01 +01:00
Duco van Amstel
8a7efce941 Move golangci-lint configuration to file (#635) 2018-12-05 11:34:34 +01:00
Wim
4265d43096
Refactor handleUploadFile (matrix) (#629) 2018-12-03 16:51:11 +01:00
Wim
27f5a1a685 Fix multiple channel join regression. Closes #639 2018-12-03 16:37:12 +01:00
Wim
859ebad55d
Make slack-legacy change less restrictive (#626) 2018-12-02 23:09:21 +01:00
Patrick Connolly
e538a4d304 Update nlopes/slack to 4.1-dev (#595) 2018-12-01 19:55:35 +01:00
Wim
f94c2b40a3
Refactor mattermost bridge (#622)
* Split up in different files
* Decrease complexity
* Fix linting issues
2018-12-01 00:49:08 +01:00
Wim
7923cfe8f8 Fix telegram crash #620 2018-11-29 23:03:50 +01:00
Wim
df02f51c56 Fix regression on using server ID (discord). #619 #617 2018-11-28 23:50:40 +01:00
Patrick Connolly
fc5e3a6728 Create getChannelsByX functions to make codeclimate happy (slack) (#610) 2018-11-28 11:04:26 +01:00
Wim
57fbd3c723
Refactor irc handlers. Fix linting (#611) 2018-11-28 10:58:56 +01:00
Wim
25cd1e2cc1
Refactor telegram handlers. Fix linting (#609)
* Refactor telegram handlers. Fix linting
2018-11-28 10:57:59 +01:00
Patrick Connolly
f5659d455d Sync channel topics between Slack bridges (#585)
Added logic to allow for configurable synchronisation of topics and purposes of channels between Slack bridges.
2018-11-26 09:47:04 +00:00
Duco van Amstel
09875fe160 Update direct dependencies where possible 2018-11-25 21:21:04 +01:00
Wim
f716b8fc0f
Merge pull request #606 from 42wim/fix-590 2018-11-25 20:40:22 +01:00
Wim
9f66f93641
Add option to send RAW commands after connection (irc). Fixes #490 (#604) 2018-11-25 19:32:16 +01:00
Wim
f00d4d7d3f Make sure threaded files stay in thread (slack). Fixes #590 2018-11-25 19:27:45 +01:00
Wim
0929535b2e Do not post empty messages (slack). Fixes #574 2018-11-25 19:26:47 +01:00
Wim
8869e253ca Handle deleted/edited thread starting messages (slack). Fixes #600 (#605) 2018-11-25 10:08:57 +00:00
Wim
f4d4dc91b1
Add option to ignore failing bridge on start. Fixes #455 (#603) 2018-11-25 10:35:35 +01:00
Wim
c6fd65d1d7 Limit discord username via webhook to 32 chars 2018-11-23 20:52:31 +01:00
Wim
0795906533 Rework connection logic (irc)
If IRC connection fails on first connect, bail out.
Wait until after nickserv auth until joining channels (also after reconnects)
Don't do a separate irc timeout, some connections take a while #503
2018-11-23 00:26:50 +01:00
Wim
a2b45bc799 Fix Nickserv logic (irc) #602 2018-11-22 22:46:38 +01:00
Wim
ae32bae791
Add protocol to msg.ID in cache (#596) 2018-11-19 21:28:23 +01:00
Wim
32f57b7c26 Add links to slack bot and legacy config in error message (slack) 2018-11-18 17:14:47 +01:00
Duco van Amstel
ce21ba1545 Fix golint linter issues and enable it in CI (#593) 2018-11-15 20:43:43 +01:00
Duco van Amstel
c89085bf44 Fix and enable goimports linter (#591) 2018-11-15 19:24:22 +01:00
Patrick Connolly
4254ed3c63 Fix regression in skip logic (slack). (#592) 2018-11-15 19:23:46 +01:00
Duco van Amstel
85564a35fd Fix IRC line splitting. Closes #584 (#587) 2018-11-14 22:43:52 +01:00
Patrick Connolly
09713d40ba Fix file caching issue (slack). #572 (#575) 2018-11-14 21:00:21 +01:00
Duco van Amstel
16d5aeac7c Make config.Config more unit-test friendly (#586) 2018-11-13 23:30:56 +01:00
Duco van Amstel
e19ba5a06a Add new Slack connection and forked legacy Slack bridge (#582) 2018-11-13 20:51:19 +01:00
Wim
f7a5077d5d Fix goconst linter failure 2018-11-13 20:40:15 +01:00
Wim
f8dc24bc09 Switch back go upstream bwmarrin/discordgo
Commit ffa9956c9b got merged in.
2018-11-13 00:02:07 +01:00
Duco van Amstel
e9419f10d3 Restore file comments coming from Slack (#583) 2018-11-12 15:58:00 +01:00
Wim
d2ae3ebf9e Disable Connect(), JoinChannel(), Send() for mattermost.plugin 2018-11-11 22:44:10 +01:00
Duco van Amstel
2f042ad915 Add more rate-limit handling (slack) (#581) 2018-11-10 22:09:41 +01:00
Wim
78401214b0 Make scopelint happy 2018-11-08 22:29:34 +01:00
Wim
b2a07aba3a Make goconst linter happy 2018-11-08 22:20:03 +01:00
Wim
1e0bb3da95 Make gocritic linter happier 2018-11-08 22:01:29 +01:00
Wim
59994da176 Act only on UserTypingEvents when enabled 2018-11-08 21:52:10 +01:00
Patrick Connolly
3d281b3316 Add ability to show when user is typing across Slack bridges (#559) 2018-11-08 20:45:40 +01:00
Duco van Amstel
ea86849a58 Fix Slack edit usernames (#570) 2018-11-08 20:07:21 +01:00
Wim
399789811e Make gocritic linter happy 2018-11-08 00:46:34 +01:00
Wim
8d117cb0a4 Make structcheck linter happy 2018-11-08 00:38:33 +01:00
Wim
588b8e0303 Make interfacer linter happy 2018-11-08 00:35:30 +01:00
Wim
1794922263 Make unparam linter happy 2018-11-08 00:29:30 +01:00
Patrick Connolly
f2703979a4 Clean up config loading. (#561) 2018-11-07 22:32:12 +01:00
Duco van Amstel
d2a1dc792f Refactor and clean-up handlers. (slack) (#533) 2018-11-07 21:35:59 +01:00
David Hill
0e2522279e Clean up various stuff (#508)
* various cleanups
2018-11-07 20:36:50 +01:00
Duco van Amstel
a1bf37e457 Do not join Slack channel without API access (slack) (#563) 2018-11-07 17:25:00 +01:00