diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index e33cf8ebb..ff6de4430 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -2113,6 +2113,7 @@ pub mod keys { pub const OPTION_HIDE_PROXY_SETTINGS: &str = "hide-proxy-settings"; pub const OPTION_HIDE_USERNAME_ON_CARD: &str = "hide-username-on-card"; pub const OPTION_HIDE_HELP_CARDS: &str = "hide-help-cards"; + pub const OPTION_DEFAULT_CONNECT_PASSWORD: &str = "default-connect-password"; // flutter local options pub const OPTION_FLUTTER_REMOTE_MENUBAR_STATE: &str = "remoteMenubarState"; @@ -2254,6 +2255,7 @@ pub mod keys { OPTION_HIDE_PROXY_SETTINGS, OPTION_HIDE_USERNAME_ON_CARD, OPTION_HIDE_HELP_CARDS, + OPTION_DEFAULT_CONNECT_PASSWORD, ]; } diff --git a/src/client.rs b/src/client.rs index 163aae1a1..1014bc23b 100644 --- a/src/client.rs +++ b/src/client.rs @@ -543,7 +543,7 @@ impl Client { conn: &mut Stream, ) -> ResultType>> { let rs_pk = get_rs_pk(if key.is_empty() { - hbb_common::config::RS_PUB_KEY + config::RS_PUB_KEY } else { key }); @@ -2625,7 +2625,7 @@ struct LoginErrorMsgBox { lazy_static::lazy_static! { static ref LOGIN_ERROR_MAP: Arc> = { - use hbb_common::config::LINK_HEADLESS_LINUX_SUPPORT; + use config::LINK_HEADLESS_LINUX_SUPPORT; let map = HashMap::from([(LOGIN_SCREEN_WAYLAND, LoginErrorMsgBox{ msgtype: "error", title: "Login Error", @@ -2791,6 +2791,20 @@ pub async fn handle_hash( if password.is_empty() { try_get_password_from_personal_ab(lc.clone(), &mut password); } + + if password.is_empty() { + let p = + crate::ui_interface::get_buildin_option(config::keys::OPTION_DEFAULT_CONNECT_PASSWORD); + if !p.is_empty() { + let mut hasher = Sha256::new(); + hasher.update(p.clone()); + hasher.update(&hash.salt); + let res = hasher.finalize(); + password = res[..].into(); + lc.write().unwrap().password_source = PasswordSource::SharedAb(p); // reuse SharedAb here + } + } + lc.write().unwrap().password = password.clone(); let password = if password.is_empty() { // login without password, the remote side can click accept @@ -2813,7 +2827,7 @@ pub async fn handle_hash( #[inline] fn try_get_password_from_personal_ab(lc: Arc>, password: &mut Vec) { let access_token = LocalConfig::get_option("access_token"); - let ab = hbb_common::config::Ab::load(); + let ab = config::Ab::load(); if !access_token.is_empty() && access_token == ab.access_token { let id = lc.read().unwrap().id.clone(); if let Some(ab) = ab.ab_entries.iter().find(|a| a.personal()) {