Commit Graph

577 Commits

Author SHA1 Message Date
cori hudson 921f2dfcdf Add initial Keybase Chat support ()
* 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 () 2019-07-29 23:37:38 +02:00
Wim 7d2e440c83
Add support for discord category channels (discord) ()
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 
2019-07-15 21:56:35 +02:00
Qais Patankar 5551f9d56f Fix discord channel & category name clash. () 2019-07-14 19:53:09 +02:00
Wim 1fb91c6316
Fix panic by checking slice bounds in handleEntities (telegram). Fixes ()
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) ()
* 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
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 ()
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) ()
Partially fixes .

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 () 2019-06-14 00:42:55 +02:00
Wim 53dfb78215
Allow messages with timestamp (xmpp). Fixes () 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 2019-06-14 00:02:32 +02:00
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 #722"

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