From 279a901e4a8d14c03f35a0a1f884ae8a0a030e44 Mon Sep 17 00:00:00 2001 From: Lyra Date: Fri, 6 Dec 2019 20:36:56 +0100 Subject: [PATCH 1/2] Add configuration variables in order to allow binding lemmy to a different adress/port --- server/src/lib.rs | 33 ++++++++++++++++++++++----------- server/src/main.rs | 8 +++++--- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index 1ff13aab1..2568143d3 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 9b06f9807..60e85e576 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(); } From 0ceed8fd9bd204533dacf3b79be1e0d97f33ed3e Mon Sep 17 00:00:00 2001 From: Lyra Date: Fri, 6 Dec 2019 23:47:30 +0100 Subject: [PATCH 2/2] Import the Settings struct instead of prefixing the namespace --- server/src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main.rs b/server/src/main.rs index 60e85e576..cdcd7a656 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -10,6 +10,7 @@ use lemmy_server::db::establish_connection; use lemmy_server::feeds; use lemmy_server::nodeinfo; use lemmy_server::websocket::server::*; +use lemmy_server::Settings; use std::env; use std::time::{Duration, Instant}; @@ -191,7 +192,7 @@ fn main() { // Start chat server actor in separate thread let server = ChatServer::default().start(); - let settings = lemmy_server::Settings::get(); + let settings = Settings::get(); // Create Http server with websocket support HttpServer::new(move || {