diff --git a/src/common.rs b/src/common.rs index 0b475805d..489f5c165 100644 --- a/src/common.rs +++ b/src/common.rs @@ -799,3 +799,22 @@ pub fn decode64>(input: T) -> Result, base64::DecodeError #[allow(deprecated)] base64::decode(input) } + +pub async fn get_key(sync: bool) -> String { + let mut key = if sync { + Config::get_option("key") + } else { + let mut options = crate::ipc::get_options_async().await; + options.remove("key").unwrap_or_default() + }; + if key.is_empty() { + #[cfg(windows)] + if let Some(lic) = windows::get_license() { + return lic.key; + } + } + if key.is_empty() && !option_env!("RENDEZVOUS_SERVER").unwrap_or("").is_empty() { + key = config::RS_PUB_KEY.to_owned(); + } + key +} diff --git a/src/platform/mod.rs b/src/platform/mod.rs index f2b609d3f..0aa23e7e3 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -22,14 +22,6 @@ use hbb_common::{message_proto::CursorData, ResultType}; #[cfg(not(target_os = "macos"))] const SERVICE_INTERVAL: u64 = 300; -pub fn get_license_key() -> String { - #[cfg(windows)] - if let Some(lic) = windows::get_license() { - return lic.key; - } - Default::default() -} - pub fn is_xfce() -> bool { #[cfg(target_os = "linux")] { diff --git a/src/server.rs b/src/server.rs index 7807c4fac..1f174ef03 100644 --- a/src/server.rs +++ b/src/server.rs @@ -262,10 +262,7 @@ async fn create_relay_connection_( ) .await?; let mut msg_out = RendezvousMessage::new(); - let mut licence_key = Config::get_option("key"); - if licence_key.is_empty() { - licence_key = crate::platform::get_license_key(); - } + let licence_key = crate::get_key(true).await; msg_out.set_request_relay(RequestRelay { licence_key, uuid, diff --git a/src/ui_session_interface.rs b/src/ui_session_interface.rs index 5bf065a0b..2fd095347 100644 --- a/src/ui_session_interface.rs +++ b/src/ui_session_interface.rs @@ -13,7 +13,7 @@ use bytes::Bytes; use rdev::{Event, EventType::*}; use uuid::Uuid; -use hbb_common::config::{Config, LocalConfig, PeerConfig, RS_PUB_KEY}; +use hbb_common::config::{Config, LocalConfig, PeerConfig}; use hbb_common::rendezvous_proto::ConnType; use hbb_common::tokio::{self, sync::mpsc}; use hbb_common::{allow_err, message_proto::*}; @@ -1055,15 +1055,8 @@ impl Session { pub async fn io_loop(handler: Session) { let (sender, mut receiver) = mpsc::unbounded_channel::(); *handler.sender.write().unwrap() = Some(sender.clone()); - let mut options = crate::ipc::get_options_async().await; - let mut key = options.remove("key").unwrap_or("".to_owned()); let token = LocalConfig::get_option("access_token"); - if key.is_empty() { - key = crate::platform::get_license_key(); - } - if key.is_empty() && !option_env!("RENDEZVOUS_SERVER").unwrap_or("").is_empty() { - key = RS_PUB_KEY.to_owned(); - } + let key = crate::get_key(false).await; #[cfg(not(any(target_os = "android", target_os = "ios")))] if handler.is_port_forward() { if handler.is_rdp() {