30 lines
1,000 B
Rust
30 lines
1,000 B
Rust
use tracing::info;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> eyre::Result<()> {
|
|
tracing_subscriber::fmt::init();
|
|
|
|
let creds_dir = std::path::PathBuf::try_from(std::env::var("CREDENTIALS_DIRECTORY")?)?;
|
|
let vsock_port = std::fs::read_to_string(creds_dir.join("sidebus.port"))?
|
|
.trim()
|
|
.parse::<u32>()?;
|
|
let vsock_addr = zbus::Address::from(zbus::address::Transport::Vsock(
|
|
zbus::address::transport::Vsock::new(2, vsock_port),
|
|
));
|
|
|
|
info!("connecting to session bus");
|
|
let session_conn = zbus::connection::Builder::session()?.p2p().build().await?;
|
|
|
|
let vsock_conn = zbus::connection::Builder::address(vsock_addr)?
|
|
.server(session_conn.server_guid())
|
|
.unwrap()
|
|
.p2p()
|
|
.auth_mechanism(zbus::AuthMechanism::Anonymous)
|
|
.build()
|
|
.await
|
|
.unwrap();
|
|
info!(guid = %vsock_conn.server_guid(), "connected to vsock bus");
|
|
sidebus_common::raw::splice_conns(vsock_conn, session_conn).await;
|
|
|
|
Ok(())
|
|
}
|