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
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.
2018-11-07 09:14:31 +01:00
Patrick Connolly
5666821e7b
Add a health endpoint to API ( #554 )
2018-11-07 09:11:59 +01:00
Patrick Connolly
5132d8f097
Stop setting API ring buffer capacity if not specified. ( #552 )
2018-11-05 21:53:51 +01:00
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
2018-11-03 14:42:27 +01:00
NikkyAI
d058be25ad
Respond with message on connect (api) ( #550 )
...
fix #549
2018-11-02 16:35:13 +01:00
Duco van Amstel
1269be1d04
Prevent Slack API rate-limit overflow ( #539 )
2018-11-01 21:28:22 +01:00
Wim
e2b50d6194
Add better support for multiperson DM (mattermost)
2018-10-27 22:02:25 +02:00
Wim
107969c09a
Split up cookie token and personal token (mattermost). Fixes #530 ( #540 )
2018-10-26 16:47:56 +02:00
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
2018-10-24 21:12:20 +02:00
Duco van Amstel
f2cdda7278
Update Blackfriday dependency ( closes #522 ) ( #532 )
...
- Fixup Telegram bridge implementation to support updated dependency.
2018-10-22 19:48:29 +02:00
Duco van Amstel
6911458d15
Clean up message send logic (slack). ( #531 )
2018-10-22 19:43:57 +02:00
Duco van Amstel
6238effdc2
Clean up user and channel information management (slack) ( #521 )
2018-10-16 20:34:09 +02:00
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.
2018-10-13 01:02:14 +02:00
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.
2018-10-12 23:16:34 +02:00
NikkyAI
54adb0509e
Fix mentions cuttíng off all text after the mention (discord) ( #506 )
2018-09-29 20:02:59 +02:00
Wim
bd3a3b6eaf
Let webhook also replace mentions (discord). Closes #502
2018-09-22 22:15:19 +02:00
NikkyAI
296428d53e
Fix Discord mentions by populating the nickMemberMap at connect ( #498 )
2018-09-17 21:25:06 +02:00
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
2018-09-12 22:30:14 +02:00
Wim
330ddb6a30
Fix panic by using matterclient calls in the right place. Related to cb7278eb
(mattermost). Closes #491
2018-08-30 23:04:50 +02:00
Wim
52dbd702ad
Get up to 1000 channels and private/mp/im channels (slack). Related to #489
2018-08-28 22:33:07 +02:00
Wim
d7c3570ba3
Check nickname on kick (irc). Closes #488
2018-08-27 21:20:41 +02:00
Wim
b51fdbce9f
Add caching to fix issue with slack API changes (slack). #481
2018-08-18 00:12:05 +02:00
Wim
351b423e15
Add a bit more debugging (irc). #482
2018-08-16 23:02:28 +02:00
Wim
7690be1647
Fix slack file/image downloads after api changes (slack)
2018-08-10 00:39:07 +02:00
Wim
7f3cbcedc0
Use own forks for logrus-prefixed-formatter and discordgo
2018-08-06 21:11:13 +02:00
Wim
d71850cef6
Use UserID to look for avatar instead of username (slack). Closes #472
2018-08-06 16:44:15 +02:00