Commit Graph

787 Commits (9c203327c07d8fd4161c47163f35dfea29ac83b1)

Author SHA1 Message Date
Wim 00967a98ac
Fix panic on WebhookURL only setting (mattermost). Closes #916 (#917) 5 years ago
Qais Patankar 1d708ab351 Suppress unhandled HelloEvent message (slack) (#913) 5 years ago
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
5 years ago
Wim 0abf4d5d5d
Specify correct GuildID on unknown user query (discord). Fixes #879 (#894) 5 years ago
Michal Suchánek 9b320cd43f Add token support (RocketChat) (#892)
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
5 years ago
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
5 years ago
Wim a3bee01e0a
Update dependencies (#886) 5 years ago
Wim 3562d4220c
Bail if incorrect Jid (xmpp). Fixes #869 (#883) 5 years ago
Wim f66d5f1e58 Add extra debug info (discord) 5 years ago
MOZGIII cec086994e Add support for sending files via webhook (discord) (#872) 5 years ago
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
5 years ago
Wim 79a006c8de
Fix regression (discord). Closes #864 (#866) 5 years ago
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
5 years ago
Qais Patankar 5551f9d56f Fix discord channel & category name clash. #860 (#861) 5 years ago
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
5 years ago
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.
5 years ago
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.
5 years ago
Joona Hoikkala 80b4cec87a Add an option to skip the Mattermost server version check (#849)
Adds SkipVersionCheck bool option for mattermost
5 years ago
Qais Patankar 76c7b69e4e Support bulk deletions (discord) 5 years ago
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.
5 years ago
Wim 6e8f535e8b Fix logic (xmpp) 5 years ago
Wim 5619a75b05
Fix regression in autojoining with legacy tokens (slack). Fixes #651 (#848) 5 years ago
Wim 53dfb78215
Allow messages with timestamp (xmpp). Fixes #835 (#847) 5 years ago
Wim 8e97cbab1e Fix noisy whatsapp error logging 5 years ago
Wim ce7b749fd5 Update github.com/Rhymen/go-whatsapp vendor. Fixes #843 5 years ago
Wim 6617bd6609 Revert xmpp to orig behaviour. Closes #844 5 years ago
Wim e610fb3201 Make config parse errors readable 5 years ago
Wim 40f1d35415 Fix go mod issue by removing whatsapp-ext 5 years ago
Duco van Amstel 3724cc3a15 Clean-up XMPP handling code (#831) 5 years ago
Wim 3418e8c9af
Use upstream whatsapp again (#809) 5 years ago
Wim 1829dc3d9f Allow messages from other bots (discord). Fixes #816 5 years ago
Wim 65781b9316
Disable user lookups on delete messages (slack) (#812) 5 years ago
Duco van Amstel 9be0be0316 Add lacking clean-up in Slack synchronisation (#811) 5 years ago
Wim fed77cccf3 Handle unthreaded messages (mattermost). Fixes #803 6 years ago
Wim 9b520dfb78 Fix panic on nil message.Post (mattermost). Fixes #804 6 years ago
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.
6 years ago
chotaire 6b47e29583 Add verbose IRC joins/parts (ident@host) (#805)
New configuration setting: VerboseJoinPart (default is false)
6 years ago
Wim 380c38674c Fix deadlock on reconnect (irc). Closes #757 6 years ago
Wim 5677c912a8
Add useraction support (rocketchat). Closes #772 (#794) 6 years ago
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"
6 years ago
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.
6 years ago
Wim 60a85621ea Return when not connected and drop a message (irc). Fixes #786 6 years ago
Wim cdf33e5748 Use default nick if none specified (irc). Fixes #785 6 years ago
Wim 01d0a9f412 Handle nil message (telegram). Fixes #777 6 years ago
Wim 8cc2d3b4fe Revert "Bail if any vars are nil, not if all (telegram) (#778)"
This reverts commit efd2c99862.
6 years ago
Wim 64b57f2da3
Ignore message_replied and hidden messages (slack). Fixes #709 (#779) 6 years ago
David Hill efd2c99862 Bail if any vars are nil, not if all (telegram) (#778) 6 years ago
Wim 16763b715a
Look up #channel too (rocketchat). Fix #773 (#775) 6 years ago
David Hill 97f9d4be67 Fix double unlock (slack) (#771) 6 years ago
Wim 77516c97db
Allow the # in rocketchat channels (backward compatible) (#769) 6 years ago
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
Wim bab385c342 Remove unused key (config) 6 years ago
Wim c585d00f16 Ignore LatencyReport event (slack) 6 years ago
Duco van Amstel da8e415ae1 Use logrus imports instead of log (#662) 6 years ago
Duco van Amstel 1b834c6858 Fix sshchat connection logic (#661) 6 years ago
Jerry Heiselman d82726cd1b Try downloading files again if slack is too slow (slack). Closes #655 (#656) 6 years ago
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.
6 years ago
David Hill 192fe89789 Populate user on channel join (slack) (#644) 6 years ago
Wim 959ca3cef3 Fix bot (legacy token) messages not being send. Closes #571 6 years ago
Wim bfa9a83d31
Refactor telegram (#649)
* Decrease complexity in Send() (makes codeclimate happy)
6 years ago
Wim 2f7b4d7f68
Refactor sshchat bridge (#650)
* Decrease complexity in Send()
* Add handleUploadFile() function
6 years ago
Wim d887855e16 Add bot debug info (slack) 6 years ago
Duco van Amstel a2754f15fc Enable errcheck linter (#646) 6 years ago
Wim f9fb33e696
Refactor steam bridge (#630)
* split up in different files
* decrease complexity
6 years ago
Wim f72d5de2d7 Disable some unparam checks (discord) 6 years ago
Duco van Amstel 0365c0786a Split Discord bridge in multiple files (#632) 6 years ago
Duco van Amstel 8a7efce941 Move golangci-lint configuration to file (#635) 6 years ago
Wim 4265d43096
Refactor handleUploadFile (matrix) (#629) 6 years ago
Wim 27f5a1a685 Fix multiple channel join regression. Closes #639 6 years ago
Wim 859ebad55d
Make slack-legacy change less restrictive (#626) 6 years ago
Patrick Connolly e538a4d304 Update nlopes/slack to 4.1-dev (#595) 6 years ago
Wim f94c2b40a3
Refactor mattermost bridge (#622)
* Split up in different files
* Decrease complexity
* Fix linting issues
6 years ago
Wim 7923cfe8f8 Fix telegram crash #620 6 years ago
Wim df02f51c56 Fix regression on using server ID (discord). #619 #617 6 years ago
Patrick Connolly fc5e3a6728 Create getChannelsByX functions to make codeclimate happy (slack) (#610) 6 years ago
Wim 57fbd3c723
Refactor irc handlers. Fix linting (#611) 6 years ago
Wim 25cd1e2cc1
Refactor telegram handlers. Fix linting (#609)
* Refactor telegram handlers. Fix linting
6 years ago
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.
6 years ago
Duco van Amstel 09875fe160 Update direct dependencies where possible 6 years ago
Wim f716b8fc0f
Merge pull request #606 from 42wim/fix-590 6 years ago
Wim 9f66f93641
Add option to send RAW commands after connection (irc). Fixes #490 (#604) 6 years ago
Wim f00d4d7d3f Make sure threaded files stay in thread (slack). Fixes #590 6 years ago
Wim 0929535b2e Do not post empty messages (slack). Fixes #574 6 years ago
Wim 8869e253ca Handle deleted/edited thread starting messages (slack). Fixes #600 (#605) 6 years ago
Wim f4d4dc91b1
Add option to ignore failing bridge on start. Fixes #455 (#603) 6 years ago
Wim c6fd65d1d7 Limit discord username via webhook to 32 chars 6 years ago
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
6 years ago
Wim a2b45bc799 Fix Nickserv logic (irc) #602 6 years ago
Wim ae32bae791
Add protocol to msg.ID in cache (#596) 6 years ago
Wim 32f57b7c26 Add links to slack bot and legacy config in error message (slack) 6 years ago
Duco van Amstel ce21ba1545 Fix golint linter issues and enable it in CI (#593) 6 years ago
Duco van Amstel c89085bf44 Fix and enable goimports linter (#591) 6 years ago
Patrick Connolly 4254ed3c63 Fix regression in skip logic (slack). (#592) 6 years ago
Duco van Amstel 85564a35fd Fix IRC line splitting. Closes #584 (#587) 6 years ago
Patrick Connolly 09713d40ba Fix file caching issue (slack). #572 (#575) 6 years ago
Duco van Amstel 16d5aeac7c Make config.Config more unit-test friendly (#586) 6 years ago
Duco van Amstel e19ba5a06a Add new Slack connection and forked legacy Slack bridge (#582) 6 years ago
Wim f7a5077d5d Fix goconst linter failure 6 years ago
Wim f8dc24bc09 Switch back go upstream bwmarrin/discordgo
Commit ffa9956c9b got merged in.
6 years ago
Duco van Amstel e9419f10d3 Restore file comments coming from Slack (#583) 6 years ago
Wim d2ae3ebf9e Disable Connect(), JoinChannel(), Send() for mattermost.plugin 6 years ago
Duco van Amstel 2f042ad915 Add more rate-limit handling (slack) (#581) 6 years ago
Wim 78401214b0 Make scopelint happy 6 years ago
Wim b2a07aba3a Make goconst linter happy 6 years ago
Wim 1e0bb3da95 Make gocritic linter happier 6 years ago
Wim 59994da176 Act only on UserTypingEvents when enabled 6 years ago
Patrick Connolly 3d281b3316 Add ability to show when user is typing across Slack bridges (#559) 6 years ago
Duco van Amstel ea86849a58 Fix Slack edit usernames (#570) 6 years ago
Wim 399789811e Make gocritic linter happy 6 years ago
Wim 8d117cb0a4 Make structcheck linter happy 6 years ago
Wim 588b8e0303 Make interfacer linter happy 6 years ago
Wim 1794922263 Make unparam linter happy 6 years ago
Patrick Connolly f2703979a4 Clean up config loading. (#561) 6 years ago
Duco van Amstel d2a1dc792f Refactor and clean-up handlers. (slack) (#533) 6 years ago
David Hill 0e2522279e Clean up various stuff (#508)
* various cleanups
6 years ago
Duco van Amstel a1bf37e457 Do not join Slack channel without API access (slack) (#563) 6 years ago
Patrick Connolly a20b7895a9 Preserve threading between Slack instances (#529)
* Opportunistically preserve Slack threading when parent thread in cache. [#529]

* Removed slack-specific processing from gateway.

* Added docs.

* Add option to enable threading, with default to off.

* Did cleanup on @42wim's comments.

* Update gateway/gateway.go

Co-Authored-By: patcon <patrick.c.connolly@gmail.com>

* Suggestion from @42wim :)

* Suggestions from @42wim.

* More suggestions.
6 years ago
Patrick Connolly 5666821e7b Add a health endpoint to API (#554) 6 years ago
Patrick Connolly 5132d8f097 Stop setting API ring buffer capacity if not specified. (#552) 6 years ago
Patrick Connolly 7e62bc4819 Remove hyphens when auto-loading envvars from viper config (#545)
* When auto-loading envvars from toml keys, remove hyphens.

See: https://unix.stackexchange.com/questions/23659/can-shell-variable-include-character
6 years ago
NikkyAI d058be25ad Respond with message on connect (api) (#550)
fix #549
6 years ago
Duco van Amstel 1269be1d04 Prevent Slack API rate-limit overflow (#539) 6 years ago
Wim e2b50d6194 Add better support for multiperson DM (mattermost) 6 years ago
Wim 107969c09a
Split up cookie token and personal token (mattermost). Fixes #530 (#540) 6 years ago
Patrick Connolly d379118772 Fix bridge no longer POSTing username and avatar (slack) (#536)
* Fixed pointer/reference issue in populateUsers. [#536]

* Accepted codestyle suggestion.

* Update bridge/slack/helpers.go

Co-Authored-By: patcon <patrick.c.connolly@gmail.com>

* Update helpers.go
6 years ago
Duco van Amstel f2cdda7278 Update Blackfriday dependency (closes #522) (#532)
- Fixup Telegram bridge implementation to support updated dependency.
6 years ago
Duco van Amstel 6911458d15 Clean up message send logic (slack). (#531) 6 years ago
Duco van Amstel 6238effdc2 Clean up user and channel information management (slack) (#521) 6 years ago
Duco van Amstel 498377a230 Clean up code and strengthening (slack) (#519)
Changes include:
- Refactor of strings into package-wide constants.
- Predeclaration of regexps to be instantiated at package load time.
- Checking of unchecked errors.
- Structural changes:
  - Adding verifications to type-casting code.
  - Remove unnecessary 'len(X) > 0' checks before iterating over X.
  - Remove unnecessary 'else' clause after 'if' with 'return'.
  - Unexporting of public fields of Bridge struct.
- Formatting:
  - One-field-per-line struct definitions.
6 years ago
Duco van Amstel e15b0e04b8 Refactor slack bridge prelude (#517)
Distributing the source of the Slack bridge across multiple files to
increase readability and as a prelude to various refactors and
clean-ups.
6 years ago
NikkyAI 54adb0509e Fix mentions cuttíng off all text after the mention (discord) (#506) 6 years ago
Wim bd3a3b6eaf Let webhook also replace mentions (discord). Closes #502 6 years ago
NikkyAI 296428d53e Fix Discord mentions by populating the nickMemberMap at connect (#498) 6 years ago
Jerry Heiselman a431a4fa04 Replace @... string with user mention if match found (discord) (#492). Closes #460
* Added check for @-mention pattern and replacing it with a user with a matching Nick on incoming messages
6 years ago
Wim 330ddb6a30 Fix panic by using matterclient calls in the right place. Related to cb7278eb (mattermost). Closes #491 6 years ago
Wim 52dbd702ad Get up to 1000 channels and private/mp/im channels (slack). Related to #489 6 years ago
Wim d7c3570ba3 Check nickname on kick (irc). Closes #488 6 years ago
Wim b51fdbce9f Add caching to fix issue with slack API changes (slack). #481 6 years ago
Wim 351b423e15 Add a bit more debugging (irc). #482 6 years ago
Wim 7690be1647 Fix slack file/image downloads after api changes (slack) 6 years ago
Wim 7f3cbcedc0 Use own forks for logrus-prefixed-formatter and discordgo 6 years ago
Wim d71850cef6 Use UserID to look for avatar instead of username (slack). Closes #472 6 years ago
Wim 2597c9bfac Clip too long messages sent to discord (discord). Closes #440 6 years ago
Wim 93307b57aa Skip empty messages being sent with the webhook (discord). #469 6 years ago
Wim 618953c865 Remove ununsed function (slack) 6 years ago
Wim e04dd78624 Add support for slack channels by ID. Closes #436 6 years ago
Wim fa0c4025f7 Fix avatar uploads to work with MediaDownloadPath. Closes #454 6 years ago
John 2d2d185200 Stop numbers being stripped after non-color control codes (irc) (#465)
Currently numbers are stripped not just after the color control code (\x03) but also after other formatting such as bold (\x02) and italic (\x1D), which is both unnecessary and leads to missing text from irc. This fixes that by only stripping numbers after the color control code.
6 years ago
Wim cb7278eb50 Use nickname instead of username if defined (mattermost). Closes #452 6 years ago
Wim ed062e0ce5 Add a space before url in file uploads (discord). Closes #461 6 years ago
Wim a69ef8402b Fix previous commit 6 years ago
Wim 8779f67d2d Allow join-leave and topic changes to webhook (discord) 6 years ago
Wim e4b72136b8 Fix possible panic. #448 6 years ago
Wim 221a63d980 Fix build (telegram) 6 years ago
Wim d02eda147c Add support for MessageFormat=htmlnick (telegram). #444 6 years ago
Bruno Bierbaumer 6628a47f23 Add channel password support for XMPP (#451) 6 years ago
Wim d2c02be3a0 Handle slack attachments sent to mattermost. Closes #447 6 years ago
Maxim 594492fbdd Add Title from attachment slack message (#446) 6 years ago
Wim bd9ea7a88d Add MediaDownloadBlacklist option. Closes #442 6 years ago
Liam Stanley 51327a4056 Reconnect on quit. (irc) See #431 (#445)
* potential fixes for #431
* go: fix formatting/gofmt/goreturns
6 years ago
Remi Reuvekamp 33bd60528b Add config option MediaDownloadPath (#443)
* Add config option MediaUploadPath

MediaDownloadPath can be used instead of MediaServerUpload, for when your
webserver is on the same system as matterbridge and matterbridge has
write access to the serve dir.

* Limit length of hash in MediaServer urls to 8chars

Full SHA256 is unnecessary for uniqueness.
Also; if a file has the same first 8 charachters of the SHA256 hash,
it's still not a problem, as long as the filename is not the same.
6 years ago
Wim e307069d62 Ignore messages from ourself. (sshchat) Closes #439 6 years ago
ValdikSS 91db63294c Add message correction support for XMPP (#437)
It works worse than it could be, since message correction in XMPP
works differently compared to other messengers. XMPP replaces old
message with old ID with new message with new ID. Matterbridge
remembers only old ID, that's why you can edit a message from
XMPP to the gateway only once.

Edited messages from other networks to XMPP are handled correctly
though.
6 years ago
Yuval Langer 6576409d60 Prevent white or black color codes (irc) (#434) 6 years ago
Patrick Connolly 045cb2058c Fix regexp in replaceMention (slack). (#435) 6 years ago
Wim 07885f5810 Fix iconurl regression (mattermost,slack,rocketchat). Closes #430 6 years ago
Wim 696c518550 Add error message about webhook (slack) 6 years ago
Wim 411ef2691c Use uuid instead of userid. Fixes #429 6 years ago
OyyoDams f6eefa4ecc Fix issue #432 - Avatar spoofing from Slack to Discord with uppercase in nick doesn't work (#433) 6 years ago
Kazuhiro NISHIYAMA f1db166ac4 Fix format string bug (irc) (#428) 6 years ago
Yuval Langer 887c2bc56d End IRC username formatting with a total formatting reset (irc) (#425)
* Add zero padding to the color code

* Change color ending into total formatting reset
6 years ago
Yuval Langer f0738a93c3 [WIP] Colorize username sent to IRC using its crc32 IEEE checksum (#423)
* Colorize username sent to IRC using its crc32 IEEE checksum

* Add `ColorNicks` configuration variable

* Add `ColorNicks` setting
6 years ago
Wim 75381c2c6e Add support for CJK to/from utf-8 (irc). #400 6 years ago
Wim 406a54b597 Add QuoteFormat option (telegram). Closes #413 6 years ago
ValdikSS be04d1a862 Send attached files to XMPP in different message with OOB data and without body (#421)
Conversations can't show inline pictures if there's anything besides URL in the message body.
Workaround this issue by sending one usual message and one message with OOB data and without message body.
The second message should not be shown in the clients without OOB support, so the user won't see the empty message.
6 years ago
Wim 45296100df Add initial zulip support 6 years ago
Wim 72ce7f06e9 Handle file comment better 6 years ago
Wim 346a7284f7 Handle file uploads to mediaserver (steam) 6 years ago
Wim ee4ac67081 Fix possible nil when using channels (telegram). #410 6 years ago
Wim 96a47a60ad Add support for reloading all settings automatically after changing config except connection and gateway configuration. Closes #373 6 years ago
Wim b24a47ad7f Handle channel posts correctly (telegram) 6 years ago
Wim cd1fd1bb7c Fix panic (telegram). Closes #410 6 years ago
Jerry Heiselman 76af9cba5a Properly set Slack user who initiated slash command (#394)
* Properly set Slack user who initiated slash command
7 years ago
Wim b69fc30902 Fix regression in ReplaceMessages and ReplaceNicks. Closes #407 7 years ago
Wim 99ce68e9ba Use username if bot name is Slack API Tester (slack) 7 years ago
Wim 8a8b95228c Remove message newline (telegram). #399 7 years ago
Wim 31a752fa21 Add missing import 7 years ago
Wim a83831e68d Remove empty newlines from messages (telegram) #399 7 years ago
ValdikSS a12a8d4fe2 Send mediaserver link to Discord in Webhook mode (discord) (#405) 7 years ago
Wim e57f3a7e6c Add QuoteDisable option (telegram). Closes #399 7 years ago
Wim 68fbed9281 Make our callbackid more unique. Fixes issue with running multiple matterbridge on the same channel (slack,mattermost) 7 years ago
Jerry Heiselman 76360f89c1 Strip markdown URLs with blank text (slack) (#392) 7 years ago
Wim b4aa637d41 Add channel debug (discord) 7 years ago
Wim 7c4334d0de Remove unused import 7 years ago
Wim 062be8d7c9 Revert #378 7 years ago
Wim 8c0b04b995 Ignore restricted_acton on channel join (slack). Closes #387 7 years ago
Wim e5989adf92 Add support for NoSendJoinPart. Closes #382 7 years ago
Wim 2133e0d1be Use default values part 2 (irc) 7 years ago
Wim a6f37f1d61 Use default values (irc) 7 years ago
Wim 9de9151826 Fix panic on sending messages between reconnects (irc). Closes #385 7 years ago
Wim 80fcf18e24 Remove debug messsage (mattermost) 7 years ago