use std::sync::Arc;
use axum::Router;
use tokio::net::TcpListener;
use tokio_util::sync::CancellationToken;
pub const DEFAULT_MTLS_PORT: u16 = 5642;
pub async fn start(
port: u16,
certmesh_core: Arc<koi_certmesh::CertmeshCore>,
cert_pem: &str,
key_pem: &str,
ca_cert_pem: &str,
cancel: CancellationToken,
) -> anyhow::Result<()> {
let config = koi_certmesh::mtls::build_server_config(cert_pem, key_pem, ca_cert_pem)?;
let app = Router::new().nest("/v1/certmesh", certmesh_core.inter_node_routes());
let listener = TcpListener::bind(("0.0.0.0", port)).await?;
tracing::info!(port, "mTLS adapter listening");
koi_certmesh::mtls::serve(app, listener, config, cancel).await?;
Ok(())
}