rhombus 0.2.21

Next generation extendable CTF framework with batteries included
Documentation
use axum::Router;

use std::net::SocketAddr;
use tokio::net::TcpListener;
use tracing::info;

pub async fn serve_systemfd(router: Router) -> std::result::Result<(), std::io::Error> {
    let listener = listenfd::ListenFd::from_env()
        .take_tcp_listener(0)?
        .unwrap();
    tracing::debug!("restored socket from listenfd");
    listener.set_nonblocking(true).unwrap();
    let listener = TcpListener::from_std(listener).unwrap();

    info!(
        address = listener.local_addr().unwrap().to_string(),
        "listening on"
    );
    axum::serve(
        listener,
        router.into_make_service_with_connect_info::<SocketAddr>(),
    )
    .await?;

    Ok(())
}