Add .well-known/matrix/client to clientapi
MODIFY
clientapi/clientapi.go
clientapi/clientapi.go
@@ -59,6 +59,7 @@ func AddPublicRoutes(
routing.Setup(
base.PublicClientAPIMux,
+ base.PublicWellKnownAPIMux,
base.SynapseAdminMux,
base.DendriteAdminMux,
cfg, rsAPI, asAPI,

MODIFY
clientapi/routing/routing.go
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{

MODIFY
dendrite-sample.monolith.yaml
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:

MODIFY
dendrite-sample.polylith.yaml
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:

MODIFY
setup/config/config_global.go
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"`

MODIFY
setup/config/config_test.go
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

Add .well-known/matrix/client to clientapi (#2551)

Signed-off-by: Jonathan Bartlett <jonathan@jonnobrow.co.uk>

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>