connector | ||
mxlib | ||
static/css | ||
templates | ||
test | ||
.gitignore | ||
account.go | ||
db.go | ||
Dockerfile | ||
easybridge.jpg | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
Makefile | ||
README.md | ||
server.go | ||
util.go | ||
web.go |
Easybridge
Easybridge is a Matrix-to-everything (almost) bridge. It acts as a client under your name on all instant messaging networks where you have an account, and presents your private messages as well as group conversations in Matrix in a uniform view. Basically, Matrix becomes your everything chat client!
Current features:
- Backends: IRC, XMPP, Mattermost (more to come)
- Private messages and group/chat room messages
- 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.
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.
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: intrace
level, the content of all calls to the Matrix API and some other information will be dumped, exposing user's credentials and messages. Indebug
level, room join/leave information will be exposed. Theinfo
level (default) does not expose any user's private information.appservice_bind_addr
: on what IP/port to bind as a Matrix app service (HTTP only, no HTTPS)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.registration
: path to the YAML appservice registration filehomeserver_url
: HTTP address of the Matrix homeservermatrix_domain
: the dmoain name of the Matrix homeserver (i.e. the domain used in user identifiers, room identifiers, etc)db_type
anddb_path
: the database backend and path to use (see the Gorm documentation)session_key
: a key with which session cookies are encrypted for the web interface