vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 18fbc1ccf66d9242e515107374130baf04e3e769
parent ff8db4fd78bd20c141481bf7de0374f1834f760d
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sat, 21 Oct 2023 17:58:15 +0200

Merge pull request #3909 from tobiasmboelz/reopen-log-file

Reopen log file on SIGHUP
Diffstat:
MCargo.lock | 13+++++++++++++
MCargo.toml | 2+-
Msrc/main.rs | 11++++++++++-
3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -878,7 +878,9 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" dependencies = [ + "libc", "log", + "reopen", "syslog", ] @@ -2349,6 +2351,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] +name = "reopen" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff42cec3acf85845f5b18b3cbb7fec619ccbd4a349f6ecbe1c62ab46d4d98293" +dependencies = [ + "autocfg", + "libc", + "signal-hook", +] + +[[package]] name = "reqwest" version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/Cargo.toml b/Cargo.toml @@ -41,7 +41,7 @@ syslog = "6.1.0" [dependencies] # Logging log = "0.4.20" -fern = { version = "0.6.2", features = ["syslog-6"] } +fern = { version = "0.6.2", features = ["syslog-6", "reopen-1"] } tracing = { version = "0.1.37", features = ["log"] } # Needed to have lettre and webauthn-rs trace logging to work # A `dotenv` implementation for Rust diff --git a/src/main.rs b/src/main.rs @@ -326,7 +326,16 @@ fn init_logging(level: log::LevelFilter) -> Result<(), fern::InitError> { } if let Some(log_file) = CONFIG.log_file() { - logger = logger.chain(fern::log_file(log_file)?); + #[cfg(windows)] + { + logger = logger.chain(fern::log_file(log_file)?); + } + #[cfg(not(windows))] + { + const SIGHUP: i32 = tokio::signal::unix::SignalKind::hangup().as_raw_value(); + let path = Path::new(&log_file); + logger = logger.chain(fern::log_reopen1(path, [SIGHUP])?); + } } #[cfg(not(windows))]