From 18443b4f867f7f3f4c9e0e2f89e2b78f8045f46c Mon Sep 17 00:00:00 2001 From: serxoz Date: Tue, 25 Oct 2022 09:23:45 +0200 Subject: [PATCH] agregase config para reverse proxy --- README.md | 10 ++++++++-- src/lib.rs | 27 ++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 65c33c8..f0fee6b 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,18 @@ Devolve un link para descargalo. ## Execución ``` -UPLOADS="/tmp/uploads/" BASE_URL="http://127.0.0.1" PORT=4000 cargo run +UPLOADS="/tmp/uploads/" BASE_URL="http://127.0.0.1" PORT=4000 RPROXY=true cargo run ``` -As variables de entorno UPLOADS, BASE_URL e PORT son opcionais tendo como valores por defecto: +As variables de entorno UPLOADS, BASE_URL, PORT e RPROXY son opcionais, +tendo como valores por defecto: - UPLOADS = "uploads/" - BASE_URL = "http://127.0.0.1" - PORT = 3000 +- RPROXY = false + +A variable RPROXY convén poñela a "true" si o demonio está executándose detráis de +un "reverse proxy" xa que o PORT non se usará externamente. Así os enlaces mostrarárse +sin o porto. ## Funcionamento ``` diff --git a/src/lib.rs b/src/lib.rs index 0309527..cccee1b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,13 +27,34 @@ pub fn env_listen_port() -> u16 { } } -// le a variable de entorno BASE_URL para configurar o porto de escoita +// le a variable de entorno RPROXY para indicar si está detráis dun "reverse proxy" +// e así mostrar na páxina principal o porto ou non +// por defecto: false +pub fn env_rproxy() -> bool { + match env::var_os("RPROXY") { + Some(_) => true, + None => false, + } +} + +// le a variable de entorno BASE_URL para configurar a url a mostrar nos enlaces +// dependendo de si está detráis dun "reverse proxy" ou non // por defecto: http://localhost:3000 pub fn env_base_url() -> String { let port = env_listen_port(); match env::var_os("BASE_URL") { - Some(val) => format!("{}:{}", val.into_string().unwrap(), port), - None => format!("{}:{}", "http://localhost", port), + Some(val) => { + if env_rproxy() { + format!("{}", val.into_string().unwrap()) + } else { + format!("{}:{}", val.into_string().unwrap(), port) + } + }, + None => { + // si non se especifica unha BASE_URL enténdese que se está levantando + // en local e non influe a variable RPROXY + format!("{}:{}", "http://localhost", port) + }, } }