Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
main.rs 1.63 KiB
Newer Older
  • Learn to ignore specific revisions
  • peterrabbit's avatar
    peterrabbit committed
    mod app;
    
    mod service;
    
    peterrabbit's avatar
    peterrabbit committed
    mod static_files;
    
    mod testing;
    
    peterrabbit's avatar
    peterrabbit committed
    mod tls_config;
    
    peterrabbit's avatar
    peterrabbit committed
    mod website;
    
    use actix_web::{App, HttpServer};
    
    use actix_web_lab::middleware::RedirectHttps;
    
    peterrabbit's avatar
    peterrabbit committed
    use app::AppState;
    
    peterrabbit's avatar
    peterrabbit committed
    use static_files::StaticFilesManager;
    
    peterrabbit's avatar
    peterrabbit committed
    use tls_config::tls_config;
    
    peterrabbit's avatar
    peterrabbit committed
    use website::WebSite;
    
    
    peterrabbit's avatar
    peterrabbit committed
    #[actix_web::main]
    async fn main() -> std::io::Result<()> {
    
    peterrabbit's avatar
    peterrabbit committed
        let app_state = AppState::new();
    
    
        env_logger::Builder::from_env(
            env_logger::Env::default().default_filter_or(&app_state.config.get_log_level()),
        )
        .init();
    
    
    peterrabbit's avatar
    peterrabbit committed
        let website = WebSite::load(&app_state.config);
        let mut static_files_manager = StaticFilesManager::new(&app_state).unwrap();
    
        static_files_manager.build_index();
    
    peterrabbit's avatar
    peterrabbit committed
        let host = app_state.config.host.clone();
        let port = app_state.config.port;
        let port_tls = app_state.config.port_tls;
    
    peterrabbit's avatar
    peterrabbit committed
        let srv_conf = tls_config(&app_state.config);
    
    peterrabbit's avatar
    peterrabbit committed
        let static_files_manager =
            actix_web::web::Data::new(std::sync::Mutex::new(static_files_manager));
    
    
    peterrabbit's avatar
    peterrabbit committed
        let app_state = actix_web::web::Data::new(std::sync::Mutex::new(app_state));
    
    
    peterrabbit's avatar
    peterrabbit committed
        HttpServer::new(move || {
    
            App::new()
                .wrap(actix_web::middleware::Logger::default())
    
    peterrabbit's avatar
    peterrabbit committed
                .wrap(actix_web::middleware::Compress::default())
    
                .wrap(RedirectHttps::default().to_port(port_tls))
    
    peterrabbit's avatar
    peterrabbit committed
                .app_data(actix_web::web::Data::clone(&app_state))
    
    peterrabbit's avatar
    peterrabbit committed
                .app_data(actix_web::web::Data::clone(&static_files_manager))
    
    peterrabbit's avatar
    peterrabbit committed
                .app_data(actix_web::web::Data::new(website.clone()))
    
                .service(service::page)
    
    peterrabbit's avatar
    peterrabbit committed
        })
    
    peterrabbit's avatar
    peterrabbit committed
        .bind(format!("{}:{}", host, port))?
        .bind_rustls(format!("{}:{}", host, port_tls), srv_conf)?
    
    peterrabbit's avatar
    peterrabbit committed
        .run()
        .await