From 9c8d3971fe4a37c19b9cd45e963cefe4de755852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bardon?= Date: Tue, 19 Mar 2024 13:03:38 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20401=20causing=20web=20brow?= =?UTF-8?q?sers=20to=20download=200=20byte=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Cargo.lock | 2 +- src/orangutan-server/Cargo.toml | 2 +- src/orangutan-server/src/main.rs | 17 +++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Cargo.lock b/src/Cargo.lock index d0a6e8e..7287115 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -932,7 +932,7 @@ dependencies = [ [[package]] name = "orangutan-server" -version = "0.4.0" +version = "0.4.1" dependencies = [ "base64 0.21.7", "biscuit-auth", diff --git a/src/orangutan-server/Cargo.toml b/src/orangutan-server/Cargo.toml index 25ed995..1372bce 100644 --- a/src/orangutan-server/Cargo.toml +++ b/src/orangutan-server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "orangutan-server" -version = "0.4.0" +version = "0.4.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/orangutan-server/src/main.rs b/src/orangutan-server/src/main.rs index cdaee9a..12e1d01 100644 --- a/src/orangutan-server/src/main.rs +++ b/src/orangutan-server/src/main.rs @@ -23,9 +23,9 @@ use rocket::http::uri::Origin; use rocket::http::{Cookie, CookieJar, SameSite, Status}; use rocket::outcome::Outcome; use rocket::request::FromRequest; -use rocket::response::status::{BadRequest, NotFound}; +use rocket::response::status::BadRequest; use rocket::response::Redirect; -use rocket::{catch, catchers, get, post, request, routes, Either, Request, Responder, State}; +use rocket::{catch, catchers, get, post, request, routes, Request, Responder, State}; use time::Duration; use tracing::{debug, error, trace, Level}; use tracing_subscriber::FmtSubscriber; @@ -70,7 +70,8 @@ fn rocket() -> _ { .attach(AdHoc::on_liftoff("Website generation", |rocket| { Box::pin(async move { if let Err(err) = liftoff() { - error!("Error: {}", err); + // We drop the error to get a Rocket-formatted panic. + drop(err); rocket.shutdown().notify(); } }) @@ -183,7 +184,7 @@ async fn handle_request( origin: &Origin<'_>, token: Option, object_reader: &State, -) -> Result>, object_reader::Error> { +) -> Result, object_reader::Error> { let biscuit = token.map(|t| t.biscuit); // FIXME: Handle error @@ -222,7 +223,7 @@ async fn handle_request( .map(|o| o.to_owned()) else { error!("No file matching '{}' found in stored objects", &path); - return Ok(Either::Right(NotFound(()))); + return Ok(None); }; let allowed_profiles = allowed_profiles(&object_key); @@ -233,7 +234,7 @@ async fn handle_request( &path ); - return Ok(Either::Left( + return Ok(Some( object_reader.read_object(&object_key, &website_id).await, )); }; @@ -279,10 +280,10 @@ async fn handle_request( } if profile.is_none() { debug!("No profile allowed in token"); - return Ok(Either::Right(NotFound(()))); + return Ok(None); } - Ok(Either::Left( + Ok(Some( object_reader.read_object(object_key, &website_id).await, )) }