mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-06 14:33:10 -06:00
Squashed commit of the following: commitb5c55faf98Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 12:00:32 2022 +0100 Version 0.8.9 (#2549) * Version 0.8.9 * Update changelog commitb50a24c666Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 10:54:07 2022 +0100 Roomserver producers package (#2546) * Give the roomserver a producers package * Change init point * Populate ACLs API * Fix build issues * `RoomEventProducer` naming commit89cd0e8fc1Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Fri Jul 1 11:49:26 2022 +0200 Try to fix backfilling (#2548) * Try to fix backfilling * Return start/end to not confuse clients * Update GMSL * Update GMSL commit086f182e24Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 09:50:06 2022 +0100 Disable WebAssembly builds for now commit54bed4c593Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jul 1 09:37:54 2022 +0100 Blacklist `Guest users can join guest_access rooms` test until it can be investigated commit561c159ad7Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Thu Jun 30 12:34:37 2022 +0200 Silence presence logs (#2547) commit519bc1124bAuthor: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jun 29 15:29:39 2022 +0100 Add `evacuateUser` endpoint, use it when deactivating accounts (#2545) * Add `evacuateUser` endpoint, use it when deactivating accounts * Populate the API * Clean up user devices when deactivating * Include invites, delete pushers commit2dea466685Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jun 29 12:32:24 2022 +0100 Return an error if trying to invite a malformed user ID (#2543) commit2086992cafAuthor: Till <2353100+S7evinK@users.noreply.github.com> Date: Wed Jun 29 10:49:12 2022 +0200 Don't return `end` if there are not more messages (#2542) * Be more spec compliant * Move lazyLoadMembers to own method commit920a20821bAuthor: Jean Lucas <jean@4ray.co> Date: Mon Jun 27 04:15:19 2022 -0400 Fix nats.go commit (#2540) Signed-off-by: Jean Lucas <jean@4ray.co> commit7120eb6bc9Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jun 15 14:27:07 2022 +0100 Add `InputDeviceListUpdate` to the keyserver, remove old input API (#2536) * Add `InputDeviceListUpdate` to the keyserver, remove old input API * Fix copyright * Log more information when a device list update fails commit1b90cc9536Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Wed Jun 15 12:50:02 2022 +0200 Fix rare panic when returning user devices over federation (#2534) commit4c2a10f1a6Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Mon Jun 13 15:11:10 2022 +0100 Handle state before, send history visibility in output (#2532) * Check state before event * Tweaks * Refactor a bit, include in output events * Don't waste time if soft failed either * Tweak control flow, comments, use GMSL history visibility type commitc500958583Author: Emanuele Aliberti <dev@mtka.eu> Date: Mon Jun 13 13:08:46 2022 +0200 generic CaddyFile in front of Dendrite (monolith) (#2531) for Caddy 2.5.x Co-authored-by: emanuele.aliberti <emanuele.aliberti@mtka.eu> commite1136f4d3eAuthor: Till Faelligen <davidf@element.io> Date: Mon Jun 13 11:46:59 2022 +0200 Make the linter happy again commit0a7f7dc716Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Mon Jun 13 10:16:30 2022 +0100 Add `--difference` to `resolve-state` tool commit89d2adadbdAuthor: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:58:04 2022 +0100 Attempt to raise the file descriptor limit at startup (#2527) commit1030072285Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:18:32 2022 +0100 Rename the page to "Optimise your installation" commit16ed1633b6Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:15:14 2022 +0100 Highlighting in docs commite2a64773ceAuthor: Neil Alexander <neilalexander@users.noreply.github.com> Date: Fri Jun 10 10:14:15 2022 +0100 Add new next steps page to the documentation commit660f7839f5Author: Till <2353100+S7evinK@users.noreply.github.com> Date: Thu Jun 9 18:38:07 2022 +0200 Correctly redact events over federation (#2526) * Ensure we check powerlevel/origin before redacting an event * Add passing test * Use pl.UserLevel * Make check more readable, also check for the sender
191 lines
9.1 KiB
Go
191 lines
9.1 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/matrix-org/gomatrixserverlib"
|
|
|
|
asAPI "github.com/matrix-org/dendrite/appservice/api"
|
|
fsAPI "github.com/matrix-org/dendrite/federationapi/api"
|
|
userapi "github.com/matrix-org/dendrite/userapi/api"
|
|
)
|
|
|
|
// RoomserverInputAPI is used to write events to the room server.
|
|
type RoomserverInternalAPI interface {
|
|
SyncRoomserverAPI
|
|
AppserviceRoomserverAPI
|
|
ClientRoomserverAPI
|
|
UserRoomserverAPI
|
|
FederationRoomserverAPI
|
|
|
|
// needed to avoid chicken and egg scenario when setting up the
|
|
// interdependencies between the roomserver and other input APIs
|
|
SetFederationAPI(fsAPI fsAPI.RoomserverFederationAPI, keyRing *gomatrixserverlib.KeyRing)
|
|
SetAppserviceAPI(asAPI asAPI.AppServiceInternalAPI)
|
|
SetUserAPI(userAPI userapi.RoomserverUserAPI)
|
|
|
|
// QueryAuthChain returns the entire auth chain for the event IDs given.
|
|
// The response includes the events in the request.
|
|
// Omits without error for any missing auth events. There will be no duplicates.
|
|
// Used in MSC2836.
|
|
QueryAuthChain(
|
|
ctx context.Context,
|
|
req *QueryAuthChainRequest,
|
|
res *QueryAuthChainResponse,
|
|
) error
|
|
}
|
|
|
|
type InputRoomEventsAPI interface {
|
|
InputRoomEvents(
|
|
ctx context.Context,
|
|
req *InputRoomEventsRequest,
|
|
res *InputRoomEventsResponse,
|
|
)
|
|
}
|
|
|
|
// Query the latest events and state for a room from the room server.
|
|
type QueryLatestEventsAndStateAPI interface {
|
|
QueryLatestEventsAndState(ctx context.Context, req *QueryLatestEventsAndStateRequest, res *QueryLatestEventsAndStateResponse) error
|
|
}
|
|
|
|
// QueryBulkStateContent does a bulk query for state event content in the given rooms.
|
|
type QueryBulkStateContentAPI interface {
|
|
QueryBulkStateContent(ctx context.Context, req *QueryBulkStateContentRequest, res *QueryBulkStateContentResponse) error
|
|
}
|
|
|
|
type QueryEventsAPI interface {
|
|
// Query a list of events by event ID.
|
|
QueryEventsByID(
|
|
ctx context.Context,
|
|
req *QueryEventsByIDRequest,
|
|
res *QueryEventsByIDResponse,
|
|
) error
|
|
// QueryCurrentState retrieves the requested state events. If state events are not found, they will be missing from
|
|
// the response.
|
|
QueryCurrentState(ctx context.Context, req *QueryCurrentStateRequest, res *QueryCurrentStateResponse) error
|
|
}
|
|
|
|
// API functions required by the syncapi
|
|
type SyncRoomserverAPI interface {
|
|
QueryLatestEventsAndStateAPI
|
|
QueryBulkStateContentAPI
|
|
// QuerySharedUsers returns a list of users who share at least 1 room in common with the given user.
|
|
QuerySharedUsers(ctx context.Context, req *QuerySharedUsersRequest, res *QuerySharedUsersResponse) error
|
|
// Query a list of events by event ID.
|
|
QueryEventsByID(
|
|
ctx context.Context,
|
|
req *QueryEventsByIDRequest,
|
|
res *QueryEventsByIDResponse,
|
|
) error
|
|
// Query the membership event for an user for a room.
|
|
QueryMembershipForUser(
|
|
ctx context.Context,
|
|
req *QueryMembershipForUserRequest,
|
|
res *QueryMembershipForUserResponse,
|
|
) error
|
|
|
|
// Query the state after a list of events in a room from the room server.
|
|
QueryStateAfterEvents(
|
|
ctx context.Context,
|
|
req *QueryStateAfterEventsRequest,
|
|
res *QueryStateAfterEventsResponse,
|
|
) error
|
|
|
|
// Query a given amount (or less) of events prior to a given set of events.
|
|
PerformBackfill(
|
|
ctx context.Context,
|
|
req *PerformBackfillRequest,
|
|
res *PerformBackfillResponse,
|
|
) error
|
|
}
|
|
|
|
type AppserviceRoomserverAPI interface {
|
|
// Query a list of events by event ID.
|
|
QueryEventsByID(
|
|
ctx context.Context,
|
|
req *QueryEventsByIDRequest,
|
|
res *QueryEventsByIDResponse,
|
|
) error
|
|
// Query a list of membership events for a room
|
|
QueryMembershipsForRoom(
|
|
ctx context.Context,
|
|
req *QueryMembershipsForRoomRequest,
|
|
res *QueryMembershipsForRoomResponse,
|
|
) error
|
|
// Get all known aliases for a room ID
|
|
GetAliasesForRoomID(
|
|
ctx context.Context,
|
|
req *GetAliasesForRoomIDRequest,
|
|
res *GetAliasesForRoomIDResponse,
|
|
) error
|
|
}
|
|
|
|
type ClientRoomserverAPI interface {
|
|
InputRoomEventsAPI
|
|
QueryLatestEventsAndStateAPI
|
|
QueryBulkStateContentAPI
|
|
QueryEventsAPI
|
|
QueryMembershipForUser(ctx context.Context, req *QueryMembershipForUserRequest, res *QueryMembershipForUserResponse) error
|
|
QueryMembershipsForRoom(ctx context.Context, req *QueryMembershipsForRoomRequest, res *QueryMembershipsForRoomResponse) error
|
|
QueryRoomsForUser(ctx context.Context, req *QueryRoomsForUserRequest, res *QueryRoomsForUserResponse) error
|
|
QueryStateAfterEvents(ctx context.Context, req *QueryStateAfterEventsRequest, res *QueryStateAfterEventsResponse) error
|
|
// QueryKnownUsers returns a list of users that we know about from our joined rooms.
|
|
QueryKnownUsers(ctx context.Context, req *QueryKnownUsersRequest, res *QueryKnownUsersResponse) error
|
|
QueryRoomVersionForRoom(ctx context.Context, req *QueryRoomVersionForRoomRequest, res *QueryRoomVersionForRoomResponse) error
|
|
QueryPublishedRooms(ctx context.Context, req *QueryPublishedRoomsRequest, res *QueryPublishedRoomsResponse) error
|
|
QueryRoomVersionCapabilities(ctx context.Context, req *QueryRoomVersionCapabilitiesRequest, res *QueryRoomVersionCapabilitiesResponse) error
|
|
|
|
GetRoomIDForAlias(ctx context.Context, req *GetRoomIDForAliasRequest, res *GetRoomIDForAliasResponse) error
|
|
GetAliasesForRoomID(ctx context.Context, req *GetAliasesForRoomIDRequest, res *GetAliasesForRoomIDResponse) error
|
|
|
|
// PerformRoomUpgrade upgrades a room to a newer version
|
|
PerformRoomUpgrade(ctx context.Context, req *PerformRoomUpgradeRequest, resp *PerformRoomUpgradeResponse)
|
|
PerformAdminEvacuateRoom(ctx context.Context, req *PerformAdminEvacuateRoomRequest, res *PerformAdminEvacuateRoomResponse)
|
|
PerformAdminEvacuateUser(ctx context.Context, req *PerformAdminEvacuateUserRequest, res *PerformAdminEvacuateUserResponse)
|
|
PerformPeek(ctx context.Context, req *PerformPeekRequest, res *PerformPeekResponse)
|
|
PerformUnpeek(ctx context.Context, req *PerformUnpeekRequest, res *PerformUnpeekResponse)
|
|
PerformInvite(ctx context.Context, req *PerformInviteRequest, res *PerformInviteResponse) error
|
|
PerformJoin(ctx context.Context, req *PerformJoinRequest, res *PerformJoinResponse)
|
|
PerformLeave(ctx context.Context, req *PerformLeaveRequest, res *PerformLeaveResponse) error
|
|
PerformPublish(ctx context.Context, req *PerformPublishRequest, res *PerformPublishResponse)
|
|
// PerformForget forgets a rooms history for a specific user
|
|
PerformForget(ctx context.Context, req *PerformForgetRequest, resp *PerformForgetResponse) error
|
|
SetRoomAlias(ctx context.Context, req *SetRoomAliasRequest, res *SetRoomAliasResponse) error
|
|
RemoveRoomAlias(ctx context.Context, req *RemoveRoomAliasRequest, res *RemoveRoomAliasResponse) error
|
|
}
|
|
|
|
type UserRoomserverAPI interface {
|
|
QueryLatestEventsAndStateAPI
|
|
QueryCurrentState(ctx context.Context, req *QueryCurrentStateRequest, res *QueryCurrentStateResponse) error
|
|
QueryMembershipsForRoom(ctx context.Context, req *QueryMembershipsForRoomRequest, res *QueryMembershipsForRoomResponse) error
|
|
PerformAdminEvacuateUser(ctx context.Context, req *PerformAdminEvacuateUserRequest, res *PerformAdminEvacuateUserResponse)
|
|
}
|
|
|
|
type FederationRoomserverAPI interface {
|
|
InputRoomEventsAPI
|
|
QueryLatestEventsAndStateAPI
|
|
QueryBulkStateContentAPI
|
|
// QueryServerBannedFromRoom returns whether a server is banned from a room by server ACLs.
|
|
QueryServerBannedFromRoom(ctx context.Context, req *QueryServerBannedFromRoomRequest, res *QueryServerBannedFromRoomResponse) error
|
|
QueryRoomVersionForRoom(ctx context.Context, req *QueryRoomVersionForRoomRequest, res *QueryRoomVersionForRoomResponse) error
|
|
GetRoomIDForAlias(ctx context.Context, req *GetRoomIDForAliasRequest, res *GetRoomIDForAliasResponse) error
|
|
QueryEventsByID(ctx context.Context, req *QueryEventsByIDRequest, res *QueryEventsByIDResponse) error
|
|
// Query to get state and auth chain for a (potentially hypothetical) event.
|
|
// Takes lists of PrevEventIDs and AuthEventsIDs and uses them to calculate
|
|
// the state and auth chain to return.
|
|
QueryStateAndAuthChain(ctx context.Context, req *QueryStateAndAuthChainRequest, res *QueryStateAndAuthChainResponse) error
|
|
// Query if we think we're still in a room.
|
|
QueryServerJoinedToRoom(ctx context.Context, req *QueryServerJoinedToRoomRequest, res *QueryServerJoinedToRoomResponse) error
|
|
QueryPublishedRooms(ctx context.Context, req *QueryPublishedRoomsRequest, res *QueryPublishedRoomsResponse) error
|
|
// Query missing events for a room from roomserver
|
|
QueryMissingEvents(ctx context.Context, req *QueryMissingEventsRequest, res *QueryMissingEventsResponse) error
|
|
// Query whether a server is allowed to see an event
|
|
QueryServerAllowedToSeeEvent(ctx context.Context, req *QueryServerAllowedToSeeEventRequest, res *QueryServerAllowedToSeeEventResponse) error
|
|
QueryRoomsForUser(ctx context.Context, req *QueryRoomsForUserRequest, res *QueryRoomsForUserResponse) error
|
|
QueryRestrictedJoinAllowed(ctx context.Context, req *QueryRestrictedJoinAllowedRequest, res *QueryRestrictedJoinAllowedResponse) error
|
|
PerformInboundPeek(ctx context.Context, req *PerformInboundPeekRequest, res *PerformInboundPeekResponse) error
|
|
PerformInvite(ctx context.Context, req *PerformInviteRequest, res *PerformInviteResponse) error
|
|
// Query a given amount (or less) of events prior to a given set of events.
|
|
PerformBackfill(ctx context.Context, req *PerformBackfillRequest, res *PerformBackfillResponse) error
|
|
}
|