disable federation at the router level too
Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
parent
0d21d70d4a
commit
8eda3be9ce
3 changed files with 43 additions and 44 deletions
|
@ -63,10 +63,6 @@ use crate::{
|
||||||
pub async fn get_server_version_route(
|
pub async fn get_server_version_route(
|
||||||
_body: Ruma<get_server_version::v1::Request>,
|
_body: Ruma<get_server_version::v1::Request>,
|
||||||
) -> Result<get_server_version::v1::Response> {
|
) -> Result<get_server_version::v1::Response> {
|
||||||
if !services().globals.allow_federation() {
|
|
||||||
return Err(Error::bad_config("Federation is disabled."));
|
|
||||||
}
|
|
||||||
|
|
||||||
let version = match option_env!("CONDUIT_VERSION_EXTRA") {
|
let version = match option_env!("CONDUIT_VERSION_EXTRA") {
|
||||||
Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra),
|
Some(extra) => format!("{} ({})", env!("CARGO_PKG_VERSION"), extra),
|
||||||
None => env!("CARGO_PKG_VERSION").to_owned(),
|
None => env!("CARGO_PKG_VERSION").to_owned(),
|
||||||
|
@ -90,10 +86,6 @@ pub async fn get_server_version_route(
|
||||||
// Response type for this endpoint is Json because we need to calculate a
|
// Response type for this endpoint is Json because we need to calculate a
|
||||||
// signature for the response
|
// signature for the response
|
||||||
pub async fn get_server_keys_route() -> Result<impl IntoResponse> {
|
pub async fn get_server_keys_route() -> Result<impl IntoResponse> {
|
||||||
if !services().globals.allow_federation() {
|
|
||||||
return Err(Error::bad_config("Federation is disabled."));
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut verify_keys: BTreeMap<OwnedServerSigningKeyId, VerifyKey> = BTreeMap::new();
|
let mut verify_keys: BTreeMap<OwnedServerSigningKeyId, VerifyKey> = BTreeMap::new();
|
||||||
verify_keys.insert(
|
verify_keys.insert(
|
||||||
format!("ed25519:{}", services().globals.keypair().version())
|
format!("ed25519:{}", services().globals.keypair().version())
|
||||||
|
@ -1756,10 +1748,6 @@ pub async fn claim_keys_route(body: Ruma<claim_keys::v1::Request>) -> Result<cla
|
||||||
///
|
///
|
||||||
/// Returns the .well-known URL if it is configured, otherwise returns 404.
|
/// Returns the .well-known URL if it is configured, otherwise returns 404.
|
||||||
pub async fn well_known_server(_body: Ruma<discover_homeserver::Request>) -> Result<discover_homeserver::Response> {
|
pub async fn well_known_server(_body: Ruma<discover_homeserver::Request>) -> Result<discover_homeserver::Response> {
|
||||||
if !services().globals.allow_federation() {
|
|
||||||
return Err(Error::bad_config("Federation is disabled."));
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(discover_homeserver::Response {
|
Ok(discover_homeserver::Response {
|
||||||
server: match services().globals.well_known_server() {
|
server: match services().globals.well_known_server() {
|
||||||
Some(server_name) => server_name.to_owned(),
|
Some(server_name) => server_name.to_owned(),
|
||||||
|
|
|
@ -308,7 +308,7 @@ async fn build(server: &Server) -> io::Result<axum::routing::IntoMakeService<Rou
|
||||||
|
|
||||||
#[cfg(any(feature = "zstd_compression", feature = "gzip_compression", feature = "brotli_compression"))]
|
#[cfg(any(feature = "zstd_compression", feature = "gzip_compression", feature = "brotli_compression"))]
|
||||||
{
|
{
|
||||||
Ok(routes::routes()
|
Ok(routes::routes(&server.config)
|
||||||
.layer(compression_layer(server))
|
.layer(compression_layer(server))
|
||||||
.layer(middlewares)
|
.layer(middlewares)
|
||||||
.into_make_service())
|
.into_make_service())
|
||||||
|
|
|
@ -3,19 +3,19 @@ use std::future::Future;
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::FromRequestParts,
|
extract::FromRequestParts,
|
||||||
response::IntoResponse,
|
response::IntoResponse,
|
||||||
routing::{get, on, post, MethodFilter},
|
routing::{any, get, on, post, MethodFilter},
|
||||||
Router,
|
Router,
|
||||||
};
|
};
|
||||||
use conduit::{
|
use conduit::{
|
||||||
api::{client_server, server_server},
|
api::{client_server, server_server},
|
||||||
Error, Result, Ruma, RumaResponse,
|
Config, Error, Result, Ruma, RumaResponse,
|
||||||
};
|
};
|
||||||
use http::{Method, Uri};
|
use http::{Method, Uri};
|
||||||
use ruma::api::{client::error::ErrorKind, IncomingRequest};
|
use ruma::api::{client::error::ErrorKind, IncomingRequest};
|
||||||
use tracing::{info, warn};
|
use tracing::{info, warn};
|
||||||
|
|
||||||
pub fn routes() -> Router {
|
pub fn routes(config: &Config) -> Router {
|
||||||
Router::new()
|
let router = Router::new()
|
||||||
.ruma_route(client_server::get_supported_versions_route)
|
.ruma_route(client_server::get_supported_versions_route)
|
||||||
.ruma_route(client_server::get_register_available_route)
|
.ruma_route(client_server::get_register_available_route)
|
||||||
.ruma_route(client_server::register_route)
|
.ruma_route(client_server::register_route)
|
||||||
|
@ -181,41 +181,50 @@ pub fn routes() -> Router {
|
||||||
.ruma_route(client_server::get_relating_events_with_rel_type_route)
|
.ruma_route(client_server::get_relating_events_with_rel_type_route)
|
||||||
.ruma_route(client_server::get_relating_events_route)
|
.ruma_route(client_server::get_relating_events_route)
|
||||||
.ruma_route(client_server::get_hierarchy_route)
|
.ruma_route(client_server::get_hierarchy_route)
|
||||||
.ruma_route(server_server::get_server_version_route)
|
|
||||||
.route("/_matrix/key/v2/server", get(server_server::get_server_keys_route))
|
|
||||||
.route(
|
|
||||||
"/_matrix/key/v2/server/:key_id",
|
|
||||||
get(server_server::get_server_keys_deprecated_route),
|
|
||||||
)
|
|
||||||
.ruma_route(server_server::get_public_rooms_route)
|
|
||||||
.ruma_route(server_server::get_public_rooms_filtered_route)
|
|
||||||
.ruma_route(server_server::send_transaction_message_route)
|
|
||||||
.ruma_route(server_server::get_event_route)
|
|
||||||
.ruma_route(server_server::get_backfill_route)
|
|
||||||
.ruma_route(server_server::get_missing_events_route)
|
|
||||||
.ruma_route(server_server::get_event_authorization_route)
|
|
||||||
.ruma_route(server_server::get_room_state_route)
|
|
||||||
.ruma_route(server_server::get_room_state_ids_route)
|
|
||||||
.ruma_route(server_server::create_join_event_template_route)
|
|
||||||
.ruma_route(server_server::create_join_event_v1_route)
|
|
||||||
.ruma_route(server_server::create_join_event_v2_route)
|
|
||||||
.ruma_route(server_server::create_invite_route)
|
|
||||||
.ruma_route(server_server::get_devices_route)
|
|
||||||
.ruma_route(server_server::get_room_information_route)
|
|
||||||
.ruma_route(server_server::get_profile_information_route)
|
|
||||||
.ruma_route(server_server::get_keys_route)
|
|
||||||
.ruma_route(server_server::claim_keys_route)
|
|
||||||
.ruma_route(server_server::get_hierarchy_route)
|
|
||||||
.ruma_route(client_server::get_mutual_rooms_route)
|
.ruma_route(client_server::get_mutual_rooms_route)
|
||||||
.ruma_route(client_server::well_known_support)
|
.ruma_route(client_server::well_known_support)
|
||||||
.ruma_route(client_server::well_known_client)
|
.ruma_route(client_server::well_known_client)
|
||||||
.ruma_route(server_server::well_known_server)
|
|
||||||
.route("/_conduwuit/server_version", get(client_server::conduwuit_server_version))
|
.route("/_conduwuit/server_version", get(client_server::conduwuit_server_version))
|
||||||
.route("/_matrix/client/r0/rooms/:room_id/initialSync", get(initial_sync))
|
.route("/_matrix/client/r0/rooms/:room_id/initialSync", get(initial_sync))
|
||||||
.route("/_matrix/client/v3/rooms/:room_id/initialSync", get(initial_sync))
|
.route("/_matrix/client/v3/rooms/:room_id/initialSync", get(initial_sync))
|
||||||
.route("/client/server.json", get(client_server::syncv3_client_server_json))
|
.route("/client/server.json", get(client_server::syncv3_client_server_json))
|
||||||
.route("/", get(it_works))
|
.route("/", get(it_works))
|
||||||
.fallback(not_found)
|
.fallback(not_found);
|
||||||
|
|
||||||
|
if config.allow_federation {
|
||||||
|
router
|
||||||
|
.ruma_route(server_server::get_server_version_route)
|
||||||
|
.route("/_matrix/key/v2/server", get(server_server::get_server_keys_route))
|
||||||
|
.route(
|
||||||
|
"/_matrix/key/v2/server/:key_id",
|
||||||
|
get(server_server::get_server_keys_deprecated_route),
|
||||||
|
)
|
||||||
|
.ruma_route(server_server::get_public_rooms_route)
|
||||||
|
.ruma_route(server_server::get_public_rooms_filtered_route)
|
||||||
|
.ruma_route(server_server::send_transaction_message_route)
|
||||||
|
.ruma_route(server_server::get_event_route)
|
||||||
|
.ruma_route(server_server::get_backfill_route)
|
||||||
|
.ruma_route(server_server::get_missing_events_route)
|
||||||
|
.ruma_route(server_server::get_event_authorization_route)
|
||||||
|
.ruma_route(server_server::get_room_state_route)
|
||||||
|
.ruma_route(server_server::get_room_state_ids_route)
|
||||||
|
.ruma_route(server_server::create_join_event_template_route)
|
||||||
|
.ruma_route(server_server::create_join_event_v1_route)
|
||||||
|
.ruma_route(server_server::create_join_event_v2_route)
|
||||||
|
.ruma_route(server_server::create_invite_route)
|
||||||
|
.ruma_route(server_server::get_devices_route)
|
||||||
|
.ruma_route(server_server::get_room_information_route)
|
||||||
|
.ruma_route(server_server::get_profile_information_route)
|
||||||
|
.ruma_route(server_server::get_keys_route)
|
||||||
|
.ruma_route(server_server::claim_keys_route)
|
||||||
|
.ruma_route(server_server::get_hierarchy_route)
|
||||||
|
.ruma_route(server_server::well_known_server)
|
||||||
|
} else {
|
||||||
|
router
|
||||||
|
.route("/_matrix/federation/*path", any(federation_disabled))
|
||||||
|
.route("/.well-known/matrix/server", any(federation_disabled))
|
||||||
|
.route("/_matrix/key/*path", any(federation_disabled))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn not_found(uri: Uri) -> impl IntoResponse {
|
async fn not_found(uri: Uri) -> impl IntoResponse {
|
||||||
|
@ -234,6 +243,8 @@ async fn initial_sync(_uri: Uri) -> impl IntoResponse {
|
||||||
|
|
||||||
async fn it_works() -> &'static str { "hewwo from conduwuit woof!" }
|
async fn it_works() -> &'static str { "hewwo from conduwuit woof!" }
|
||||||
|
|
||||||
|
async fn federation_disabled() -> impl IntoResponse { Error::bad_config("Federation is disabled.") }
|
||||||
|
|
||||||
trait RouterExt {
|
trait RouterExt {
|
||||||
fn ruma_route<H, T>(self, handler: H) -> Self
|
fn ruma_route<H, T>(self, handler: H) -> Self
|
||||||
where
|
where
|
||||||
|
|
Loading…
Add table
Reference in a new issue