brain/src/bin/brain.rs
2025-05-07 19:30:02 +03:00

52 lines
2.2 KiB
Rust

use std::sync::Arc;
use detee_shared::general_proto::brain_general_cli_server::BrainGeneralCliServer;
use detee_shared::vm_proto::brain_vm_cli_server::BrainVmCliServer;
use detee_shared::vm_proto::brain_vm_daemon_server::BrainVmDaemonServer;
use dotenv::dotenv;
use surreal_brain::constants::{BRAIN_GRPC_ADDR, CERT_KEY_PATH, CERT_PATH};
use surreal_brain::db;
use surreal_brain::grpc::general::GeneralCliServer;
use surreal_brain::grpc::vm::{VmCliServer, VmDaemonServer};
use tonic::transport::{Identity, Server, ServerTlsConfig};
#[tokio::main]
async fn main() {
if dotenv::from_filename("/etc/detee/brain/config.ini").is_err() {
dotenv().ok();
}
env_logger::builder().filter_level(log::LevelFilter::Debug).init();
let db_url = std::env::var("DB_URL").expect("the environment variable DB_URL is not set");
let db_user = std::env::var("DB_USER").expect("the environment variable DB_USER is not set");
let db_pass = std::env::var("DB_PASS").expect("the environment variable DB_PASS is not set");
let db_ns = std::env::var("DB_NAMESPACE").expect("the env variable DB_NAMESPACE is not set");
let db_name = std::env::var("DB_NAME").expect("the environment variable DB_NAME is not set");
let db = db::db_connection(&db_url, &db_user, &db_pass, &db_ns, &db_name).await.unwrap();
let db_arc = Arc::new(db);
let addr = BRAIN_GRPC_ADDR.parse().unwrap();
let snp_daemon_server = BrainVmDaemonServer::new(VmDaemonServer::new(db_arc.clone()));
let snp_cli_server = BrainVmCliServer::new(VmCliServer::new(db_arc.clone()));
let general_service_server = BrainGeneralCliServer::new(GeneralCliServer::new(db_arc.clone()));
let cert_path = std::env::var("CERT_PATH").unwrap_or(CERT_PATH.to_string());
let key_path = std::env::var("CERT_KEY_PATH").unwrap_or(CERT_KEY_PATH.to_string());
let cert = std::fs::read_to_string(cert_path).unwrap();
let key = std::fs::read_to_string(key_path).unwrap();
let identity = Identity::from_pem(cert, key);
Server::builder()
.tls_config(ServerTlsConfig::new().identity(identity))
.unwrap()
.add_service(snp_daemon_server)
.add_service(snp_cli_server)
.add_service(general_service_server)
.serve(addr)
.await
.unwrap();
}