From 8507a327290b6709a4bdd84adffeaa865dcfe4e5 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Wed, 4 Sep 2024 11:04:35 -0400 Subject: [PATCH] feat(admin): host and port set via env vars This allows users to use ipv4 or ipv6 --- admin_frontend/src/config.rs | 11 ++++++++--- admin_frontend/src/main.rs | 5 +++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/admin_frontend/src/config.rs b/admin_frontend/src/config.rs index 057dc326..f9326e82 100644 --- a/admin_frontend/src/config.rs +++ b/admin_frontend/src/config.rs @@ -2,21 +2,26 @@ use tracing::warn; #[derive(Debug, Clone)] pub struct Config { + pub host: String, + pub port: u16, pub redis_url: String, pub gotrue_url: String, pub appflowy_cloud_url: String, } impl Config { - pub fn from_env() -> Self { - Config { + pub fn from_env() -> Result { + let cfg = Config { + host: get_or_default("ADMIN_FRONTEND_HOST", "0.0.0.0"), + port: get_or_default("ADMIN_FRONTEND_PORT", "3000").parse()?, redis_url: get_or_default("ADMIN_FRONTEND_REDIS_URL", "redis://localhost:6379"), gotrue_url: get_or_default("ADMIN_FRONTEND_GOTRUE_URL", "http://localhost:9999"), appflowy_cloud_url: get_or_default( "ADMIN_FRONTEND_APPFLOWY_CLOUD_URL", "http://localhost:8000", ), - } + }; + Ok(cfg) } } diff --git a/admin_frontend/src/main.rs b/admin_frontend/src/main.rs index 229ab9b3..cdf845ba 100644 --- a/admin_frontend/src/main.rs +++ b/admin_frontend/src/main.rs @@ -27,7 +27,7 @@ async fn main() { .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) .init(); - let config = Config::from_env(); + let config = Config::from_env().unwrap(); info!("config loaded: {:?}", &config); let gotrue_client = gotrue::api::Client::new(reqwest::Client::new(), &config.gotrue_url); @@ -65,7 +65,8 @@ async fn main() { .nest_service("/web-api", web_api_router) .nest_service("/assets", ServeDir::new("assets")); - let listener = TcpListener::bind("0.0.0.0:3000") + let address = format!("{}:{}", config.host, config.port); + let listener = TcpListener::bind(address) .await .expect("failed to bind to port"); info!("listening on: {:?}", listener);