Files
honey-biscuit-workshop/workshop-agent/src/main.rs
T
2025-11-13 23:49:16 +08:00

46 lines
1.3 KiB
Rust

use log::info;
use actix_web::{web, App, HttpServer};
mod config;
mod tls;
mod error;
mod handler;
mod init;
mod state;
#[actix_web::main]
async fn main() -> Result<(), ()> {
env_logger::init();
info!("Starting workshop-agent...");
let config = config::ServerConfig::init().unwrap();
let token = if config.is_tls_enabled() {
None
} else {
let _token = init::generate_token();
println!("Generated token: {}", _token);
Some(_token)
};
let appstate = web::Data::new(state::AppState {
use_tls: config.is_tls_enabled(),
token,
});
let mut server = HttpServer::new(move || App::new()
.app_data(appstate.clone())
.service(handler::index)
.service(handler::ping)
.service(handler::init));
if config.is_tls_enabled() {
let tls_certs_file = config.tls.clone().unwrap().cert;
let tls_key_file = config.tls.clone().unwrap().key;
let tls_config = tls::load_rustls_config(&tls_certs_file, &tls_key_file).unwrap();
info!("Configuring TLS...");
server = server.bind_rustls_0_23(config.bind_address(), tls_config).unwrap();
}
else {
server = server.bind(config.bind_address()).unwrap();
}
let _ = server.run().await;
Ok(())
}