diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2023-01-28 13:14:53 -0500 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2023-01-28 13:14:53 -0500 |
commit | f3f5e03651e27c2bb5492ac50b6ae91a9336411c (patch) | |
tree | f23f1e3bc2c1007ccdd9fd64b3df0f316c868e26 /src | |
parent | tracing (diff) | |
download | xssbook-f3f5e03651e27c2bb5492ac50b6ae91a9336411c.tar.gz xssbook-f3f5e03651e27c2bb5492ac50b6ae91a9336411c.tar.bz2 xssbook-f3f5e03651e27c2bb5492ac50b6ae91a9336411c.zip |
docker
Diffstat (limited to 'src')
-rw-r--r-- | src/api/pages.rs | 8 | ||||
-rw-r--r-- | src/main.rs | 14 | ||||
-rw-r--r-- | src/types/response.rs | 10 |
3 files changed, 15 insertions, 17 deletions
diff --git a/src/api/pages.rs b/src/api/pages.rs index b2bef82..7f5bfc3 100644 --- a/src/api/pages.rs +++ b/src/api/pages.rs @@ -14,7 +14,7 @@ async fn login(user: Option<AuthorizedUser>) -> Response { if user.is_some() { return Redirect::to("/home").into_response() } else { - return ResponseCode::Success.file("/login.html").await.unwrap() + return ResponseCode::Success.file("/login.html").await } } @@ -22,7 +22,7 @@ async fn home(user: Option<AuthorizedUser>) -> Response { if user.is_none() { return Redirect::to("/login").into_response() } else { - return ResponseCode::Success.file("/home.html").await.unwrap() + return ResponseCode::Success.file("/home.html").await } } @@ -30,7 +30,7 @@ async fn people(user: Option<AuthorizedUser>) -> Response { if user.is_none() { return Redirect::to("/login").into_response() } else { - return ResponseCode::Success.file("/people.html").await.unwrap() + return ResponseCode::Success.file("/people.html").await } } @@ -38,7 +38,7 @@ async fn profile(user: Option<AuthorizedUser>) -> Response { if user.is_none() { return Redirect::to("/login").into_response() } else { - return ResponseCode::Success.file("/profile.html").await.unwrap() + return ResponseCode::Success.file("/profile.html").await } } diff --git a/src/main.rs b/src/main.rs index ab5a9cc..ebce57e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use std::net::SocketAddr; -use axum::{Router, response::Response, http::Request, middleware::{Next, self}, extract::ConnectInfo, RequestExt, body::HttpBody, Extension}; +use axum::{Router, response::Response, http::{Request, StatusCode}, middleware::{Next, self}, extract::ConnectInfo, RequestExt, body::HttpBody, Extension}; use tower_cookies::CookieManagerLayer; use tracing::metadata::LevelFilter; use tracing_subscriber::{prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer, filter::filter_fn}; @@ -13,9 +13,10 @@ mod types; mod console; async fn serve<B>(req: Request<B>, next: Next<B>) -> Response { - let Ok(file) = ResponseCode::Success.file(&req.uri().to_string()).await else { - return next.run(req).await - }; + let file = ResponseCode::Success.file(&req.uri().to_string()).await; + if file.status() != StatusCode::OK { + return next.run(req).await; + } file } @@ -33,10 +34,7 @@ async fn log<B>(mut req: Request<B>, next: Next<B>) -> Response where } async fn not_found() -> Response { - match ResponseCode::NotFound.file("/404.html").await { - Ok(file) => file, - Err(err) => err - } + ResponseCode::NotFound.file("/404.html").await } #[tokio::main] diff --git a/src/types/response.rs b/src/types/response.rs index de572b2..d10bce9 100644 --- a/src/types/response.rs +++ b/src/types/response.rs @@ -54,21 +54,21 @@ impl ResponseCode { } #[instrument()] - pub async fn file(self, path: &str) -> Result<Response> { + pub async fn file(self, path: &str) -> Response { if path.chars().position(|c| c == '.' ).is_none() { - return Err(ResponseCode::BadRequest.text("Folders cannot be served")); + return ResponseCode::BadRequest.text("Folders cannot be served"); } let path = format!("public{}", path); let svc = ServeFile::new(path); let Ok(mut res) = svc.oneshot(Request::new(Body::empty())).await else { tracing::error!("Error while fetching file"); - return Err(ResponseCode::InternalServerError.text("Error while fetching file")); + return ResponseCode::InternalServerError.text("Error while fetching file"); }; if res.status() != StatusCode::OK { - return Err(ResponseCode::NotFound.text("File not found")); + return ResponseCode::NotFound.text("File not found"); } *res.status_mut() = self.code(); - Ok(res.into_response()) + res.into_response() } } |