From 58ca8ee1da5c9b58a49aaaacbafc0c0edaee3e67 Mon Sep 17 00:00:00 2001 From: Mats Rauhala Date: Tue, 6 Oct 2026 08:24:08 +0300 Subject: [PATCH] Configurable port --- src/config.rs | 13 ++++++++++--- src/main.rs | 4 +++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/config.rs b/src/config.rs index 1bfb42e..6b7818f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,4 @@ -use std::{env, path::PathBuf}; +use std::{env, num::ParseIntError, path::PathBuf}; use secrecy::SecretString; use thiserror::Error; @@ -6,12 +6,15 @@ use thiserror::Error; pub struct Config { pub server_secret: SecretString, pub state_dir: PathBuf, + pub port: i32, } #[derive(Error, Debug)] pub enum ConfigError { #[error("Missing SERVER_SECRET")] MissingServerSecret, + #[error("Parse error {0}")] + InvalidPort(#[from] ParseIntError), #[error("Unknown error: #{0}")] Unknown(anyhow::Error), } @@ -20,8 +23,12 @@ impl Config { pub fn new() -> Result { dotenvy::dotenv().map_err(|err| ConfigError::Unknown(err.into()))?; let server_secret = env::var("SERVER_SECRET").map(SecretString::from).map_err(|_| ConfigError::MissingServerSecret)?; - let state_dir = env::var("RUKOSYNC_STATE_DIR").map_or_else(|_| PathBuf::from("/tmp/"), PathBuf::from); - Ok(Self{server_secret, state_dir}) + let state_dir = env::var("STATE_DIR").map_or_else(|_| PathBuf::from("/tmp/"), PathBuf::from); + let port = match env::var("PORT") { + Ok(p) => p.parse(), + Err(_) => Ok(3000), + }?; + Ok(Self{server_secret, state_dir, port}) } } diff --git a/src/main.rs b/src/main.rs index dd759b0..4af398a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,7 +27,9 @@ async fn main() -> anyhow::Result<()> { .nest("/syncs", syncs::syncs_routes()) .with_state(app_state) .layer(TraceLayer::new_for_http()); - let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?; + let address = format!("0.0.0.0:{}", config.port); + tracing::info!("Listening on {:?}", address); + let listener = tokio::net::TcpListener::bind(address).await?; axum::serve(listener, app).await?; Ok(()) }