A Matrix bot for connecting to external services like GitHub, GitLab, JIRA, and more.
- Several services are supported out of the box.
- Webhooks let you connect all kinds of services, with the ability to write rich templates using JavaScript.
- No external database is required, instead using Matrix state as a persistent store.
- End-to-Bridge encryption allows bots to be used in encrypted Matrix rooms.
- Powerful widgets let you configure Hookshot from a room or the Element Extensions Store.
We richly support the following integrations:
Get started by reading the setup guide!
Documentation can be found on GitHub Pages.
You can build the documentation yourself by typing:
# cargo install mdbook
mdbook build
sensible-browser book/index.html
The current GlobeKeeper customization to original hookshot can be divided into 2 different main functionalities:
-
Provisioning the space-associated bridged-external-authentication:
This provisioning endpoint is responsible of introducing a new type of service to hookshot, and by triggering the provisioner with that type, the bride will establish a new route that will authenticate/register users from external systems (currently supporting only GeoDome POST login payload) according to the provided external auth provider URL and name and the path-embedded spaceId. This endpoint is authorized using the unique provisioning secret from the config.
This is the API for provisioning (Should be sent by VCP client when clicking on e.g - "Integrate Space" in the space settings).
-
Actual authentication logic:
The actual authentication logic that is triggered by the newly created route from the provisioner. Making a request to the generated endpoint will execute the following logic:
- Authenticate against the configured external-auth-provider URL (this URL is an argument to the provisioning API) ->
- if authenticated, continues, else it returns 401 ->
- If the user is already registered in Dendrite -> Logs-in and returns homeserver credentials (userId, deviceId and access token)
- If the user isn't already registered in Dendrite -> Registers the user with the format
@{{localpart from email}}-{{name of external auth provider, provided in the provisioning API}}:{{homeserverUrl}}
-> join the newly created user to the space configured with this bridged-auth and returns homeserver credentials (homeserver name, userId, deviceId and access token)
This is the bridged login endpoint (what GeoDome would use essentially):
- Traccar integration for supporting incoming GPS devices location updates and streaming them to the homeserver in a way that would allow displaying them on the map in configured rooms.
- ... 🤩
For debugging purposes, toggle auto-attach in VS Code:
cmnd+shift+p
Debug: Toggle Auto Attach
yarn
yarn start
We have a Matrix support room (#hookshot:half-shot.uk).