Documentation ¶
Index ¶
- Constants
- func Backfill(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func ClaimOneTimeKeys(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func ErrorIfLocalServerNotInRoom(ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID string) *util.JSONResponse
- func GetEvent(ctx context.Context, request *fclient.FederationRequest, ...) util.JSONResponse
- func GetEventAuth(ctx context.Context, request *fclient.FederationRequest, ...) util.JSONResponse
- func GetMissingEvents(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func GetPostPublicRooms(req *http.Request, rsAPI roomserverAPI.FederationRoomserverAPI) util.JSONResponse
- func GetProfile(httpReq *http.Request, userAPI userapi.FederationUserAPI, ...) util.JSONResponse
- func GetState(ctx context.Context, request *fclient.FederationRequest, ...) util.JSONResponse
- func GetStateIDs(ctx context.Context, request *fclient.FederationRequest, ...) util.JSONResponse
- func GetUserDevices(req *http.Request, keyAPI api.FederationKeyAPI, userID string) util.JSONResponse
- func InviteV1(httpReq *http.Request, request *fclient.FederationRequest, roomID spec.RoomID, ...) util.JSONResponse
- func InviteV2(httpReq *http.Request, request *fclient.FederationRequest, roomID spec.RoomID, ...) util.JSONResponse
- func LocalKeys(cfg *config.FederationAPI, serverName spec.ServerName) util.JSONResponse
- func MakeFedAPI(metricsName string, serverName spec.ServerName, ...) http.Handler
- func MakeFedHTTPAPI(serverName spec.ServerName, isLocalServerName func(spec.ServerName) bool, ...) http.Handler
- func MakeJoin(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func MakeLeave(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func NotaryKeys(httpReq *http.Request, cfg *config.FederationAPI, ...) util.JSONResponse
- func QueryDeviceKeys(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func QueryRoomHierarchy(httpReq *http.Request, request *fclient.FederationRequest, roomIDStr string, ...) util.JSONResponse
- func RoomAliasToID(httpReq *http.Request, federation fclient.FederationClient, ...) util.JSONResponse
- func Send(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func SendJoin(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func SendLeave(httpReq *http.Request, request *fclient.FederationRequest, ...) util.JSONResponse
- func Setup(routers httputil.Routers, dendriteCfg *config.Dendrite, ...)
- func Version() util.JSONResponse
- type FederationWakeups
- type NotaryKeysResponse
- type PublicRoomReq
Constants ¶
const ( SendRouteName = "Send" QueryDirectoryRouteName = "QueryDirectory" QueryProfileRouteName = "QueryProfile" )
const ( // Event was passed to the Roomserver MetricsOutcomeOK = "ok" // Event failed to be processed MetricsOutcomeFail = "fail" // Event failed auth checks MetricsOutcomeRejected = "rejected" // Terminated the transaction MetricsOutcomeFatal = "fatal" // The event has missing auth_events we need to fetch MetricsWorkMissingAuthEvents = "missing_auth_events" // No work had to be done as we had all prev/auth events MetricsWorkDirect = "direct" // The event has missing prev_events we need to call /g_m_e for MetricsWorkMissingPrevEvents = "missing_prev_events" )
Variables ¶
This section is empty.
Functions ¶
func Backfill ¶
func Backfill( httpReq *http.Request, request *fclient.FederationRequest, rsAPI api.FederationRoomserverAPI, roomID string, cfg *config.FederationAPI, ) util.JSONResponse
Backfill implements the /backfill federation endpoint. https://matrix.org/docs/spec/server_server/unstable.html#get-matrix-federation-v1-backfill-roomid
func ClaimOneTimeKeys ¶
func ClaimOneTimeKeys( httpReq *http.Request, request *fclient.FederationRequest, keyAPI api.FederationKeyAPI, thisServer spec.ServerName, ) util.JSONResponse
ClaimOneTimeKeys claims OTKs for users on this server. https://matrix.org/docs/spec/server_server/latest#post-matrix-federation-v1-user-keys-claim
func ErrorIfLocalServerNotInRoom ¶
func ErrorIfLocalServerNotInRoom( ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID string, ) *util.JSONResponse
func GetEvent ¶
func GetEvent( ctx context.Context, request *fclient.FederationRequest, rsAPI api.FederationRoomserverAPI, eventID string, origin spec.ServerName, ) util.JSONResponse
GetEvent returns the requested event
func GetEventAuth ¶
func GetEventAuth( ctx context.Context, request *fclient.FederationRequest, rsAPI api.FederationRoomserverAPI, roomID string, eventID string, ) util.JSONResponse
GetEventAuth returns event auth for the roomID and eventID
func GetMissingEvents ¶
func GetMissingEvents( httpReq *http.Request, request *fclient.FederationRequest, rsAPI api.FederationRoomserverAPI, roomID string, ) util.JSONResponse
GetMissingEvents returns missing events between earliest_events & latest_events. Events are fetched from room DAG starting from latest_events until we reach earliest_events or the limit.
func GetPostPublicRooms ¶
func GetPostPublicRooms(req *http.Request, rsAPI roomserverAPI.FederationRoomserverAPI) util.JSONResponse
GetPostPublicRooms implements GET and POST /publicRooms
func GetProfile ¶
func GetProfile( httpReq *http.Request, userAPI userapi.FederationUserAPI, cfg *config.FederationAPI, ) util.JSONResponse
GetProfile implements GET /_matrix/federation/v1/query/profile
func GetState ¶
func GetState( ctx context.Context, request *fclient.FederationRequest, rsAPI api.FederationRoomserverAPI, roomID string, ) util.JSONResponse
GetState returns state events & auth events for the roomID, eventID
func GetStateIDs ¶
func GetStateIDs( ctx context.Context, request *fclient.FederationRequest, rsAPI api.FederationRoomserverAPI, roomID string, ) util.JSONResponse
GetStateIDs returns state event IDs & auth event IDs for the roomID, eventID
func GetUserDevices ¶
func GetUserDevices( req *http.Request, keyAPI api.FederationKeyAPI, userID string, ) util.JSONResponse
GetUserDevices for the given user id
func InviteV1 ¶
func InviteV1( httpReq *http.Request, request *fclient.FederationRequest, roomID spec.RoomID, eventID string, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keys gomatrixserverlib.JSONVerifier, ) util.JSONResponse
InviteV1 implements /_matrix/federation/v1/invite/{roomID}/{eventID}
func InviteV2 ¶
func InviteV2( httpReq *http.Request, request *fclient.FederationRequest, roomID spec.RoomID, eventID string, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keys gomatrixserverlib.JSONVerifier, ) util.JSONResponse
InviteV2 implements /_matrix/federation/v2/invite/{roomID}/{eventID}
func LocalKeys ¶
func LocalKeys(cfg *config.FederationAPI, serverName spec.ServerName) util.JSONResponse
LocalKeys returns the local keys for the server. See https://matrix.org/docs/spec/server_server/unstable.html#publishing-keys
func MakeFedAPI ¶
func MakeFedAPI( metricsName string, serverName spec.ServerName, isLocalServerName func(spec.ServerName) bool, keyRing gomatrixserverlib.JSONVerifier, wakeup *FederationWakeups, f func(*http.Request, *fclient.FederationRequest, map[string]string) util.JSONResponse, ) http.Handler
MakeFedAPI makes an http.Handler that checks matrix federation authentication.
func MakeFedHTTPAPI ¶
func MakeFedHTTPAPI( serverName spec.ServerName, isLocalServerName func(spec.ServerName) bool, keyRing gomatrixserverlib.JSONVerifier, f func(http.ResponseWriter, *http.Request), ) http.Handler
MakeFedHTTPAPI makes an http.Handler that checks matrix federation authentication.
func MakeJoin ¶
func MakeJoin( httpReq *http.Request, request *fclient.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, roomID spec.RoomID, userID spec.UserID, remoteVersions []gomatrixserverlib.RoomVersion, ) util.JSONResponse
MakeJoin implements the /make_join API
func MakeLeave ¶
func MakeLeave( httpReq *http.Request, request *fclient.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, roomID spec.RoomID, userID spec.UserID, ) util.JSONResponse
MakeLeave implements the /make_leave API
func NotaryKeys ¶
func NotaryKeys( httpReq *http.Request, cfg *config.FederationAPI, fsAPI federationAPI.FederationInternalAPI, req *gomatrixserverlib.PublicKeyNotaryLookupRequest, ) util.JSONResponse
func QueryDeviceKeys ¶
func QueryDeviceKeys( httpReq *http.Request, request *fclient.FederationRequest, keyAPI api.FederationKeyAPI, thisServer spec.ServerName, ) util.JSONResponse
QueryDeviceKeys returns device keys for users on this server. https://matrix.org/docs/spec/server_server/latest#post-matrix-federation-v1-user-keys-query
func QueryRoomHierarchy ¶
func QueryRoomHierarchy(httpReq *http.Request, request *fclient.FederationRequest, roomIDStr string, rsAPI roomserverAPI.FederationRoomserverAPI) util.JSONResponse
Query the immediate children of a room/space
Implements /_matrix/federation/v1/hierarchy/{roomID}
func RoomAliasToID ¶
func RoomAliasToID( httpReq *http.Request, federation fclient.FederationClient, cfg *config.FederationAPI, rsAPI roomserverAPI.FederationRoomserverAPI, senderAPI federationAPI.FederationInternalAPI, ) util.JSONResponse
RoomAliasToID converts the queried alias into a room ID and returns it
func Send ¶
func Send( httpReq *http.Request, request *fclient.FederationRequest, txnID gomatrixserverlib.TransactionID, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keyAPI userAPI.FederationUserAPI, keys gomatrixserverlib.JSONVerifier, federation fclient.FederationClient, mu *internal.MutexByRoom, producer *producers.SyncAPIProducer, ) util.JSONResponse
Send implements /_matrix/federation/v1/send/{txnID}
func SendJoin ¶
func SendJoin( httpReq *http.Request, request *fclient.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keys gomatrixserverlib.JSONVerifier, roomID spec.RoomID, eventID string, ) util.JSONResponse
SendJoin implements the /send_join API
func SendLeave ¶
func SendLeave( httpReq *http.Request, request *fclient.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keys gomatrixserverlib.JSONVerifier, roomID, eventID string, ) util.JSONResponse
SendLeave implements the /send_leave API nolint:gocyclo
func Setup ¶
func Setup( routers httputil.Routers, dendriteCfg *config.Dendrite, rsAPI roomserverAPI.FederationRoomserverAPI, fsAPI *fedInternal.FederationInternalAPI, keys gomatrixserverlib.JSONVerifier, federation fclient.FederationClient, userAPI userapi.FederationUserAPI, mscCfg *config.MSCs, producer *producers.SyncAPIProducer, enableMetrics bool, )
Setup registers HTTP handlers with the given ServeMux. The provided publicAPIMux MUST have `UseEncodedPath()` enabled or else routes will incorrectly path unescape twice (once from the router, once from MakeFedAPI). We need to have this enabled so we can decode paths like foo/bar%2Fbaz as [foo, bar/baz] - by default it will decode to [foo, bar, baz]
Due to Setup being used to call many other functions, a gocyclo nolint is applied: nolint: gocyclo
Types ¶
type FederationWakeups ¶
type FederationWakeups struct { FsAPI *fedInternal.FederationInternalAPI // contains filtered or unexported fields }
func (*FederationWakeups) Wakeup ¶
func (f *FederationWakeups) Wakeup(ctx context.Context, origin spec.ServerName)
type NotaryKeysResponse ¶
type NotaryKeysResponse struct {
ServerKeys []json.RawMessage `json:"server_keys"`
}