Documentation ¶
Index ¶
- Constants
- func Backfill(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func ClaimOneTimeKeys(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func CreateInvitesFrom3PIDInvites(req *http.Request, rsAPI api.FederationRoomserverAPI, ...) util.JSONResponse
- func ErrorIfLocalServerNotInRoom(ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID string) *util.JSONResponse
- func ExchangeThirdPartyInvite(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func GetEvent(ctx context.Context, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func GetEventAuth(ctx context.Context, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func GetMissingEvents(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func GetOpenIDUserInfo(httpReq *http.Request, userAPI userapi.FederationUserAPI) 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 *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func GetStateIDs(ctx context.Context, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func GetUserDevices(req *http.Request, keyAPI keyapi.FederationKeyAPI, userID string) util.JSONResponse
- func InviteV1(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func InviteV2(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func LocalKeys(cfg *config.FederationAPI) util.JSONResponse
- func MakeFedAPI(metricsName string, serverName gomatrixserverlib.ServerName, ...) http.Handler
- func MakeJoin(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func MakeLeave(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func NotaryKeys(httpReq *http.Request, cfg *config.FederationAPI, ...) util.JSONResponse
- func Peek(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func QueryDeviceKeys(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func RoomAliasToID(httpReq *http.Request, federation federationAPI.FederationClient, ...) util.JSONResponse
- func Send(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func SendJoin(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func SendLeave(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, ...) util.JSONResponse
- func Setup(fedMux, keyMux, wkMux *mux.Router, cfg *config.FederationAPI, ...)
- func Version() util.JSONResponse
- type FederationWakeups
- type PublicRoomReq
Constants ¶
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 *gomatrixserverlib.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 *gomatrixserverlib.FederationRequest, keyAPI api.FederationKeyAPI, thisServer gomatrixserverlib.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 CreateInvitesFrom3PIDInvites ¶
func CreateInvitesFrom3PIDInvites( req *http.Request, rsAPI api.FederationRoomserverAPI, cfg *config.FederationAPI, federation federationAPI.FederationClient, userAPI userapi.FederationUserAPI, ) util.JSONResponse
CreateInvitesFrom3PIDInvites implements POST /_matrix/federation/v1/3pid/onbind
func ErrorIfLocalServerNotInRoom ¶ added in v0.8.3
func ErrorIfLocalServerNotInRoom( ctx context.Context, rsAPI api.FederationRoomserverAPI, roomID string, ) *util.JSONResponse
func ExchangeThirdPartyInvite ¶
func ExchangeThirdPartyInvite( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, roomID string, rsAPI api.FederationRoomserverAPI, cfg *config.FederationAPI, federation federationAPI.FederationClient, ) util.JSONResponse
ExchangeThirdPartyInvite implements PUT /_matrix/federation/v1/exchange_third_party_invite/{roomID}
func GetEvent ¶
func GetEvent( ctx context.Context, request *gomatrixserverlib.FederationRequest, rsAPI api.FederationRoomserverAPI, eventID string, origin gomatrixserverlib.ServerName, ) util.JSONResponse
GetEvent returns the requested event
func GetEventAuth ¶
func GetEventAuth( ctx context.Context, request *gomatrixserverlib.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 *gomatrixserverlib.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 GetOpenIDUserInfo ¶ added in v0.4.0
func GetOpenIDUserInfo( httpReq *http.Request, userAPI userapi.FederationUserAPI, ) util.JSONResponse
GetOpenIDUserInfo implements GET /_matrix/federation/v1/openid/userinfo
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 *gomatrixserverlib.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 *gomatrixserverlib.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 keyapi.FederationKeyAPI, userID string, ) util.JSONResponse
GetUserDevices for the given user id
func InviteV1 ¶
func InviteV1( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, roomID string, 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 *gomatrixserverlib.FederationRequest, roomID string, 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) util.JSONResponse
LocalKeys returns the local keys for the server. See https://matrix.org/docs/spec/server_server/unstable.html#publishing-keys
func MakeFedAPI ¶ added in v0.8.3
func MakeFedAPI( metricsName string, serverName gomatrixserverlib.ServerName, keyRing gomatrixserverlib.JSONVerifier, wakeup *FederationWakeups, f func(*http.Request, *gomatrixserverlib.FederationRequest, map[string]string) util.JSONResponse, ) http.Handler
MakeFedAPI makes an http.Handler that checks matrix federation authentication.
func MakeJoin ¶
func MakeJoin( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, roomID, userID string, remoteVersions []gomatrixserverlib.RoomVersion, ) util.JSONResponse
MakeJoin implements the /make_join API
func MakeLeave ¶
func MakeLeave( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, roomID, userID string, ) 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 Peek ¶ added in v0.3.7
func Peek( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, roomID, peekID string, remoteVersions []gomatrixserverlib.RoomVersion, ) util.JSONResponse
Peek implements the SS /peek API, handling inbound peeks
func QueryDeviceKeys ¶
func QueryDeviceKeys( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, keyAPI api.FederationKeyAPI, thisServer gomatrixserverlib.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 RoomAliasToID ¶
func RoomAliasToID( httpReq *http.Request, federation federationAPI.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 *gomatrixserverlib.FederationRequest, txnID gomatrixserverlib.TransactionID, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keyAPI keyapi.FederationKeyAPI, keys gomatrixserverlib.JSONVerifier, federation federationAPI.FederationClient, mu *internal.MutexByRoom, servers federationAPI.ServersInRoomProvider, producer *producers.SyncAPIProducer, ) util.JSONResponse
Send implements /_matrix/federation/v1/send/{txnID}
func SendJoin ¶
func SendJoin( httpReq *http.Request, request *gomatrixserverlib.FederationRequest, cfg *config.FederationAPI, rsAPI api.FederationRoomserverAPI, keys gomatrixserverlib.JSONVerifier, roomID, eventID string, ) util.JSONResponse
SendJoin implements the /send_join API The make-join send-join dance makes much more sense as a single flow so the cyclomatic complexity is high: nolint:gocyclo
func SendLeave ¶
func SendLeave( httpReq *http.Request, request *gomatrixserverlib.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( fedMux, keyMux, wkMux *mux.Router, cfg *config.FederationAPI, rsAPI roomserverAPI.FederationRoomserverAPI, fsAPI *fedInternal.FederationInternalAPI, keys gomatrixserverlib.JSONVerifier, federation federationAPI.FederationClient, userAPI userapi.FederationUserAPI, keyAPI keyserverAPI.FederationKeyAPI, mscCfg *config.MSCs, servers federationAPI.ServersInRoomProvider, producer *producers.SyncAPIProducer, )
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 ¶ added in v0.8.3
type FederationWakeups struct { FsAPI *fedInternal.FederationInternalAPI // contains filtered or unexported fields }
func (*FederationWakeups) Wakeup ¶ added in v0.8.3
func (f *FederationWakeups) Wakeup(ctx context.Context, origin gomatrixserverlib.ServerName)