From f3984624d90f792050a835e847d7cf461b886cc0 Mon Sep 17 00:00:00 2001 From: SinTan1729 Date: Fri, 28 Apr 2023 00:22:30 -0500 Subject: [PATCH] Add option for temporary redirection --- README.md | 5 ++++- actix/src/main.rs | 8 +++++++- compose.yaml | 6 ++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 34d9ae7..893b664 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ export site_url= cd actix cargo run ``` -You can optionally set the port the server listens on by appending `--port=[port]` +You can optionally set the port the server listens on by appending `--port=[port]`. ### 4. Navigate to `http://localhost:4567` in your browser, add links as you wish. ## Running with docker @@ -122,6 +122,9 @@ docker run -p 4567:4567 \ -d simply-shorten:latest ``` +You can also set the redirect method to Permanent 308 (default) or Temporary 307 by setting +the `redirect_method` variable to `TEMPORARY` or `PERMANENT` (it's matched exactly). + ## Disable authentication If you do not define a password environment variable when starting the docker image, authentication will be disabled. diff --git a/actix/src/main.rs b/actix/src/main.rs index 1fbf216..ce97c8e 100644 --- a/actix/src/main.rs +++ b/actix/src/main.rs @@ -71,8 +71,14 @@ async fn link_handler(shortlink: web::Path, data: web::Data) - if longlink == *"" { Redirect::to("/err/404").using_status_code(StatusCode::NOT_FOUND) } else { + let redirect_method = env::var("redirect_method").unwrap_or("PERMANENT".to_string()); database::add_hit(shortlink.as_str(), &data.db); - Redirect::to(longlink).permanent() + if redirect_method == *"TEMPORARY" { + Redirect::to(longlink) + } else { + // Defaults to permanent redirection + Redirect::to(longlink).permanent() + } } } diff --git a/compose.yaml b/compose.yaml index ff5d55b..284785d 100644 --- a/compose.yaml +++ b/compose.yaml @@ -10,11 +10,17 @@ services: # In this case, you can get rid of the db volume below # and instead do a mount manually by specifying the location # - db_url=/urls.sqlite + # Change it in case you want to set the website name # displayed in front of the shorturls, defaults to # the hostname you're accessing it from # - site_url=https://www.example.com + - password=$3CuReP4S$W0rD + + # Pass the redirect method, if needed TEMPORARY and PERMANENT + # are accepted values, defaults to PERMANENT + # - redirect_method=TEMPORARY volumes: - db:/urls.sqlite networks: