summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathijs van Veluw <[email protected]>2024-10-11 18:58:25 +0200
committerGitHub <[email protected]>2024-10-11 18:58:25 +0200
commitcd195ff24339056bc5246bd5ee9106379e7fb6e6 (patch)
tree6e98e882a702316f7ca21cfcde3d895ab158b252
parente3541763fd349e9b66142f5119041db89fbf97a6 (diff)
downloadvaultwarden-cd195ff24339056bc5246bd5ee9106379e7fb6e6.tar.gz
vaultwarden-cd195ff24339056bc5246bd5ee9106379e7fb6e6.zip
Fix `--version` from failing without config (#5055)1.32.2
* Fix `--version` from failing without config Since we added the option to show the web-vault version also when running `--version` this causes the config to always be validated. While this is not very bad in general, it could cause the command to quit during the config validation, and not show the version, but also errors. This is probably not very useful for this specific command, unlike the `--backup` for example. To fix this, and preventing the config from being validated, i added an AtomicBool to check if we need to validate the config on first load. This prevents errors, and will just show the Vaultwarden version, and if possible the web-vault version too. Fixes #5046 Signed-off-by: BlackDex <[email protected]> * Adjusted the code bsaed upon review Signed-off-by: BlackDex <[email protected]> --------- Signed-off-by: BlackDex <[email protected]>
-rw-r--r--src/config.rs11
-rw-r--r--src/db/models/emergency_access.rs2
-rw-r--r--src/main.rs3
3 files changed, 12 insertions, 4 deletions
diff --git a/src/config.rs b/src/config.rs
index eb765b09..1a384701 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -1,6 +1,9 @@
use std::env::consts::EXE_SUFFIX;
use std::process::exit;
-use std::sync::RwLock;
+use std::sync::{
+ atomic::{AtomicBool, Ordering},
+ RwLock,
+};
use job_scheduler_ng::Schedule;
use once_cell::sync::Lazy;
@@ -17,6 +20,8 @@ static CONFIG_FILE: Lazy<String> = Lazy::new(|| {
get_env("CONFIG_FILE").unwrap_or_else(|| format!("{data_folder}/config.json"))
});
+pub static SKIP_CONFIG_VALIDATION: AtomicBool = AtomicBool::new(false);
+
pub static CONFIG: Lazy<Config> = Lazy::new(|| {
Config::load().unwrap_or_else(|e| {
println!("Error loading config:\n {e:?}\n");
@@ -1105,7 +1110,9 @@ impl Config {
// Fill any missing with defaults
let config = builder.build();
- validate_config(&config)?;
+ if !SKIP_CONFIG_VALIDATION.load(Ordering::Relaxed) {
+ validate_config(&config)?;
+ }
Ok(Config {
inner: RwLock::new(Inner {
diff --git a/src/db/models/emergency_access.rs b/src/db/models/emergency_access.rs
index e1b85ec6..f4f3b9a9 100644
--- a/src/db/models/emergency_access.rs
+++ b/src/db/models/emergency_access.rs
@@ -26,7 +26,7 @@ db_object! {
}
}
-/// Local methods
+// Local methods
impl EmergencyAccess {
pub fn new(grantor_uuid: String, email: String, status: i32, atype: i32, wait_time_days: i32) -> Self {
diff --git a/src/main.rs b/src/main.rs
index 33c38027..a0b40a84 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -62,7 +62,7 @@ use crate::api::{WS_ANONYMOUS_SUBSCRIPTIONS, WS_USERS};
pub use config::CONFIG;
pub use error::{Error, MapResult};
use rocket::data::{Limits, ToByteUnit};
-use std::sync::Arc;
+use std::sync::{atomic::Ordering, Arc};
pub use util::is_running_in_container;
#[rocket::main]
@@ -124,6 +124,7 @@ fn parse_args() {
print!("{HELP}");
exit(0);
} else if pargs.contains(["-v", "--version"]) {
+ config::SKIP_CONFIG_VALIDATION.store(true, Ordering::Relaxed);
let web_vault_version = util::get_web_vault_version();
println!("Vaultwarden {version}");
println!("Web-Vault {web_vault_version}");