generated from Patagia/template-nix
Compare commits
1 commit
d9472f8e3b
...
d8c9107839
Author | SHA1 | Date | |
---|---|---|---|
d8c9107839 |
19 changed files with 60 additions and 23 deletions
17
Cargo.lock
generated
17
Cargo.lock
generated
|
@ -993,7 +993,8 @@ name = "hostd"
|
|||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"internal",
|
||||
"ipc",
|
||||
"systemd-ipc",
|
||||
"varlink",
|
||||
]
|
||||
|
||||
|
@ -1354,7 +1355,7 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "internal"
|
||||
name = "ipc"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"serde",
|
||||
|
@ -3129,6 +3130,18 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "systemd-ipc"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"varlink",
|
||||
"varlink_generator",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "take_mut"
|
||||
version = "0.2.2"
|
||||
|
|
|
@ -7,7 +7,8 @@ members = [
|
|||
"hostd",
|
||||
"trace-request",
|
||||
"xtask",
|
||||
"internal",
|
||||
"ipc",
|
||||
"systemd-ipc",
|
||||
]
|
||||
default-members = [
|
||||
"agent",
|
||||
|
|
|
@ -6,4 +6,5 @@ edition.workspace = true
|
|||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
varlink = "11.0.1"
|
||||
internal = { path = "../internal" }
|
||||
ipc = { path = "../ipc" }
|
||||
systemd-ipc = { path = "../systemd-ipc" }
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
use anyhow::Result;
|
||||
|
||||
use internal::ipc::patagia::io_patagia_hostd;
|
||||
use internal::ipc::systemd::io_systemd_hostname::{self, VarlinkClientInterface};
|
||||
|
||||
const LISTEN_ADDRESS: &str = "unix:/tmp/patagia/io.patagia.hostd";
|
||||
const SYSTEMD_ADDRESS: &str = "unix:/run/systemd/io.systemd.Hostname";
|
||||
use ipc::io_patagia_hostd;
|
||||
use systemd_ipc::addrs::SYSTEMD_HOSTNAME;
|
||||
use systemd_ipc::io_systemd_hostname::{self, VarlinkClientInterface};
|
||||
|
||||
struct PatagiaHostd;
|
||||
|
||||
|
@ -21,7 +19,7 @@ impl io_patagia_hostd::VarlinkInterface for PatagiaHostd {
|
|||
|
||||
fn describe(&self, call: &mut dyn io_patagia_hostd::Call_Describe) -> varlink::Result<()> {
|
||||
// Connect to systemd.Hostname
|
||||
let conn = varlink::Connection::with_address(SYSTEMD_ADDRESS).unwrap();
|
||||
let conn = varlink::Connection::with_address(SYSTEMD_HOSTNAME).unwrap();
|
||||
let mut sd = io_systemd_hostname::VarlinkClient::new(conn);
|
||||
|
||||
let machine = io_patagia_hostd::Machine {
|
||||
|
@ -45,20 +43,14 @@ fn main() -> Result<()> {
|
|||
vec![Box::new(hostd_iface)],
|
||||
);
|
||||
|
||||
let addr_path = std::path::Path::new(LISTEN_ADDRESS.strip_prefix("unix:").unwrap())
|
||||
.parent()
|
||||
.unwrap();
|
||||
let addr = format!("unix:{}/{}", env!("XDG_RUNTIME_DIR"), "io.patagia.hostd");
|
||||
|
||||
std::fs::create_dir_all(addr_path)?;
|
||||
|
||||
println!("Varlink Listening on {}", LISTEN_ADDRESS);
|
||||
println!("Varlink Listening on {}", addr);
|
||||
|
||||
varlink::listen(
|
||||
svc,
|
||||
LISTEN_ADDRESS,
|
||||
&addr,
|
||||
&varlink::ListenConfig {
|
||||
// Listen forever (0 = forever)
|
||||
idle_timeout: 0,
|
||||
..Default::default()
|
||||
},
|
||||
)?;
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
pub mod patagia;
|
||||
pub mod systemd;
|
|
@ -1 +0,0 @@
|
|||
pub mod ipc;
|
0
internal/.gitignore → ipc/.gitignore
vendored
0
internal/.gitignore → ipc/.gitignore
vendored
|
@ -1,5 +1,5 @@
|
|||
[package]
|
||||
name = "internal"
|
||||
name = "ipc"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
|
1
systemd-ipc/.gitignore
vendored
Normal file
1
systemd-ipc/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/target
|
17
systemd-ipc/Cargo.toml
Normal file
17
systemd-ipc/Cargo.toml
Normal file
|
@ -0,0 +1,17 @@
|
|||
[package]
|
||||
name = "systemd-ipc"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
|
||||
[dependencies]
|
||||
serde.workspace = true
|
||||
serde_derive = "1.0.217"
|
||||
serde_json = "1.0.135"
|
||||
varlink = "11.0.1"
|
||||
|
||||
[build-dependencies]
|
||||
varlink_generator = "10.1.0"
|
||||
walkdir = "2.5.0"
|
||||
|
||||
[package.metadata.cargo-machete]
|
||||
ignored = ["serde"]
|
12
systemd-ipc/build.rs
Normal file
12
systemd-ipc/build.rs
Normal file
|
@ -0,0 +1,12 @@
|
|||
extern crate varlink_generator;
|
||||
|
||||
use walkdir::WalkDir;
|
||||
|
||||
fn main() {
|
||||
// walk dir to find varlink files
|
||||
for entry in WalkDir::new("src").into_iter().filter_map(|e| e.ok()) {
|
||||
if entry.file_name().to_str().unwrap().ends_with(".varlink") {
|
||||
varlink_generator::cargo_build_tosource(&entry.path().display().to_string(), true);
|
||||
}
|
||||
}
|
||||
}
|
2
systemd-ipc/src/addrs.rs
Normal file
2
systemd-ipc/src/addrs.rs
Normal file
|
@ -0,0 +1,2 @@
|
|||
#[allow(dead_code)]
|
||||
pub const SYSTEMD_HOSTNAME: &str = "unix:/run/systemd/io.systemd.Hostname";
|
|
@ -1 +1,2 @@
|
|||
pub mod addrs;
|
||||
pub mod io_systemd_hostname;
|
Loading…
Add table
Add a link
Reference in a new issue