- Go 100%
| cmd | add AGPL license and also sign raw body in /sign | |
| internal | /request: return raw content instead of trying to handle the response as json | |
| .gitignore | dump my work | |
| COPYING | add AGPL license and also sign raw body in /sign | |
| go.mod | update mautrix | |
| go.sum | update mautrix | |
| README.md | add known issues section to README.md (1 issue kek) | |
fed-server
a server that can send signed federation requests using mautrix.
please do not expect any support or quality from this! i'm learning Go while creating it, so if a server explodes during use, i am not responsible.
also before anyone make fed jokes, this has everything to do with US federal agents. i'm a fed and i'm in your walls.
setup
- create or copy federation keys in the Synapse format (
ed25519 <key id> <base64 key>) - create
config.json:
{
"name": "server software name",
"version": "server software version",
"server_name": "example.com",
"key": "ed25519 <key id> <base64 key>",
"listen_address": "127.0.0.1:8888"
}
i recommend using a fresh (sub)domain for server_name, and not a real server.
- build
go build cmd/fed-serverand copy the binary somewhere suitable. - run
fed-server!config.jsonmust be in the working directory, or it will not start. - reverse proxy only
/_matrix/key/v2/serverand optionally/_matrix/federation/v1/version. WARNING: take care on this step, there is no authentication. if any other endpoints are exposed, anyone will be able to send federation requests in the server's name!
usage
POST /send/{txnID} - send federation transactions. this accepts the same JSON body as /_matrix/federation/v1/send, and
uses the destination property to determine which server to send to. txnID is any transaction ID, such as a timestamp.
<any method> /request/{server}/{path} - send any kind of request to server. path is prepended with /_matrix/federation but i'll
probably fix/change that quite soon.
POST /sign - returns the JSON body, but signed by the server's federation keys.
known problems
- conduit & its forks may not like some of the events this has signed, at least from my experience trying to join rooms