aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clientapi/clientapi.go1
-rw-r--r--clientapi/routing/routing.go22
-rw-r--r--dendrite-sample.monolith.yaml4
-rw-r--r--dendrite-sample.polylith.yaml4
-rw-r--r--setup/config/config_global.go3
-rw-r--r--setup/config/config_test.go1
6 files changed, 34 insertions, 1 deletions
diff --git a/clientapi/clientapi.go b/clientapi/clientapi.go
index f550c29b..55735560 100644
--- a/clientapi/clientapi.go
+++ b/clientapi/clientapi.go
@@ -59,6 +59,7 @@ func AddPublicRoutes(
routing.Setup(
base.PublicClientAPIMux,
+ base.PublicWellKnownAPIMux,
base.SynapseAdminMux,
base.DendriteAdminMux,
cfg, rsAPI, asAPI,
diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go
index 0460850e..ced4fdbc 100644
--- a/clientapi/routing/routing.go
+++ b/clientapi/routing/routing.go
@@ -48,7 +48,7 @@ import (
// applied:
// nolint: gocyclo
func Setup(
- publicAPIMux, synapseAdminRouter, dendriteAdminRouter *mux.Router,
+ publicAPIMux, wkMux, synapseAdminRouter, dendriteAdminRouter *mux.Router,
cfg *config.ClientAPI,
rsAPI roomserverAPI.ClientRoomserverAPI,
asAPI appserviceAPI.AppServiceInternalAPI,
@@ -74,6 +74,26 @@ func Setup(
unstableFeatures["org.matrix."+msc] = true
}
+ if cfg.Matrix.WellKnownClientName != "" {
+ logrus.Infof("Setting m.homeserver base_url as %s at /.well-known/matrix/client", cfg.Matrix.WellKnownClientName)
+ wkMux.Handle("/client", httputil.MakeExternalAPI("wellknown", func(r *http.Request) util.JSONResponse {
+ return util.JSONResponse{
+ Code: http.StatusOK,
+ JSON: struct {
+ HomeserverName struct {
+ BaseUrl string `json:"base_url"`
+ } `json:"m.homeserver"`
+ }{
+ HomeserverName: struct {
+ BaseUrl string `json:"base_url"`
+ }{
+ BaseUrl: cfg.Matrix.WellKnownClientName,
+ },
+ },
+ }
+ })).Methods(http.MethodGet, http.MethodOptions)
+ }
+
publicAPIMux.Handle("/versions",
httputil.MakeExternalAPI("versions", func(req *http.Request) util.JSONResponse {
return util.JSONResponse{
diff --git a/dendrite-sample.monolith.yaml b/dendrite-sample.monolith.yaml
index c6050e40..cc6c173e 100644
--- a/dendrite-sample.monolith.yaml
+++ b/dendrite-sample.monolith.yaml
@@ -64,6 +64,10 @@ global:
# e.g. localhost:443
well_known_server_name: ""
+ # The server name to delegate client-server communications to, with optional port
+ # e.g. localhost:443
+ well_known_client_name: ""
+
# Lists of domains that the server will trust as identity servers to verify third
# party identifiers such as phone numbers and email addresses.
trusted_third_party_id_servers:
diff --git a/dendrite-sample.polylith.yaml b/dendrite-sample.polylith.yaml
index 723547f5..92cab19b 100644
--- a/dendrite-sample.polylith.yaml
+++ b/dendrite-sample.polylith.yaml
@@ -54,6 +54,10 @@ global:
# e.g. localhost:443
well_known_server_name: ""
+ # The server name to delegate client-server communications to, with optional port
+ # e.g. localhost:443
+ well_known_client_name: ""
+
# Lists of domains that the server will trust as identity servers to verify third
# party identifiers such as phone numbers and email addresses.
trusted_third_party_id_servers:
diff --git a/setup/config/config_global.go b/setup/config/config_global.go
index 10827bb2..d4e54e20 100644
--- a/setup/config/config_global.go
+++ b/setup/config/config_global.go
@@ -46,6 +46,9 @@ type Global struct {
// The server name to delegate server-server communications to, with optional port
WellKnownServerName string `yaml:"well_known_server_name"`
+ // The server name to delegate client-server communications to, with optional port
+ WellKnownClientName string `yaml:"well_known_client_name"`
+
// Disables federation. Dendrite will not be able to make any outbound HTTP requests
// to other servers and the federation API will not be exposed.
DisableFederation bool `yaml:"disable_federation"`
diff --git a/setup/config/config_test.go b/setup/config/config_test.go
index b9b1e7bb..ee7e7389 100644
--- a/setup/config/config_test.go
+++ b/setup/config/config_test.go
@@ -42,6 +42,7 @@ global:
key_id: ed25519:auto
key_validity_period: 168h0m0s
well_known_server_name: "localhost:443"
+ well_known_client_name: "localhost:443"
trusted_third_party_id_servers:
- matrix.org
- vector.im