* Prevent alias registration in AS exclusive namespace
* Fix M_Exclusive errors so they return status 400 instead of 403.
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* Directly access namespace map instead of searching for key
* Prevent sql scanning into nil value in accounts_table
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* Remove uneccessary logging, null checking
* Don't forget to set the localpart
* Simplify error checking
* Add group_id, rate_limit and protocol AS config options
* We currently just record and error check these options. There are not
currently implemented.
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* Clean things up and fix yaml declaration
* Warn loudly when app service requests unimplemented options
* Fix comments
* Remove high cyclomatic complexity of appservice checkErrors
* Set default rate limited to true
* Compile room and alias namespace regexs
We'll be needing these for event filtering in the appservice component.
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* App service filters roomserver events
Doing so based on namespace regexes that each app service has defined.
To get the aliases for a roomID a new aliasAPI endpoint was defined,
GetAliasesFromRoomID, which does exactly what it says on the tin.
Next step is to queue events to be sent off to each homeserver.
* Additionally filter state events for app services
* Fixed context, logging, derps, config handling
* Prevented user from creating more than one regex per namespace type
Got caught out by realizing I had an extra '-' in the config file. This
prevents anyone from making the same mistake :)
* Removed exclusive RoomID namespace regex, as we won't need to check
upon room creation if the ID is reserved exclusively by an AS (as this
is silly and horribly inefficient).
* Fixed all else mentioned
* Add Application Service component
The component subscribes to the Roomserver kafka stream, filtering
events to be eventually sent off to relevant app services, as well as
handling incoming HTTP traffic from app services on the
`/matrix/app/r0/*` route.
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* Make linting happy
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* Fix typo in API Endpoint
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
* Fixed another typo and bug
Use a sql.NullInt64 instead of an Int64 as that allows for values to
sometimes be null when pulling from a postgres table. Can result in
error otherwise.
Signed-off-by: Andrew Morgan <andrewm@matrix.org>
Should return error if we didn't find an Application Service, not the
other way around. Reported by @APWhitehat
Signed-off-by: Andrew Morgan (https://amorgan.xyz) <andrew@amorgan.xyz>