Skip to content

Commit

Permalink
Fix --version from failing without config (#5055)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
BlackDex authored Oct 11, 2024
1 parent e354176 commit cd195ff
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
11 changes: 9 additions & 2 deletions src/config.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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");
Expand Down Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/db/models/emergency_access.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
3 changes: 2 additions & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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}");
Expand Down

0 comments on commit cd195ff

Please sign in to comment.