- Automatic setup of Matrix rooms that bridge to outside rooms
- Room name and topic synchronization (partially)
- Images and file transfers (Mattermost backend)
- Avatar and room pictures (Mattermost backend, one-way only)
- Web interface for setting up accounts so that new accounts can be easily
added and you don't have to type your credentials in a clear-text Matrix room
- Credentials are stored encrypted in the database using users' Matrix passwords
There is lot to do! See the issues if you want to join us on this project.
A Docker image is provided on the [Docker hub](https://hub.docker.com/r/lxpz/easybridge_amd64).
Easybridge takes a single command line argument, `-config <filename>`, which is the
path to its config file (defaults to `./config.json`).
The configuration file is a JSON file whose contents is described in the following section.
Easybridge is licensed under the terms of the GPLv3.
## Building Easybridge
Easybridge requires go 1.13 or later.
To build Easybridge, clone this repository outside of your `$GOPATH`.
Then, run `make` in the root of the repo.
## Configuring Easybridge
Easybridge acts as a Matrix application service: in this regard,
it requires a registration file to be added to your homeserver.
It uses a database to store configuration and state information,
which can be any backend supported by [Gorm](https://gorm.io).
Easybridge is configured using a single JSON configuration file, which contains
a dictionnary whose keys are the following:
-`log_level`: what log level Easybridge runs with (trace, debug, info, warn, error, fatal, panic). **Warning:** in `trace` level, the content of all calls to the Matrix API and some other information will be dumped, exposing user's credentials and messages. In `debug` level, room join/leave information will be exposed. The `info` level (default) does not expose any user's private information.
-`homeserver_url`: HTTP address of the Matrix homeserver
-`matrix_domain`: the domain name of the Matrix homeserver (i.e. the domain used in user identifiers, room identifiers, etc)
-`name_format`: the format of identifiers that are created on Matrix for users and room aliases. `{}` is replaced by the concatenation of user/room identifier and protocol. Typically you want either `_ezbr_{}` or `{}_ezbr`, the latter having the advantage that the briged user's names are then used as prefixes for the created identifiers.
-`web_bind_addr`: on what IP/port to bind for the web interface that allows adding and configuring accounts (HTTP only, no HTTPS, use a reverse proxy for that)
-`web_url`: the outside HTTP/HTTPS address at which the web interface is made available. If set, a widget will be added in the Easybridge room so that users can configure the bridge without leaving the Riot client.
-`session_key`: a key with which session cookies are encrypted for the web interface