aboutsummaryrefslogtreecommitdiff
path: root/federationapi/routing/routing.go
diff options
context:
space:
mode:
Diffstat (limited to 'federationapi/routing/routing.go')
-rw-r--r--federationapi/routing/routing.go38
1 files changed, 34 insertions, 4 deletions
diff --git a/federationapi/routing/routing.go b/federationapi/routing/routing.go
index c957e26d..7e76a143 100644
--- a/federationapi/routing/routing.go
+++ b/federationapi/routing/routing.go
@@ -229,7 +229,37 @@ func Setup(
},
)).Methods(http.MethodGet)
- v1fedmux.Handle("/make_join/{roomID}/{eventID}", httputil.MakeFedAPI(
+ v1fedmux.Handle("/peek/{roomID}/{peekID}", httputil.MakeFedAPI(
+ "federation_peek", cfg.Matrix.ServerName, keys, wakeup,
+ func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, vars map[string]string) util.JSONResponse {
+ if roomserverAPI.IsServerBannedFromRoom(httpReq.Context(), rsAPI, vars["roomID"], request.Origin()) {
+ return util.JSONResponse{
+ Code: http.StatusForbidden,
+ JSON: jsonerror.Forbidden("Forbidden by server ACLs"),
+ }
+ }
+ roomID := vars["roomID"]
+ peekID := vars["peekID"]
+ queryVars := httpReq.URL.Query()
+ remoteVersions := []gomatrixserverlib.RoomVersion{}
+ if vers, ok := queryVars["ver"]; ok {
+ // The remote side supplied a ?ver= so use that to build up the list
+ // of supported room versions
+ for _, v := range vers {
+ remoteVersions = append(remoteVersions, gomatrixserverlib.RoomVersion(v))
+ }
+ } else {
+ // The remote side didn't supply a ?ver= so just assume that they only
+ // support room version 1
+ remoteVersions = append(remoteVersions, gomatrixserverlib.RoomVersionV1)
+ }
+ return Peek(
+ httpReq, request, cfg, rsAPI, roomID, peekID, remoteVersions,
+ )
+ },
+ )).Methods(http.MethodPut, http.MethodDelete)
+
+ v1fedmux.Handle("/make_join/{roomID}/{userID}", httputil.MakeFedAPI(
"federation_make_join", cfg.Matrix.ServerName, keys, wakeup,
func(httpReq *http.Request, request *gomatrixserverlib.FederationRequest, vars map[string]string) util.JSONResponse {
if roomserverAPI.IsServerBannedFromRoom(httpReq.Context(), rsAPI, vars["roomID"], request.Origin()) {
@@ -239,11 +269,11 @@ func Setup(
}
}
roomID := vars["roomID"]
- eventID := vars["eventID"]
+ userID := vars["userID"]
queryVars := httpReq.URL.Query()
remoteVersions := []gomatrixserverlib.RoomVersion{}
if vers, ok := queryVars["ver"]; ok {
- // The remote side supplied a ?=ver so use that to build up the list
+ // The remote side supplied a ?ver= so use that to build up the list
// of supported room versions
for _, v := range vers {
remoteVersions = append(remoteVersions, gomatrixserverlib.RoomVersion(v))
@@ -255,7 +285,7 @@ func Setup(
remoteVersions = append(remoteVersions, gomatrixserverlib.RoomVersionV1)
}
return MakeJoin(
- httpReq, request, cfg, rsAPI, roomID, eventID, remoteVersions,
+ httpReq, request, cfg, rsAPI, roomID, userID, remoteVersions,
)
},
)).Methods(http.MethodGet)