aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorS7evinK <tfaelligen@gmail.com>2021-12-03 18:18:35 +0100
committerGitHub <noreply@github.com>2021-12-03 17:18:35 +0000
commit08a0278760b6d64ccacdb9ab47cd468f80243c57 (patch)
tree1ba1dc2606f38892a7c995484bbea85560a094e4 /cmd
parentf9bac2f78aaed91a77cc1fe455a05899be2e2a12 (diff)
Add missing HTTP mode for userapi (#1982)
* Add missing internal api endpoint Signed-off-by: Till Faelligen <tfaelligen@gmail.com> * Add missing performKeyBackup endpoint * Add missing http mode for userapi * Fix failing tests * Add error checks * Fix sytest * Update startup logic for HTTP mode * Use userImpl for AS (annoying) * Don't send device list updates for appservice devices * Fix build Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/dendrite-monolith-server/main.go41
1 files changed, 28 insertions, 13 deletions
diff --git a/cmd/dendrite-monolith-server/main.go b/cmd/dendrite-monolith-server/main.go
index 0e55e7ba..1f85cae9 100644
--- a/cmd/dendrite-monolith-server/main.go
+++ b/cmd/dendrite-monolith-server/main.go
@@ -67,6 +67,7 @@ func main() {
cfg.MediaAPI.InternalAPI.Connect = httpAPIAddr
cfg.RoomServer.InternalAPI.Connect = httpAPIAddr
cfg.SyncAPI.InternalAPI.Connect = httpAPIAddr
+ cfg.UserAPI.InternalAPI.Connect = httpAPIAddr
options = append(options, basepkg.UseHTTPAPIs)
}
@@ -102,20 +103,41 @@ func main() {
// This is different to rsAPI which can be the http client which doesn't need this dependency
rsImpl.SetFederationAPI(fsAPI)
- keyAPI := keyserver.NewInternalAPI(base, &base.Cfg.KeyServer, fsAPI)
- userAPI := userapi.NewInternalAPI(accountDB, &cfg.UserAPI, cfg.Derived.ApplicationServices, keyAPI)
- keyAPI.SetUserAPI(userAPI)
+ keyImpl := keyserver.NewInternalAPI(base, &base.Cfg.KeyServer, fsAPI)
+ keyAPI := keyImpl
+ if base.UseHTTPAPIs {
+ keyserver.AddInternalRoutes(base.InternalAPIMux, keyAPI)
+ keyAPI = base.KeyServerHTTPClient()
+ }
+
+ userImpl := userapi.NewInternalAPI(accountDB, &cfg.UserAPI, cfg.Derived.ApplicationServices, keyAPI)
+ userAPI := userImpl
+ if base.UseHTTPAPIs {
+ userapi.AddInternalRoutes(base.InternalAPIMux, userAPI)
+ userAPI = base.UserAPIClient()
+ }
if traceInternal {
userAPI = &uapi.UserInternalAPITrace{
Impl: userAPI,
}
}
- // needs to be after the SetUserAPI call above
+
+ // TODO: This should use userAPI, not userImpl, but the appservice setup races with
+ // the listeners and panics at startup if it tries to create appservice accounts
+ // before the listeners are up.
+ asAPI := appservice.NewInternalAPI(base, userImpl, rsAPI)
if base.UseHTTPAPIs {
- keyserver.AddInternalRoutes(base.InternalAPIMux, keyAPI)
- keyAPI = base.KeyServerHTTPClient()
+ appservice.AddInternalRoutes(base.InternalAPIMux, asAPI)
+ asAPI = base.AppserviceHTTPClient()
}
+ // The underlying roomserver implementation needs to be able to call the fedsender.
+ // This is different to rsAPI which can be the http client which doesn't need this
+ // dependency. Other components also need updating after their dependencies are up.
+ rsImpl.SetFederationAPI(fsAPI)
+ rsImpl.SetAppserviceAPI(asAPI)
+ keyImpl.SetUserAPI(userAPI)
+
eduInputAPI := eduserver.NewInternalAPI(
base, cache.New(), userAPI,
)
@@ -124,13 +146,6 @@ func main() {
eduInputAPI = base.EDUServerClient()
}
- asAPI := appservice.NewInternalAPI(base, userAPI, rsAPI)
- if base.UseHTTPAPIs {
- appservice.AddInternalRoutes(base.InternalAPIMux, asAPI)
- asAPI = base.AppserviceHTTPClient()
- }
- rsAPI.SetAppserviceAPI(asAPI)
-
monolith := setup.Monolith{
Config: base.Cfg,
AccountDB: accountDB,