diff --git a/config/config.go b/config/config.go index 54cae61..5720201 100644 --- a/config/config.go +++ b/config/config.go @@ -13,6 +13,7 @@ type ( LogLevel string MatrixIdentityServer string MatrixWellKnownAddress string + MatrixMsc3575Address string NostrAddrFee string } ) @@ -26,6 +27,7 @@ func GetConfig() Config { LogLevel: getEnv("LOG_LEVEL", "INFO"), MatrixIdentityServer: getEnv("MATRIX_IDENTITY_SERVER", ""), MatrixWellKnownAddress: getEnv("MATRIX_WELL_KNOWN_ADDRESS", ""), + MatrixMsc3575Address: getEnv("MATRIX_MSC3575_ADDRESS", ""), NostrAddrFee: getEnv("NOSTR_ADDR_FEE", "0"), } } diff --git a/matrix/matrix.go b/matrix/matrix.go index 18aec9d..70e88ee 100644 --- a/matrix/matrix.go +++ b/matrix/matrix.go @@ -21,9 +21,14 @@ type matrixIdentityServer struct { BaseUrl string `json:"base_url,omitempty"` } +type msc3575address struct { + Url string `json:"url,omitempty"` +} + type matrixClientWellKnown struct { - HomeServer *matrixBaseUrl `json:"m.homeserver"` + Homeserver *matrixBaseUrl `json:"m.homeserver"` IdentityServer *matrixIdentityServer `json:"m.identity_server,omitempty"` + Msc3575 *msc3575address `json:"org.matrix.msc3575.proxy,omitempty"` } func MatrixServer(w http.ResponseWriter, req *http.Request) { @@ -46,36 +51,33 @@ func MatrixServer(w http.ResponseWriter, req *http.Request) { func MatrixClient(w http.ResponseWriter, req *http.Request) { l := logger.Get() - // uses an environment variable for now + m := &matrixClientWellKnown{} + wellKnownAddr := config.GetConfig().MatrixWellKnownAddress + // no matrix config set if wellKnownAddr == "" { w.WriteHeader(http.StatusNotFound) l.Debug().Str("path", "matrix/client").Msg("matrix well known address unset") return } - identityServer := config.GetConfig().MatrixIdentityServer - if identityServer == "" { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - baseUrl := &matrixClientWellKnown{ - HomeServer: &matrixBaseUrl{ - BaseUrl: fmt.Sprintf("https://%s", wellKnownAddr), - }, - } - json.NewEncoder(w).Encode(baseUrl) - } else { - identityServer = fmt.Sprintf("https://%s", identityServer) - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - baseUrl := &matrixClientWellKnown{ - HomeServer: &matrixBaseUrl{ - BaseUrl: fmt.Sprintf("https://%s", wellKnownAddr), - }, - IdentityServer: &matrixIdentityServer{ - BaseUrl: identityServer, - }, - } - json.NewEncoder(w).Encode(baseUrl) + m.Homeserver = &matrixBaseUrl{ + BaseUrl: fmt.Sprintf("https://%s", wellKnownAddr), } + + identityServer := config.GetConfig().MatrixIdentityServer + if identityServer != "" { + m.IdentityServer = &matrixIdentityServer{ + BaseUrl: identityServer, + } + } + + msc3575 := config.GetConfig().MatrixMsc3575Address + if msc3575 != "" { + m.Msc3575 = &msc3575address{ + Url: msc3575, + } + } + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(m) }