feature/embbed-frontend #7
@@ -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};
|
||||
|
||||
@@ -26,15 +28,38 @@ pub async fn start_master_server(
|
||||
println!("Certificate generated and stored successfully.");
|
||||
}
|
||||
|
||||
// Initialize agent connector
|
||||
let mut agent_connector = crate::connector::agent::AgentConnector::new(Box::new(
|
||||
crate::connector::agent::ssh::SshAgentConnector::new(settings.clone())?,
|
||||
));
|
||||
let ssh_connector = crate::connector::agent::ssh::SshAgentConnector::new(settings.clone())?;
|
||||
let cert_service_for_agent = cert_service.clone();
|
||||
let settings_for_agent = settings.clone();
|
||||
let connection_for_agent = db_connection.clone();
|
||||
|
||||
// Start the agent server
|
||||
agent_connector
|
||||
.start_server(&settings, cert_service, db_connection)
|
||||
.await?;
|
||||
tokio::spawn(async move {
|
||||
let mut connector = ssh_connector;
|
||||
tracing::info!("Starting agent server...");
|
||||
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(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user