diff --git a/server/src/lib.rs b/server/src/lib.rs index 1ff13aa..2568143 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -42,18 +42,21 @@ use rand::distributions::Alphanumeric; use rand::{thread_rng, Rng}; use regex::Regex; use std::env; +use std::net::IpAddr; pub struct Settings { - db_url: String, - hostname: String, - jwt_secret: String, - rate_limit_message: i32, - rate_limit_message_per_second: i32, - rate_limit_post: i32, - rate_limit_post_per_second: i32, - rate_limit_register: i32, - rate_limit_register_per_second: i32, - email_config: Option, + pub db_url: String, + pub hostname: String, + pub bind: IpAddr, + pub port: u16, + pub jwt_secret: String, + pub rate_limit_message: i32, + pub rate_limit_message_per_second: i32, + pub rate_limit_post: i32, + pub rate_limit_post_per_second: i32, + pub rate_limit_register: i32, + pub rate_limit_register_per_second: i32, + pub email_config: Option, } pub struct EmailConfig { @@ -64,7 +67,7 @@ pub struct EmailConfig { } impl Settings { - fn get() -> Self { + pub fn get() -> Self { dotenv().ok(); let email_config = @@ -82,6 +85,14 @@ impl Settings { Settings { db_url: env::var("DATABASE_URL").expect("DATABASE_URL must be set"), hostname: env::var("HOSTNAME").unwrap_or("rrr".to_string()), + bind: env::var("BIND") + .unwrap_or("0.0.0.0".to_string()) + .parse() + .unwrap(), + port: env::var("PORT") + .unwrap_or("8536".to_string()) + .parse() + .unwrap(), jwt_secret: env::var("JWT_SECRET").unwrap_or("changeme".to_string()), rate_limit_message: env::var("RATE_LIMIT_MESSAGE") .unwrap_or("30".to_string()) diff --git a/server/src/main.rs b/server/src/main.rs index 9b06f98..60e85e5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -190,8 +190,10 @@ fn main() { // Start chat server actor in separate thread let server = ChatServer::default().start(); - // Create Http server with websocket support + let settings = lemmy_server::Settings::get(); + + // Create Http server with websocket support HttpServer::new(move || { App::new() .data(server.clone()) @@ -210,11 +212,11 @@ fn main() { // static resources .service(actix_files::Files::new("/static", front_end_dir())) }) - .bind("0.0.0.0:8536") + .bind((settings.bind, settings.port)) .unwrap() .start(); - println!("Started http server: 0.0.0.0:8536"); + println!("Started http server at {}:{}", settings.bind, settings.port); let _ = sys.run(); }