sprinkle with systemd magic

This commit is contained in:
Astro 2022-12-17 00:20:30 +01:00
parent 33ec144979
commit 170ff43d1c
4 changed files with 86 additions and 5 deletions

80
Cargo.lock generated
View File

@ -10,6 +10,7 @@ dependencies = [
"futures",
"serde",
"serde_json",
"systemd",
"tokio",
"tokio-xmpp",
"tracing",
@ -123,6 +124,12 @@ dependencies = [
"generic-array",
]
[[package]]
name = "build-env"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1522ac6ee801a11bf9ef3f80403f4ede6eb41291fac3dde3de09989679305f25"
[[package]]
name = "bytes"
version = "1.3.0"
@ -196,6 +203,16 @@ dependencies = [
"subtle",
]
[[package]]
name = "cstr-argument"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
dependencies = [
"cfg-if",
"memchr",
]
[[package]]
name = "data-encoding"
version = "2.3.3"
@ -255,7 +272,28 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
"foreign-types-shared 0.1.1",
]
[[package]]
name = "foreign-types"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
dependencies = [
"foreign-types-macros",
"foreign-types-shared 0.3.1",
]
[[package]]
name = "foreign-types-macros"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8469d0d40519bc608ec6863f1cc88f3f1deee15913f2f3b3e573d81ed38cccc"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
@ -264,6 +302,12 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "foreign-types-shared"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
[[package]]
name = "form_urlencoded"
version = "1.1.0"
@ -566,6 +610,17 @@ version = "0.2.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
[[package]]
name = "libsystemd-sys"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed080163caa59cc29b34bce2209b737149a4bac148cd9a8b04e4c12822798119"
dependencies = [
"build-env",
"libc",
"pkg-config",
]
[[package]]
name = "linked-hash-map"
version = "0.5.6"
@ -737,7 +792,7 @@ checksum = "29d971fd5722fec23977260f6e81aa67d2f22cadbdc2aa049f1022d9a3be1566"
dependencies = [
"bitflags",
"cfg-if",
"foreign-types",
"foreign-types 0.3.2",
"libc",
"once_cell",
"openssl-macros",
@ -1294,6 +1349,21 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8"
[[package]]
name = "systemd"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afec0101d9ae8ab26aedf0840109df689938ea7e538aa03df4369f1854f11562"
dependencies = [
"cstr-argument",
"foreign-types 0.5.0",
"libc",
"libsystemd-sys",
"log",
"memchr",
"utf8-cstr",
]
[[package]]
name = "tempfile"
version = "3.3.0"
@ -1641,6 +1711,12 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "utf8-cstr"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55bcbb425141152b10d5693095950b51c3745d019363fc2929ffd8f61449b628"
[[package]]
name = "valuable"
version = "0.1.0"

View File

@ -15,3 +15,4 @@ serde_json = "1"
tokio-xmpp = "3"
xmpp-parsers = "0.19"
axum = "0.6"
systemd = "0.10"

View File

@ -66,6 +66,8 @@ pub async fn run(jid: String, password: String, muc_jid: String) -> Handle {
Err(err) => println!("Received invalid presence: {:?}", err),
}
}
systemd::daemon::notify(false, [(systemd::daemon::STATE_WATCHDOG, "1")].iter())
.unwrap();
}
_ => {}
}

View File

@ -84,8 +84,10 @@ async fn main() {
let addr = SocketAddr::from(([127, 0, 0, 1], 9022));
tracing::debug!("listening on {}", addr);
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
let server = axum::Server::bind(&addr)
.serve(app.into_make_service());
systemd::daemon::notify(false, [(systemd::daemon::STATE_READY, "1")].iter())
.unwrap();
server.await
.unwrap();
}