diff options
Diffstat (limited to 'keyserver')
-rw-r--r-- | keyserver/keyserver.go | 32 | ||||
-rw-r--r-- | keyserver/routing/keys.go | 33 | ||||
-rw-r--r-- | keyserver/routing/routing.go | 56 |
3 files changed, 121 insertions, 0 deletions
diff --git a/keyserver/keyserver.go b/keyserver/keyserver.go new file mode 100644 index 00000000..1e0d5cb4 --- /dev/null +++ b/keyserver/keyserver.go @@ -0,0 +1,32 @@ +// Copyright 2020 The Matrix.org Foundation C.I.C. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package keyserver + +import ( + "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts" + "github.com/matrix-org/dendrite/clientapi/auth/storage/devices" + "github.com/matrix-org/dendrite/common/basecomponent" + "github.com/matrix-org/dendrite/keyserver/routing" +) + +// SetupFederationSenderComponent sets up and registers HTTP handlers for the +// FederationSender component. +func SetupKeyServerComponent( + base *basecomponent.BaseDendrite, + deviceDB devices.Database, + accountsDB accounts.Database, +) { + routing.Setup(base.APIMux, base.Cfg, accountsDB, deviceDB) +} diff --git a/keyserver/routing/keys.go b/keyserver/routing/keys.go new file mode 100644 index 00000000..a279a747 --- /dev/null +++ b/keyserver/routing/keys.go @@ -0,0 +1,33 @@ +// Copyright 2020 The Matrix.org Foundation C.I.C. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package routing + +import ( + "net/http" + + "github.com/matrix-org/util" +) + +func QueryKeys( + req *http.Request, +) util.JSONResponse { + return util.JSONResponse{ + Code: http.StatusOK, + JSON: map[string]interface{}{ + "failures": map[string]interface{}{}, + "device_keys": map[string]interface{}{}, + }, + } +} diff --git a/keyserver/routing/routing.go b/keyserver/routing/routing.go new file mode 100644 index 00000000..d79ce6d4 --- /dev/null +++ b/keyserver/routing/routing.go @@ -0,0 +1,56 @@ +// Copyright 2020 The Matrix.org Foundation C.I.C. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package routing + +import ( + "net/http" + + "github.com/gorilla/mux" + "github.com/matrix-org/dendrite/clientapi/auth" + "github.com/matrix-org/dendrite/clientapi/auth/authtypes" + "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts" + "github.com/matrix-org/dendrite/clientapi/auth/storage/devices" + "github.com/matrix-org/dendrite/common" + "github.com/matrix-org/dendrite/common/config" + "github.com/matrix-org/util" +) + +const pathPrefixR0 = "/_matrix/client/r0" + +// Setup registers HTTP handlers with the given ServeMux. It also supplies the given http.Client +// to clients which need to make outbound HTTP requests. +// +// Due to Setup being used to call many other functions, a gocyclo nolint is +// applied: +// nolint: gocyclo +func Setup( + apiMux *mux.Router, cfg *config.Dendrite, + accountDB accounts.Database, + deviceDB devices.Database, +) { + r0mux := apiMux.PathPrefix(pathPrefixR0).Subrouter() + + authData := auth.Data{ + AccountDB: accountDB, + DeviceDB: deviceDB, + AppServices: cfg.Derived.ApplicationServices, + } + + r0mux.Handle("/keys/query", + common.MakeAuthAPI("queryKeys", authData, func(req *http.Request, device *authtypes.Device) util.JSONResponse { + return QueryKeys(req) + }), + ).Methods(http.MethodPost, http.MethodOptions) +} |