Commit Graph

612 Commits

Author SHA1 Message Date
Wim
6617bd6609 Revert xmpp to orig behaviour. Closes 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 () 2019-05-30 12:31:54 +02:00
Wim
3418e8c9af
Use upstream whatsapp again () 2019-05-30 12:20:56 +02:00
Wim
1829dc3d9f Allow messages from other bots (discord). Fixes 2019-05-01 18:10:31 +02:00
Wim
65781b9316
Disable user lookups on delete messages (slack) () 2019-04-23 23:29:15 +02:00
Duco van Amstel
9be0be0316 Add lacking clean-up in Slack synchronisation () 2019-04-23 23:08:34 +02:00
Wim
fed77cccf3 Handle unthreaded messages (mattermost). Fixes 2019-04-19 23:31:45 +02:00
Wim
9b520dfb78 Fix panic on nil message.Post (mattermost). Fixes 2019-04-19 23:08:41 +02:00
Wim
2d277a15f5
Add scripting (tengo) support for every outgoing message ()
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) ()
New configuration setting: VerboseJoinPart (default is false)
2019-04-18 23:56:05 +02:00
Wim
380c38674c Fix deadlock on reconnect (irc). Closes 2019-04-15 23:28:47 +02:00
Wim
5677c912a8
Add useraction support (rocketchat). Closes () 2019-04-08 23:30:22 +02:00
Wim
7a24de15e4
Add tengo support to RemoteNickFormat ()
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 . Closes
Revert "Fix typo"

This reverts commit dffd67eb31.

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

This reverts commit 240559581a.

Revert "Support quits from irc correctly. Fixes  ()"

This reverts commit d76a04bd0a.
2019-04-06 23:12:48 +02:00
Wim
60a85621ea Return when not connected and drop a message (irc). Fixes 2019-04-06 22:34:41 +02:00
Wim
cdf33e5748 Use default nick if none specified (irc). Fixes 2019-04-05 00:17:46 +02:00
Wim
01d0a9f412 Handle nil message (telegram). Fixes 2019-04-05 00:04:08 +02:00
Wim
8cc2d3b4fe Revert "Bail if any vars are nil, not if all (telegram) ()"
This reverts commit efd2c99862.
2019-04-05 00:02:26 +02:00
Wim
64b57f2da3
Ignore message_replied and hidden messages (slack). Fixes () 2019-03-27 22:54:18 +01:00
David Hill
efd2c99862 Bail if any vars are nil, not if all (telegram) () 2019-03-27 21:00:57 +01:00
Wim
16763b715a
Look up #channel too (rocketchat). Fix () 2019-03-24 20:15:15 +01:00
David Hill
97f9d4be67 Fix double unlock (slack) () 2019-03-21 17:30:28 +01:00
Wim
77516c97db
Allow the # in rocketchat channels (backward compatible) () 2019-03-20 23:19:27 +01:00
Duco van Amstel
8b754017ca Fix race-condition in populateUser() ()
Fix the root-cause of  by introducing synchronisation points for
individual user fetches.
2019-03-20 22:54:31 +01:00
Wim
a27600046e
Fix regression for legacy slack by () 2019-03-20 22:52:23 +01:00
Duco van Amstel
fb2667631d Refactor channel and user management (slack) () 2019-03-15 21:23:09 +01:00
Duco van Amstel
b638f7037a Force Slack link unfurling () 2019-03-12 22:56:43 +01:00
Duco van Amstel
74699a8262 Split-out Slack user and channel management () 2019-03-12 22:52:36 +01:00
Wim
e955a056e2
Trim <p> and </p> tags (matrix). Closes () 2019-03-03 00:29:29 +01:00
Wim
53aa076555
Do not send duplicate messages (rocketchat). Fixes ()
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 () 2019-03-02 22:38:44 +01:00
Wim
c557d51b6f
Need to specify /topic:mytopic for channel configuration (zulip). ()
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  which didn't work with multiple
gateways.
2019-03-02 20:31:38 +01:00
Wim
df3fdc26a0
Use whatsapp forks () 2019-03-02 13:04:28 +01:00
Wim
af00c34aac
Do not relay any bot messages (discord) () 2019-02-28 12:59:52 +01:00
Wim
26a7e35f27
Add MediaConvertWebPToPNG option (telegram). ()
* 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 
2019-02-27 00:41:50 +01:00
Wim
b09a73040f
Print errors as string instead of %#v () 2019-02-26 17:21:23 +01:00
Wim
740b5f2602
Keep reconnecting until succeed (zulip) () 2019-02-26 17:08:20 +01:00
Wim
96841c70c7 Fix regression in HTML handling (telegram). Closes
* 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 ()
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 () 2019-02-23 22:51:27 +01:00
Wim
1bb39eba87
Add scripting (tengo) support for every incoming message ()
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 () 2019-02-22 14:28:27 +01:00
Krzysiek Madejski
55e79063d6 Add initial WhatsApp support () 2019-02-21 20:28:13 +01:00
Wim
d76a04bd0a
Support quits from irc correctly. Fixes () 2019-02-17 22:43:04 +01:00
Wim
a8fe54a78d
Allow zulip bridge to specify topic per channel. Closes () 2019-02-17 21:50:05 +01:00
Wim
0bcb0b882f
Support join/leaves from discord. Closes () 2019-02-17 21:49:45 +01:00
Wim
aeaea0574f
Detect html nicks in RemoteNickFormat (matrix). Fixes () 2019-02-17 21:48:32 +01:00
Wim
99d71c2177
Send notices on join/parts (matrix). Fixes () 2019-02-16 18:36:09 +01:00
Wim
3e60cfafd3
Send username when uploading video/images (matrix). Fixes () 2019-02-16 18:35:36 +01:00
Wim
3123695869
Upgrade to latest girc version (irc) () 2019-02-16 17:24:04 +01:00
Wim
716751cf76
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: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). 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 2019-02-11 01:34:50 +01:00
Wim
57f156be83
Hint at thread replies when messages are unthreaded (slack) () 2019-02-10 17:23:50 +01:00
Wim
c81c0dd22a Update vendor, move to labstack/echo/v4 Fixes 2019-01-31 17:06:36 +01:00
Wim
4ae028fe73 Optimize handling of very large slack teams. Fixes
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 2019-01-24 21:58:27 +01:00
Wim
8548b69e6e Fix possible data race (irc). Closes 2019-01-24 21:51:52 +01:00
Wim
e3cb665d92 Make discord user token work correctly (discord) 2019-01-19 20:39:58 +01:00
Wim
fb713ed91b
Add initial support for getting ChannelMember info of all bridges ()
* 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) ()
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) () 2019-01-09 23:15:26 +01:00
Patrick Connolly
b33b50987b Add support for mattermost threading () 2019-01-09 21:50:03 +01:00
James Nylen
5193634a52 Use only one webhook if possible (discord) () 2019-01-09 21:28:47 +01:00
Wim
46e2683995 Add file comment to webhook messages (discord). Fixes 2019-01-07 22:16:00 +01:00
James Nylen
492722af8b Improve error reporting on failure to join Discord. Fixes () 2019-01-07 21:39:53 +01:00
Wim
04567c765e
Add support for markdown to HTML conversion (matrix). Closes ()
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 ()
* 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 strip lang in code fences sent to Slack () 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 () 2018-12-26 15:16:09 +01:00
Duco van Amstel
1b834c6858 Fix sshchat connection logic () 2018-12-26 15:09:36 +01:00
Jerry Heiselman
d82726cd1b Try downloading files again if slack is too slow (slack). Closes () 2018-12-19 22:01:05 +01:00
Wim
53c86702a3
Add wait option for populateUsers/Channels (slack) Fixes ()
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) () 2018-12-15 22:57:54 +01:00
Wim
959ca3cef3 Fix bot (legacy token) messages not being send. Closes 2018-12-13 20:49:14 +01:00
Wim
bfa9a83d31
Refactor telegram ()
* Decrease complexity in Send() (makes codeclimate happy)
2018-12-12 23:50:08 +01:00
Wim
2f7b4d7f68
Refactor sshchat bridge ()
* 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 () 2018-12-08 17:04:10 +01:00
Wim
f9fb33e696
Refactor steam bridge ()
* 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 () 2018-12-07 23:36:01 +01:00
Duco van Amstel
8a7efce941 Move golangci-lint configuration to file () 2018-12-05 11:34:34 +01:00
Wim
4265d43096
Refactor handleUploadFile (matrix) () 2018-12-03 16:51:11 +01:00
Wim
27f5a1a685 Fix multiple channel join regression. Closes 2018-12-03 16:37:12 +01:00
Wim
859ebad55d
Make slack-legacy change less restrictive () 2018-12-02 23:09:21 +01:00
Patrick Connolly
e538a4d304 Update nlopes/slack to 4.1-dev () 2018-12-01 19:55:35 +01:00
Wim
f94c2b40a3
Refactor mattermost bridge ()
* Split up in different files
* Decrease complexity
* Fix linting issues
2018-12-01 00:49:08 +01:00
Wim
7923cfe8f8 Fix telegram crash 2018-11-29 23:03:50 +01:00
Wim
df02f51c56 Fix regression on using server ID (discord). 2018-11-28 23:50:40 +01:00
Patrick Connolly
fc5e3a6728 Create getChannelsByX functions to make codeclimate happy (slack) () 2018-11-28 11:04:26 +01:00
Wim
57fbd3c723
Refactor irc handlers. Fix linting () 2018-11-28 10:58:56 +01:00