feat: Refactor agent server initialization to support parallel api server

This commit is contained in:
GW_MC
2026-04-18 07:31:29 +00:00
parent e2d364722b
commit bbde3c1b60

View File

@@ -1,4 +1,6 @@
use std::sync::Arc; use std::{net::ToSocketAddrs, sync::Arc};
use tracing::info;
use crate::{connector::agent::AgentConnectorTrait, service::certificate::CertificateService}; use crate::{connector::agent::AgentConnectorTrait, service::certificate::CertificateService};
@@ -26,15 +28,38 @@ pub async fn start_master_server(
println!("Certificate generated and stored successfully."); println!("Certificate generated and stored successfully.");
} }
// Initialize agent connector let ssh_connector = crate::connector::agent::ssh::SshAgentConnector::new(settings.clone())?;
let mut agent_connector = crate::connector::agent::AgentConnector::new(Box::new( let cert_service_for_agent = cert_service.clone();
crate::connector::agent::ssh::SshAgentConnector::new(settings.clone())?, let settings_for_agent = settings.clone();
)); let connection_for_agent = db_connection.clone();
// Start the agent server tokio::spawn(async move {
agent_connector let mut connector = ssh_connector;
.start_server(&settings, cert_service, db_connection) tracing::info!("Starting agent server...");
.await?; if let Err(e) = connector
.start_server(
&settings_for_agent,
cert_service_for_agent,
connection_for_agent,
)
.await
{
tracing::error!("Agent server failed: {}", e);
} else {
tracing::info!("Agent server stopped.");
}
});
let axum_router = crate::routes::get_root_router().await;
// Start the HTTP server
let addr = format!("{}:{}", settings.server.bind_address, settings.server.port)
.to_socket_addrs()?
.next()
.ok_or("Invalid bind address")?;
let listener = tokio::net::TcpListener::bind(addr).await?;
info!("Web/API server is listening on {}", addr);
axum::serve(listener, axum_router).await?;
Ok(()) Ok(())
} }