From 7b36255e2d3a9612bd2cdb2ce596054dcac98673 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 14 Mar 2024 11:50:58 +0100 Subject: [PATCH] feat: add config option for listen address and port --- README.md | 3 +++ src/cli.rs | 7 +++++++ src/main.rs | 11 +++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0b15208..7dd9966 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,8 @@ Options: Kafka Topic [env: APP_KAFKA_TOPIC=] [default: etl-processor_input] --token bcrypt hashed Security Token [env: APP_SECURITY_TOKEN=] + --listen + Address and port for HTTP requests [env: APP_LISTEN=] [default: 0.0.0.0:3000] ``` Die Anwendung lässt sich auch mit Umgebungsvariablen konfigurieren. @@ -32,6 +34,7 @@ Die Anwendung lässt sich auch mit Umgebungsvariablen konfigurieren. * `APP_KAFKA_SERVERS`: Zu verwendende Kafka-Bootstrap-Server als kommagetrennte Liste * `APP_KAFKA_TOPIC`: Zu verwendendes Topic zum Warten auf neue Anfragen. Standardwert: `etl-processor_input` * `APP_SECURITY_TOKEN`: Verpflichtende Angabe es Tokens als *bcrypt*-Hash +* `APP_LISTEN`: Adresse und Port für eingehende HTTP-Requests. Standardwert: `0.0.0.0:3000` - Port `3000` auf allen Adressen ## HTTP-Requests diff --git a/src/cli.rs b/src/cli.rs index c591d3f..017dc58 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -27,4 +27,11 @@ pub struct Cli { help = "bcrypt hashed Security Token" )] pub token: String, + #[arg( + long, + env = "APP_LISTEN", + default_value = "0.0.0.0:3000", + help = "Address and port for HTTP requests" + )] + pub listen: String, } diff --git a/src/main.rs b/src/main.rs index 4159a86..5735d49 100644 --- a/src/main.rs +++ b/src/main.rs @@ -58,8 +58,15 @@ async fn main() { #[cfg(debug_assertions)] let app = app.layer(TraceLayer::new_for_http()); - let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); - axum::serve(listener, app).await.unwrap(); + match tokio::net::TcpListener::bind(&CONFIG.listen).await { + Ok(listener) => { + log::info!("Starting application listening on '{}'", CONFIG.listen); + if let Err(err) = axum::serve(listener, app).await { + log::error!("Error starting application: {}", err) + } + } + Err(err) => log::error!("Error listening on '{}': {}", CONFIG.listen, err), + }; } async fn check_basic_auth(request: Request, next: Next) -> Response {