1
0
Fork 0
forked from mirror/grapevine

Compare commits

...

1 commit

Author SHA1 Message Date
Charles Hall
832d9a6e90
require client base_url, rename from authority
The previous code used `server_name` as a fallback but in reality there
is no real relationship between `server_name` and the location clients
are supposed to make requests to.

Additionally, the `insecure` option is gone, because we now allow users
to control the entire URL, so they're free to choose the scheme.
2024-09-12 17:12:49 -07:00
2 changed files with 8 additions and 27 deletions

View file

@ -30,24 +30,10 @@ pub(crate) async fn server(
/// Handler for `/.well-known/matrix/client`
pub(crate) async fn client(_: Ar<client::Request>) -> Ra<client::Response> {
let authority = services()
.globals
.config
.server_discovery
.client
.authority
.clone()
.unwrap_or_else(|| services().globals.config.server_name.clone());
let scheme = if services().globals.config.server_discovery.client.insecure {
"http"
} else {
"https"
};
let base_url = format!("{scheme}://{authority}");
// I wish ruma used an actual URL type instead of `String`
let base_url =
services().globals.config.server_discovery.client.base_url.to_string();
Ra(client::Response {
homeserver: client::HomeserverInfo::new(base_url.clone()),
identity_server: None,

View file

@ -6,6 +6,7 @@ use std::{
};
use once_cell::sync::Lazy;
use reqwest::Url;
use ruma::{OwnedServerName, RoomVersionId};
use serde::Deserialize;
@ -35,7 +36,6 @@ pub(crate) struct Config {
/// This is the value that will appear e.g. in user IDs and room aliases.
pub(crate) server_name: OwnedServerName,
#[serde(default)]
pub(crate) server_discovery: ServerDiscovery,
pub(crate) database: DatabaseConfig,
#[serde(default)]
@ -69,14 +69,13 @@ pub(crate) struct Config {
pub(crate) emergency_password: Option<String>,
}
#[derive(Debug, Default, Deserialize)]
#[derive(Debug, Deserialize)]
pub(crate) struct ServerDiscovery {
/// Server-server discovery configuration
#[serde(default)]
pub(crate) server: ServerServerDiscovery,
/// Client-server discovery configuration
#[serde(default)]
pub(crate) client: ClientServerDiscovery,
}
@ -88,14 +87,10 @@ pub(crate) struct ServerServerDiscovery {
}
/// Client-server discovery configuration
#[derive(Debug, Default, Deserialize)]
#[derive(Debug, Deserialize)]
pub(crate) struct ClientServerDiscovery {
/// The alternative authority to make client-server API requests to
pub(crate) authority: Option<OwnedServerName>,
/// Controls whether HTTPS is used
#[serde(default)]
pub(crate) insecure: bool,
/// The base URL to make client-server API requests to
pub(crate) base_url: Url,
#[serde(default, rename = "advertise_buggy_sliding_sync")]
pub(crate) advertise_sliding_sync: bool,