All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use actix::Actor;
 | 
						|
use central_backend::app_config::AppConfig;
 | 
						|
use central_backend::crypto::pki;
 | 
						|
use central_backend::energy::energy_actor::EnergyActor;
 | 
						|
use central_backend::server::servers;
 | 
						|
use central_backend::utils::files_utils::create_directory_if_missing;
 | 
						|
use futures::future;
 | 
						|
use tokio_schedule::{Job, every};
 | 
						|
 | 
						|
#[actix_web::main]
 | 
						|
async fn main() -> std::io::Result<()> {
 | 
						|
    // Load additional config from file, if requested
 | 
						|
    AppConfig::parse_env_file().expect("Failed to parse environment file!");
 | 
						|
 | 
						|
    // Initialize OpenSSL
 | 
						|
    openssl_sys::init();
 | 
						|
 | 
						|
    env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
 | 
						|
 | 
						|
    // Initialize storage
 | 
						|
    create_directory_if_missing(AppConfig::get().pki_path()).unwrap();
 | 
						|
    create_directory_if_missing(AppConfig::get().devices_config_path()).unwrap();
 | 
						|
    create_directory_if_missing(AppConfig::get().relays_runtime_stats_storage_path()).unwrap();
 | 
						|
    create_directory_if_missing(AppConfig::get().energy_consumption_history()).unwrap();
 | 
						|
    create_directory_if_missing(AppConfig::get().logs_dir()).unwrap();
 | 
						|
    create_directory_if_missing(AppConfig::get().ota_dir()).unwrap();
 | 
						|
 | 
						|
    // Initialize PKI
 | 
						|
    pki::initialize_root_ca().expect("Failed to initialize Root CA!");
 | 
						|
    pki::initialize_web_ca().expect("Failed to initialize web CA!");
 | 
						|
    pki::initialize_devices_ca().expect("Failed to initialize devices CA!");
 | 
						|
    pki::initialize_server_ca().expect("Failed to initialize server certificate!");
 | 
						|
 | 
						|
    // Initialize CRL
 | 
						|
    pki::refresh_crls().expect("Failed to initialize Root CA!");
 | 
						|
    let refresh_crl = every(1).hour().perform(|| async {
 | 
						|
        log::info!("Periodic refresh of CRLs...");
 | 
						|
        if let Err(e) = pki::refresh_crls() {
 | 
						|
            log::error!("Failed to perform auto refresh of CRLs! {e}");
 | 
						|
        }
 | 
						|
    });
 | 
						|
    tokio::spawn(refresh_crl);
 | 
						|
 | 
						|
    // Initialize energy actor
 | 
						|
    let actor = EnergyActor::new()
 | 
						|
        .await
 | 
						|
        .expect("Failed to initialize energy actor!")
 | 
						|
        .start();
 | 
						|
 | 
						|
    let s1 = servers::secure_server(actor.clone());
 | 
						|
    let s2 = servers::unsecure_server(actor);
 | 
						|
    future::try_join(s1, s2)
 | 
						|
        .await
 | 
						|
        .expect("Failed to start servers!");
 | 
						|
 | 
						|
    Ok(())
 | 
						|
}
 |