mod application_context; mod server_mode; use crate::application_context::ApplicationContext; use actix_web::{web, App, HttpServer}; use dotenv::dotenv; use log::info; use lumiere_exposition::init; use std::env; use std::sync::Arc; #[actix_web::main] async fn main() -> std::io::Result<()> { dotenv().ok(); unsafe { env::set_var("RUST_LOG", "debug"); } check_all_variables_are_set(); env_logger::init(); let application_context = ApplicationContext::init()?; // let tls_config = init_tls_configuration()?; let server = HttpServer::new( move || App::new().configure(init) .app_data(web::Data::new(Arc::new(application_context.user_service.clone()))) .app_data(web::Data::new(Arc::new(application_context.video_service.clone()))) ) .bind("0.0.0.0:19000") // .bind_rustls_0_23(("0.0.0.0", 19000), tls_config) .expect("Unable to start server"); server.run().await } // fn init_tls_configuration() -> Result { // let mut certs_file = BufReader::new(File::open("./certs/lumiere.crt")?); // let mut key_file = BufReader::new(File::open("./certs/lumiere.key")?); // // let tls_certs = rustls_pemfile::certs(&mut certs_file) // .collect::, _>>().expect("Unable to read the TLS certificate…"); // let tls_key = rustls_pemfile::pkcs8_private_keys(&mut key_file) // .next() // .unwrap() // .expect("Unable to read the private key for TLS configuration…"); // // let tls_config = rustls::ServerConfig::builder() // .with_no_client_auth() // .with_single_cert(tls_certs, rustls::pki_types::PrivateKeyDer::Pkcs8(tls_key)) // .unwrap(); // // Ok(tls_config) // } fn check_all_variables_are_set() { info!("Checking all variables exist…"); let variables = vec!["JWT_SECRET", "SQLITE_DATABASE_NAME", "BCRYPT_SALT"]; variables.iter().for_each(|variable| { env::var(variable).expect(format!("{} should be defined!", variable).as_str()); }); info!("All variables are set correctly."); }