A Golang Matrix framework.
  • Go 99.7%
  • PLpgSQL 0.3%
Find a file
Sumner Evans 213b6ec80d
crypto/olm: make everything into an interface
This commit turns all of the crypto objects that are provided by olm
into interfaces so that multiple implementations (libolm and goolm right
now) can implement it.

As part of this refactor, the libolm code has been moved to a separate
package (goolm was already in its own package). Both packages now
implement structs which implement the various interfaces.

Additional changes:

* goolm/goolmbase64: split into separate package (needed to avoid import
  loops)
* olm/errors: unified all errors under the olm package
* ci: remove libolm before building with goolm flag (this allows us to
  use ./... to build all of the packages under goolm)

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
2024-08-23 09:16:33 -06:00
.github/workflows crypto/olm: make everything into an interface 2024-08-23 09:16:33 -06:00
appservice appservice: ensure registered before uploading media 2024-08-08 12:45:24 +03:00
bridge bridgev2/provisioning: nest bridge state in whoami response 2024-08-10 16:08:41 +03:00
bridgev2 provisioning: fix return value from doResolveIdentifer 2024-08-22 13:07:56 -06:00
crypto crypto/olm: make everything into an interface 2024-08-23 09:16:33 -06:00
event event: remove omitemptys from MSC1767Audio 2024-08-21 10:46:35 +03:00
example Remove separate go.mod for example 2024-05-26 18:26:04 +03:00
federation federation: add query profile and directory wrappers 2024-08-14 14:16:09 +03:00
format format: fix tests 2024-08-09 23:46:56 +03:00
hicli bridgev2/matrix: use cached member list if available 2024-08-20 16:21:41 +03:00
id id: fix typo in ContentURI.IsValid 2024-08-03 22:06:39 +03:00
mediaproxy mediaproxy: add option to force proxying legacy federated downloads 2024-06-19 12:28:12 +03:00
pushrules Implement new push rule condition kinds (#120) 2023-05-24 15:09:43 +03:00
sqlstatestore bridgev2/matrix: use cached member list if available 2024-08-20 16:21:41 +03:00
synapseadmin client: stop using MakeFullRequest unnecessarily 2024-06-15 20:15:06 +03:00
.editorconfig bridgev2/matrix: add OpenAPI spec for provisioning API 2024-08-10 17:43:53 +03:00
.gitignore Add draft of high-level client framework 2024-05-26 18:29:22 +03:00
.pre-commit-config.yaml pre-commit: update, enforce go mod tidy 2024-07-10 12:01:17 -06:00
CHANGELOG.md changelog: update 2024-08-20 16:29:41 +03:00
client.go Beeper extension for client side media dedup (#267) 2024-08-21 19:19:03 +03:00
error.go errors: add status codes to predefined error variables 2024-08-10 23:30:07 +03:00
filter.go Switch to /v3 paths everywhere 2022-04-17 12:59:34 +03:00
go.mod crypto/ed25519: reimplementation with libolm-compatible byte layout 2024-08-23 08:53:01 -06:00
go.sum crypto/ed25519: reimplementation with libolm-compatible byte layout 2024-08-23 08:53:01 -06:00
LICENSE treewide: fixup for pre-commit 2022-01-27 09:35:41 -07:00
README.md Update readme 2024-06-11 21:08:24 +03:00
requests.go client: update beeper inbox request content 2024-08-15 16:10:27 +03:00
responses.go Beeper extension for client side media dedup (#267) 2024-08-21 19:19:03 +03:00
responses_test.go Fix bug 2022-08-04 15:03:05 +03:00
room.go Add method to get full room state 2021-09-30 16:05:56 +03:00
statestore.go bridgev2/matrix: use cached member list if available 2024-08-20 16:21:41 +03:00
sync.go Add contexts to event handlers 2024-01-13 18:56:12 +02:00
syncstore.go Merge remote-tracking branch 'recht/synccontext' 2024-01-07 15:37:18 +02:00
url.go Add path type for synapse admin API 2023-05-19 17:49:53 +03:00
url_test.go Switch to /v3 paths everywhere 2022-04-17 12:59:34 +03:00
version.go Bump version to v0.20.0 2024-08-16 11:54:48 +03:00
versions.go bridgev2/matrix: use beeper inbox state endpoint if available 2024-08-01 15:19:05 +03:00
versions_test.go Parse spec version numbers in /versions response 2022-05-06 14:31:38 +03:00

mautrix-go

GoDoc

A Golang Matrix framework. Used by gomuks, go-neb, mautrix-whatsapp and others.

Matrix room: #go:maunium.net

This project is based on matrix-org/gomatrix. The original project is licensed under Apache 2.0.

In addition to the basic client API features the original project has, this framework also has:

  • Appservice support (Intent API like mautrix-python, room state storage, etc)
  • End-to-end encryption support (incl. interactive SAS verification)
  • High-level module for building puppeting bridges
  • High-level module for building chat clients
  • Wrapper functions for the Synapse admin API
  • Structs for parsing event content
  • Helpers for parsing and generating Matrix HTML
  • Helpers for handling push rules