Support reloading via systemd (#3144)

This commit is contained in:
Firstyear 2024-10-26 11:24:58 +10:00 committed by GitHub
parent dc56a3217d
commit b7e682c43f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 3 deletions

View file

@ -7,7 +7,7 @@ After=chronyd.service ntpd.service network-online.target
[Service]
DynamicUser=yes
Type=notify
Type=notify-reload
ExecStart=/usr/local/sbin/kanidm_unixd
CacheDirectory=kanidm-unixd

View file

@ -8,7 +8,7 @@ Wants=time-sync.target network-online.target
Before=radiusd.service
[Service]
Type=notify
Type=notify-reload
DynamicUser=yes
StateDirectory=kanidm
StateDirectoryMode=0750

View file

@ -781,7 +781,14 @@ async fn kanidm_main(
tokio::signal::unix::signal(sigterm).unwrap().recv().await
} => {
// Reload TLS certificates
sctx.tls_acceptor_reload().await
// systemd has a special reload handler for this.
#[cfg(target_os = "linux")]
let _ = sd_notify::notify(true, &[sd_notify::NotifyState::Reloading]);
sctx.tls_acceptor_reload().await;
#[cfg(target_os = "linux")]
let _ = sd_notify::notify(true, &[sd_notify::NotifyState::Ready]);
}
Some(()) = async move {
let sigterm = tokio::signal::unix::SignalKind::user_defined1();