Revert "Fix/mobile connection login state"

This commit is contained in:
RustDesk
2023-06-23 18:25:42 +08:00
committed by GitHub
parent 74dc8536be
commit e30f09e7f7
13 changed files with 122 additions and 170 deletions

View File

@@ -1,3 +1,9 @@
use std::{
collections::HashMap,
process::Child,
sync::{Arc, Mutex},
};
#[cfg(any(target_os = "android", target_os = "ios"))]
use hbb_common::password_security;
use hbb_common::{
@@ -10,12 +16,6 @@ use hbb_common::{
sleep,
tokio::{sync::mpsc, time},
};
use serde_derive::Serialize;
use std::{
collections::HashMap,
process::Child,
sync::{Arc, Mutex},
};
use hbb_common::{
config::{CONNECT_TIMEOUT, RENDEZVOUS_PORT},
@@ -32,28 +32,10 @@ use crate::ipc;
type Message = RendezvousMessage;
pub type Children = Arc<Mutex<(bool, HashMap<(String, String), Child>)>>;
#[derive(Clone, Debug, Serialize)]
pub struct UiStatus {
pub status_num: i32,
#[cfg(not(feature = "flutter"))]
pub key_confirmed: bool,
#[cfg(not(any(target_os = "android", target_os = "ios")))]
pub mouse_time: i64,
#[cfg(not(feature = "flutter"))]
pub id: String,
}
type Status = (i32, bool, i64, String); // (status_num, key_confirmed, mouse_time, id)
lazy_static::lazy_static! {
static ref UI_STATUS : Arc<Mutex<UiStatus>> = Arc::new(Mutex::new(UiStatus{
status_num: 0,
#[cfg(not(feature = "flutter"))]
key_confirmed: false,
#[cfg(not(any(target_os = "android", target_os = "ios")))]
mouse_time: 0,
#[cfg(not(feature = "flutter"))]
id: "".to_owned(),
}));
static ref UI_STATUS : Arc<Mutex<Status>> = Arc::new(Mutex::new((0, false, 0, "".to_owned())));
static ref OPTIONS : Arc<Mutex<HashMap<String, String>>> = Arc::new(Mutex::new(Config::get_options()));
static ref ASYNC_JOB_STATUS : Arc<Mutex<String>> = Default::default();
static ref TEMPORARY_PASSWD : Arc<Mutex<String>> = Arc::new(Mutex::new("".to_owned()));
@@ -411,9 +393,10 @@ pub fn is_installed_lower_version() -> bool {
}
#[inline]
#[cfg(not(any(target_os = "android", target_os = "ios")))]
pub fn get_mouse_time() -> f64 {
UI_STATUS.lock().unwrap().mouse_time as f64
let ui_status = UI_STATUS.lock().unwrap();
let res = ui_status.2 as f64;
return res;
}
#[inline]
@@ -426,9 +409,10 @@ pub fn check_mouse_time() {
}
#[inline]
#[cfg(not(any(target_os = "android", target_os = "ios")))]
pub fn get_connect_status() -> UiStatus {
UI_STATUS.lock().unwrap().clone()
pub fn get_connect_status() -> Status {
let ui_statue = UI_STATUS.lock().unwrap();
let res = ui_statue.clone();
res
}
#[inline]
@@ -873,13 +857,10 @@ pub fn get_hostname() -> String {
#[cfg(not(any(target_os = "android", target_os = "ios")))]
#[tokio::main(flavor = "current_thread")]
async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc::Data>) {
#[cfg(not(feature = "flutter"))]
let mut key_confirmed = false;
let mut rx = rx;
let mut mouse_time = 0;
#[cfg(not(feature = "flutter"))]
let mut id = "".to_owned();
#[cfg(target_os = "windows")]
let mut enable_file_transfer = "".to_owned();
loop {
@@ -893,10 +874,9 @@ async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc:
log::error!("ipc connection closed: {}", err);
break;
}
#[cfg(not(any(target_os = "android", target_os = "ios")))]
Ok(Some(ipc::Data::MouseMoveTime(v))) => {
mouse_time = v;
UI_STATUS.lock().unwrap().mouse_time = v;
UI_STATUS.lock().unwrap().2 = v;
}
Ok(Some(ipc::Data::Options(Some(v)))) => {
*OPTIONS.lock().unwrap() = v;
@@ -913,31 +893,17 @@ async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc:
}
Ok(Some(ipc::Data::Config((name, Some(value))))) => {
if name == "id" {
#[cfg(not(feature = "flutter"))]
{
id = value;
}
id = value;
} else if name == "temporary-password" {
*TEMPORARY_PASSWD.lock().unwrap() = value;
}
}
Ok(Some(ipc::Data::OnlineStatus(Some((mut x, _c))))) => {
Ok(Some(ipc::Data::OnlineStatus(Some((mut x, c))))) => {
if x > 0 {
x = 1
}
#[cfg(not(feature = "flutter"))]
{
key_confirmed = _c;
}
*UI_STATUS.lock().unwrap() = UiStatus {
status_num: x as _,
#[cfg(not(feature = "flutter"))]
key_confirmed: _c,
#[cfg(not(any(target_os = "android", target_os = "ios")))]
mouse_time,
#[cfg(not(feature = "flutter"))]
id: id.clone(),
};
key_confirmed = c;
*UI_STATUS.lock().unwrap() = (x as _, key_confirmed, mouse_time, id.clone());
}
_ => {}
}
@@ -961,15 +927,7 @@ async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc:
.insert("ipc-closed".to_owned(), "Y".to_owned());
break;
}
*UI_STATUS.lock().unwrap() = UiStatus {
status_num: -1,
#[cfg(not(feature = "flutter"))]
key_confirmed,
#[cfg(not(any(target_os = "android", target_os = "ios")))]
mouse_time,
#[cfg(not(feature = "flutter"))]
id: id.clone(),
};
*UI_STATUS.lock().unwrap() = (-1, key_confirmed, mouse_time, id.clone());
sleep(1.).await;
}
}