From 32373fd18a05663c3bb7d9b1d9fa0a21d909c784 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 9 Sep 2022 14:43:19 +0200 Subject: redirect --- server/src/main.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'server/src') diff --git a/server/src/main.rs b/server/src/main.rs index 3787783..dae6662 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,17 +1,18 @@ pub mod protocol; pub mod room; -use hyper::StatusCode; +use hyper::{header, StatusCode, Uri}; use listenfd::ListenFd; use log::error; use room::Room; use std::collections::HashMap; use std::convert::Infallible; +use std::str::FromStr; use std::sync::Arc; use tokio::sync::RwLock; use warp::hyper::Server; use warp::ws::WebSocket; -use warp::{Filter, Rejection, Reply}; +use warp::{reply, Filter, Rejection, Reply}; type Rooms = Arc>>>; @@ -38,12 +39,21 @@ async fn run() { let room: _ = warp::path!("room").and(warp::fs::file("../client-web/public/app.html")); let assets: _ = warp::path("assets").and(warp::fs::dir("../client-web/public/assets")); let favicon: _ = warp::path!("favicon.ico").map(|| ""); + let old_format_redirect: _ = warp::path!("room" / String).map(|rname| { + reply::with_header( + StatusCode::MOVED_PERMANENTLY, + header::LOCATION, + format!("/room#{rname}?warn_redirect=true"), + ) + .into_response() + }); let routes = assets .or(room) .or(index) .or(signaling) .or(favicon) + .or(old_format_redirect) .recover(handle_rejection) .with(warp::log("stuff")); -- cgit v1.2.3-70-g09d2