Age | Commit message (Collapse) | Author |
|
* Add missing internal api endpoint
Signed-off-by: Till Faelligen <tfaelligen@gmail.com>
* Add missing performKeyBackup endpoint
* Add missing http mode for userapi
* Fix failing tests
* Add error checks
* Fix sytest
* Update startup logic for HTTP mode
* Use userImpl for AS (annoying)
* Don't send device list updates for appservice devices
* Fix build
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
|
|
- Lower cased error messages
Signed-off-by: Ryan Whittington <twentybitdev@gmail.com>
Co-authored-by: kegsay <kegan@matrix.org>
|
|
* Delete device keys/signatures from key server when deleting device from user API
* Move loop to within database transaction
* Don't fall over deleting no rows
|
|
* Add querying device keys
Makes a bunch of sytests pass
* Apparently only the current version supports uploading keys
* Linting
|
|
* Add PUT key backup endpoints and glue them to PerformKeyBackup
* Add tables for storing backup keys and glue them into the user API
* Don't create tables whilst still WIPing
* writer on sqlite please
* Linting
|
|
* Initial key backup paths and userapi API
* Fix unit tests
* Add key backup table
* Glue REST API to database
* Linting
* use writer on sqlite
|
|
* Implement OpenID module (#599)
- Unrelated: change Riot references to Element in client API routing
Signed-off-by: Bruce MacDonald <contact@bruce-macdonald.com>
* OpenID module tweaks (#599)
- specify expiry is ms rather than vague ts
- add OpenID token lifetime to configuration
- use Go naming conventions for the path params
- store plaintext token rather than hash
- remove openid table sqllite mutex
* Add default OpenID token lifetime (#599)
* Update dendrite-config.yaml
Co-authored-by: Kegsay <kegsay@gmail.com>
Co-authored-by: Kegsay <kegan@matrix.org>
|
|
* Check membership of room
* Use QueryStateAfterEventsResponse
* Fix complexity
* Changes that I made a long time ago
* Rename to appserviceJoinedAtEvent
* Check membership in GetMemberships
* Update QueryMembershipsForRoom
* Tweaks in client API
* Update appserviceJoinedAtEvent
* Comments
* Try QueryMembershipForUser instead
* Undo some changes to client API that shouldn't be needed
* More /event tweaks
* Refactor /event bit
* Go back to QueryMembershipsForRoom because appservices are hard
* Fix bugs in onMessage
* Add comments
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
|
|
|
|
* Always return OTK counts
* Fix parameter ordering
* Send IDs over to keyserver internal API
* Review comments
* Fix syntax error
* Fix panic, hopefully
* Require user ID to be set
* Fix user API call
|
|
|
|
* Ensure appservices can auth as users in their namespaces
Currently in Dendrite appservices can only auth as a user if the user was created by said appservice. This does not align with the appservices spec which specifically says:
> The application service may specify the virtual user to act as through use of a user_id query string parameter on the request. The user specified in the query string must be covered by one of the application service’s user namespaces.
https://matrix.org/docs/spec/application_service/r0.1.2#identity-assertion
In the case that a user has been created for example via manual registration but belongs to an appservice namespace, the current functionality does not allow appservices to auth as them. This PR fixes that by replacing the appservice ID check with a check against the appservice namespace.
This also matches Synapse functionality, which I confirmed to allow appservices to auth as a user in their namespace, irregardless of how the user was registered.
* Also allow appservice itself to auth with user_id
Appservice user_id + access token check needs to work both when user_id is the appservice and when appservice has the user in their user namespace.
Signed-off-by: Jason Robinson <mail@jasonrobinson.me>
|
|
* Move config, setup, mscs into "setup" top-level folder
* oops, forgot the EDU server
* Add setup
* goimports
|
|
* Update last seen on sync requests
* Fix MSC2836 unit tests
* Only update once per minute
* Remove debug logging
* Configurable option
* Simplify updateLastSeen/cleanLastSeen
|
|
* Add last_used_ts and IP to database
* Add migrations
* Rename column
Prepare statements
* Add interface method and implement it
Signed-off-by: Till Faelligen <tfaelligen@gmail.com>
* Rename struct fields
* Add user_agent to database
* Add userAgent to registration calls
* Add missing "IF NOT EXISTS"
* use txn writer
* Add UserAgent to Device
Co-authored-by: Kegsay <kegan@matrix.org>
|
|
* Implement account deactivation
See #610
Signed-off-by: Loïck Bonniot <git@lesterpig.com>
* Rename 'is_active' to 'is_deactivated'
Signed-off-by: Loïck Bonniot <git@lesterpig.com>
Co-authored-by: Kegsay <kegan@matrix.org>
|
|
* User API support for password changes
* Password changes in client API
* Update sytest-whitelist
* Remove debug logging
* Default logout_devices to true
* Fix deleting devices by local part
|
|
* Remove device DB from clientapi
* Remove device DB from startup configuration
It's all an impl detail now in user API
|
|
* WIP: Eagerly sync device lists on /user/keys/query requests
Also notify servers when a user's device display name changes. Few
caveats:
- sytest `Device deletion propagates over federation` fails
- `populateResponseWithDeviceKeysFromDatabase` is called from multiple
goroutines and hence is unsafe.
* Handle deleted devices correctly over federation
|
|
* bugfix: when a user's key changes, don't notify everyone on the server
Instead just notify the users you share a room with.
* Update whitelist
|
|
* Fix New users appear in /keys/changes
* Create blank device keys when logging in on a new device
* Add PerformDeviceUpdate and fix a few bugs
- Correct device deletion query on sqlite
- Return no keys on /keys/query rather than an empty key
* Unbreak sqlite properly
* Use a real DB for currentstateserver integration tests
* Race fix
|
|
* Recheck device lists when join/leave events come in
* Add PerformDeviceDeletion
* Notify clients when devices are deleted
* Unbreak things
* Remove debug logging
|
|
* User directory
* Fix syncapi unit test
* Make user directory only show remote users you know about from your joined rooms
* Update sytest-whitelist
* Review comments
|
|
* Handle inbound /keys/claim and /keys/query requests
* Add display names to device key responses
* Linting
|
|
|
|
* Refactor account data
* Tweak database fetching
* Tweaks
* Restore syncProducer notification
* Various tweaks, update tag behaviour
* Fix initial sync
|
|
|
|
This makes a chokepoint with which we can finally fix
'database is locked' errors on sqlite during account creation
|
|
* BREAKING: Make eduserver/appservice use userapi
This is a breaking change because this PR restructures how the AS API
tracks its position in Kafka streams. Previously, it used the account DB
to store partition offsets. However, this is also being used by `clientapi`
for the same purpose, which is bad (each component needs to store offsets
independently or else you might lose messages across restarts). This PR
changes this behaviour to now store partition offsets in the `appservice`
database.
This means that:
- Upon restart, the `appservice` component will attempt to replay all
room events from the beginning of time.
- An additional table will be created in the appservice database, which
in and of itself is backwards compatible.
* Return ErrorConflict
|
|
* Make syncapi use userapi
* Unbreak things
* Fix tests
* Lint
|
|
Removes dependencies on account DB, device DB and ASAPI.
|
|
* Make userapi responsible for checking access tokens
There's still plenty of dependencies on account/device DBs, but this
is a start. This is a breaking change as it adds a required config
value `listen.user_api`.
* Cleanup
* Review comments and test fix
|
|
* Add bare bones user API
with tests!
* linting
|