Merge pull request #294 from hatamiarash7/master

Spell & Format
This commit is contained in:
RustDesk 2021-11-15 00:12:59 +08:00 committed by GitHub
commit 3759347d47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 79 additions and 55 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
/target /target
.vscode
.idea .idea
.DS_Store .DS_Store
src/ui/inline.rs src/ui/inline.rs

View File

@ -76,8 +76,8 @@ message PunchHoleResponse {
enum Failure { enum Failure {
ID_NOT_EXIST = 1; ID_NOT_EXIST = 1;
OFFLINE = 2; OFFLINE = 2;
LICENCE_MISMATCH = 3; LICENSE_MISMATCH = 3;
LICENCE_OVERUSE = 4; LICENSE_OVERUSE = 4;
} }
Failure failure = 3; Failure failure = 3;
string relay_server = 4; string relay_server = 4;

View File

@ -153,7 +153,10 @@ fn patch(path: PathBuf) -> PathBuf {
{ {
if _tmp == "/root" { if _tmp == "/root" {
if let Ok(output) = std::process::Command::new("whoami").output() { if let Ok(output) = std::process::Command::new("whoami").output() {
let user = String::from_utf8_lossy(&output.stdout).to_string().trim().to_owned(); let user = String::from_utf8_lossy(&output.stdout)
.to_string()
.trim()
.to_owned();
if user != "root" { if user != "root" {
return format!("/home/{}", user).into(); return format!("/home/{}", user).into();
} }

View File

@ -193,7 +193,7 @@ pub struct TransferJob {
file: Option<File>, file: Option<File>,
total_size: u64, total_size: u64,
finished_size: u64, finished_size: u64,
transfered: u64, transferred: u64,
} }
#[inline] #[inline]
@ -268,8 +268,8 @@ impl TransferJob {
} }
#[inline] #[inline]
pub fn transfered(&self) -> u64 { pub fn transferred(&self) -> u64 {
self.transfered self.transferred
} }
#[inline] #[inline]
@ -332,7 +332,7 @@ impl TransferJob {
self.file.as_mut().unwrap().write_all(&block.data).await?; self.file.as_mut().unwrap().write_all(&block.data).await?;
self.finished_size += block.data.len() as u64; self.finished_size += block.data.len() as u64;
} }
self.transfered += block.data.len() as u64; self.transferred += block.data.len() as u64;
Ok(()) Ok(())
} }
@ -398,7 +398,7 @@ impl TransferJob {
compressed = true; compressed = true;
} }
} }
self.transfered += buf.len() as u64; self.transferred += buf.len() as u64;
} }
Ok(Some(FileTransferBlock { Ok(Some(FileTransferBlock {
id: self.id, id: self.id,

View File

@ -34,7 +34,7 @@ fn new_socket(addr: std::net::SocketAddr, reuse: bool) -> Result<TcpSocket, std:
if reuse { if reuse {
// windows has no reuse_port, but it's reuse_address // windows has no reuse_port, but it's reuse_address
// almost equals to unix's reuse_port + reuse_address, // almost equals to unix's reuse_port + reuse_address,
// though may introduce nondeterministic bahavior // though may introduce nondeterministic behavior
#[cfg(unix)] #[cfg(unix)]
socket.set_reuseport(true)?; socket.set_reuseport(true)?;
socket.set_reuseaddr(true)?; socket.set_reuseaddr(true)?;

View File

@ -29,7 +29,7 @@ fn new_socket(addr: SocketAddr, reuse: bool) -> Result<Socket, std::io::Error> {
if reuse { if reuse {
// windows has no reuse_port, but it's reuse_address // windows has no reuse_port, but it's reuse_address
// almost equals to unix's reuse_port + reuse_address, // almost equals to unix's reuse_port + reuse_address,
// though may introduce nondeterministic bahavior // though may introduce nondeterministic behavior
#[cfg(unix)] #[cfg(unix)]
socket.set_reuse_port(true)?; socket.set_reuse_port(true)?;
socket.set_reuse_address(true)?; socket.set_reuse_address(true)?;

View File

@ -141,7 +141,7 @@ impl Client {
punch_hole_response::Failure::OFFLINE => { punch_hole_response::Failure::OFFLINE => {
bail!("Remote desktop is offline"); bail!("Remote desktop is offline");
} }
punch_hole_response::Failure::LICENCE_MISMATCH => { punch_hole_response::Failure::LICENSE_MISMATCH => {
bail!("Key mismatch"); bail!("Key mismatch");
} }
_ => { _ => {

View File

@ -147,7 +147,7 @@ pub async fn new_listener(postfix: &str) -> ResultType<Incoming> {
} }
Err(err) => { Err(err) => {
log::error!( log::error!(
"Faild to start ipc{} server at path {}: {}", "Failed to start ipc{} server at path {}: {}",
postfix, postfix,
path, path,
err err
@ -374,7 +374,7 @@ pub fn set_password(v: String) -> ResultType<()> {
pub fn get_id() -> String { pub fn get_id() -> String {
if let Ok(Some(v)) = get_config("id") { if let Ok(Some(v)) = get_config("id") {
// update salt also, so that nexttime reinstallation not causing first-time auto-login failure // update salt also, so that next time reinstallation not causing first-time auto-login failure
if let Ok(Some(v2)) = get_config("salt") { if let Ok(Some(v2)) = get_config("salt") {
Config::set_salt(&v2); Config::set_salt(&v2);
} }

View File

@ -417,7 +417,7 @@ pub fn fix_login_wayland() {
"sed", "sed",
"-i", "-i",
"s/#WaylandEnable=false/WaylandEnable=false/g", "s/#WaylandEnable=false/WaylandEnable=false/g",
&file &file,
]) ])
.output() .output()
{ {
@ -435,20 +435,22 @@ pub fn fix_login_wayland() {
pub fn current_is_wayland() -> bool { pub fn current_is_wayland() -> bool {
let dtype = get_display_server(); let dtype = get_display_server();
return "wayland" == dtype && unsafe{UNMODIFIED}; return "wayland" == dtype && unsafe { UNMODIFIED };
} }
pub fn modify_default_login() -> String { pub fn modify_default_login() -> String {
let dsession = std::env::var("DESKTOP_SESSION").unwrap(); let dsession = std::env::var("DESKTOP_SESSION").unwrap();
let user_name = std::env::var("USERNAME").unwrap(); let user_name = std::env::var("USERNAME").unwrap();
if let Ok(Some(x)) = run_cmds("ls /usr/share/* | grep ${DESKTOP_SESSION}-xorg.desktop".to_owned()) { if let Ok(Some(x)) =
run_cmds("ls /usr/share/* | grep ${DESKTOP_SESSION}-xorg.desktop".to_owned())
{
if x.trim_end().to_string() != "" { if x.trim_end().to_string() != "" {
match std::process::Command::new("pkexec") match std::process::Command::new("pkexec")
.args(vec![ .args(vec![
"sed", "sed",
"-i", "-i",
&format!("s/={0}$/={0}-xorg/g", &dsession), &format!("s/={0}$/={0}-xorg/g", &dsession),
&format!("/var/lib/AccountsService/users/{}", &user_name) &format!("/var/lib/AccountsService/users/{}", &user_name),
]) ])
.output() .output()
{ {
@ -458,7 +460,9 @@ pub fn modify_default_login() -> String {
log::error!("modify_default_login failed: {}", x); log::error!("modify_default_login failed: {}", x);
return "Fix failed! Please re-login with X server manually".to_owned(); return "Fix failed! Please re-login with X server manually".to_owned();
} else { } else {
unsafe {UNMODIFIED = false;} unsafe {
UNMODIFIED = false;
}
return "".to_owned(); return "".to_owned();
} }
} }
@ -467,14 +471,16 @@ pub fn modify_default_login() -> String {
return "Fix failed! Please re-login with X server manually".to_owned(); return "Fix failed! Please re-login with X server manually".to_owned();
} }
} }
} else if let Ok(Some(z)) = run_cmds("ls /usr/share/* | grep ${DESKTOP_SESSION:0:-8}.desktop".to_owned()) { } else if let Ok(Some(z)) =
run_cmds("ls /usr/share/* | grep ${DESKTOP_SESSION:0:-8}.desktop".to_owned())
{
if z.trim_end().to_string() != "" { if z.trim_end().to_string() != "" {
match std::process::Command::new("pkexec") match std::process::Command::new("pkexec")
.args(vec![ .args(vec![
"sed", "sed",
"-i", "-i",
&format!("s/={}$/={}/g", &dsession, &dsession[..dsession.len()-8]), &format!("s/={}$/={}/g", &dsession, &dsession[..dsession.len() - 8]),
&format!("/var/lib/AccountsService/users/{}", &user_name) &format!("/var/lib/AccountsService/users/{}", &user_name),
]) ])
.output() .output()
{ {
@ -484,7 +490,9 @@ pub fn modify_default_login() -> String {
log::error!("modify_default_login failed: {}", x); log::error!("modify_default_login failed: {}", x);
return "Fix failed! Please re-login with X server manually".to_owned(); return "Fix failed! Please re-login with X server manually".to_owned();
} else { } else {
unsafe {UNMODIFIED = false;} unsafe {
UNMODIFIED = false;
}
return "".to_owned(); return "".to_owned();
} }
} }

View File

@ -145,7 +145,13 @@ pub fn get_cursor_data(hcursor: u64) -> ResultType<CursorData> {
if do_outline { if do_outline {
let mut outline = Vec::new(); let mut outline = Vec::new();
outline.resize(((width + 2) * (height + 2) * 4) as _, 0); outline.resize(((width + 2) * (height + 2) * 4) as _, 0);
drawOutline(outline.as_mut_ptr(), cbits.as_ptr(), width, height, outline.len() as _); drawOutline(
outline.as_mut_ptr(),
cbits.as_ptr(),
width,
height,
outline.len() as _,
);
cbits = outline; cbits = outline;
width += 2; width += 2;
height += 2; height += 2;
@ -357,7 +363,7 @@ fn fix_cursor_mask(
let mut alpha = 255; let mut alpha = 255;
if mask_idx < bm_size { if mask_idx < bm_size {
if (mbits[mask_idx] << (x & 0x7)) & 0x80 == 0 { if (mbits[mask_idx] << (x & 0x7)) & 0x80 == 0 {
alpha = 0; alpha = 0;
} }
} }
let a = cbits[pix_idx + 2]; let a = cbits[pix_idx + 2];
@ -393,8 +399,14 @@ extern "C" {
fn LaunchProcessWin(cmd: *const u16, session_id: DWORD, as_user: BOOL) -> HANDLE; fn LaunchProcessWin(cmd: *const u16, session_id: DWORD, as_user: BOOL) -> HANDLE;
fn selectInputDesktop() -> BOOL; fn selectInputDesktop() -> BOOL;
fn inputDesktopSelected() -> BOOL; fn inputDesktopSelected() -> BOOL;
fn handleMask(out: *mut u8, mask: *const u8, width: i32, height: i32, bmWidthBytes: i32, bmHeight: i32) fn handleMask(
-> i32; out: *mut u8,
mask: *const u8,
width: i32,
height: i32,
bmWidthBytes: i32,
bmHeight: i32,
) -> i32;
fn drawOutline(out: *mut u8, in_: *const u8, width: i32, height: i32, out_size: i32); fn drawOutline(out: *mut u8, in_: *const u8, width: i32, height: i32, out_size: i32);
fn get_di_bits(out: *mut u8, dc: HDC, hbmColor: HBITMAP, width: i32, height: i32) -> i32; fn get_di_bits(out: *mut u8, dc: HDC, hbmColor: HBITMAP, width: i32, height: i32) -> i32;
fn blank_screen(v: BOOL); fn blank_screen(v: BOOL);
@ -534,7 +546,7 @@ async fn launch_server(session_id: DWORD, close_first: bool) -> ResultType<HANDL
let wstr = wstr.as_ptr(); let wstr = wstr.as_ptr();
let h = unsafe { LaunchProcessWin(wstr, session_id, FALSE) }; let h = unsafe { LaunchProcessWin(wstr, session_id, FALSE) };
if h.is_null() { if h.is_null() {
log::error!("Failed to luanch server: {}", get_error()); log::error!("Failed to launch server: {}", get_error());
} }
Ok(h) Ok(h)
} }
@ -593,7 +605,7 @@ fn send_sas() {
} }
lazy_static::lazy_static! { lazy_static::lazy_static! {
static ref SUPRESS: Arc<Mutex<Instant>> = Arc::new(Mutex::new(Instant::now())); static ref SUPPRESS: Arc<Mutex<Instant>> = Arc::new(Mutex::new(Instant::now()));
} }
pub fn desktop_changed() -> bool { pub fn desktop_changed() -> bool {
@ -605,7 +617,7 @@ pub fn try_change_desktop() -> bool {
if inputDesktopSelected() == FALSE { if inputDesktopSelected() == FALSE {
let res = selectInputDesktop() == TRUE; let res = selectInputDesktop() == TRUE;
if !res { if !res {
let mut s = SUPRESS.lock().unwrap(); let mut s = SUPPRESS.lock().unwrap();
if s.elapsed() > std::time::Duration::from_secs(3) { if s.elapsed() > std::time::Duration::from_secs(3) {
log::error!("Failed to switch desktop: {}", get_error()); log::error!("Failed to switch desktop: {}", get_error());
*s = Instant::now(); *s = Instant::now();

View File

@ -34,7 +34,7 @@ pub struct RendezvousMediator {
host: String, host: String,
host_prefix: String, host_prefix: String,
rendezvous_servers: Vec<String>, rendezvous_servers: Vec<String>,
last_id_pk_registery: String, last_id_pk_registry: String,
} }
impl RendezvousMediator { impl RendezvousMediator {
@ -90,7 +90,7 @@ impl RendezvousMediator {
host: host.clone(), host: host.clone(),
host_prefix, host_prefix,
rendezvous_servers, rendezvous_servers,
last_id_pk_registery: "".to_owned(), last_id_pk_registry: "".to_owned(),
}; };
allow_err!(rz.dns_check()); allow_err!(rz.dns_check());
let mut socket = FramedSocket::new(Config::get_any_listen_addr()).await?; let mut socket = FramedSocket::new(Config::get_any_listen_addr()).await?;
@ -380,7 +380,7 @@ impl RendezvousMediator {
pk.clone() pk.clone()
}; };
let id = Config::get_id(); let id = Config::get_id();
self.last_id_pk_registery = id.clone(); self.last_id_pk_registry = id.clone();
msg_out.set_register_pk(RegisterPk { msg_out.set_register_pk(RegisterPk {
id, id,
uuid, uuid,
@ -392,7 +392,7 @@ impl RendezvousMediator {
} }
async fn handle_uuid_mismatch(&mut self, socket: &mut FramedSocket) -> ResultType<()> { async fn handle_uuid_mismatch(&mut self, socket: &mut FramedSocket) -> ResultType<()> {
if self.last_id_pk_registery != Config::get_id() { if self.last_id_pk_registry != Config::get_id() {
return Ok(()); return Ok(());
} }
{ {

View File

@ -120,13 +120,13 @@ impl Connection {
return; return;
} }
if !conn.keyboard { if !conn.keyboard {
conn.send_permisssion(Permission::Keyboard, false).await; conn.send_permission(Permission::Keyboard, false).await;
} }
if !conn.clipboard { if !conn.clipboard {
conn.send_permisssion(Permission::Clipboard, false).await; conn.send_permission(Permission::Clipboard, false).await;
} }
if !conn.audio { if !conn.audio {
conn.send_permisssion(Permission::Audio, false).await; conn.send_permission(Permission::Audio, false).await;
} }
let mut test_delay_timer = let mut test_delay_timer =
time::interval_at(Instant::now() + TEST_DELAY_TIMEOUT, TEST_DELAY_TIMEOUT); time::interval_at(Instant::now() + TEST_DELAY_TIMEOUT, TEST_DELAY_TIMEOUT);
@ -164,7 +164,7 @@ impl Connection {
log::info!("Change permission {} -> {}", name, enabled); log::info!("Change permission {} -> {}", name, enabled);
if &name == "keyboard" { if &name == "keyboard" {
conn.keyboard = enabled; conn.keyboard = enabled;
conn.send_permisssion(Permission::Keyboard, enabled).await; conn.send_permission(Permission::Keyboard, enabled).await;
if let Some(s) = conn.server.upgrade() { if let Some(s) = conn.server.upgrade() {
s.write().unwrap().subscribe( s.write().unwrap().subscribe(
NAME_CURSOR, NAME_CURSOR,
@ -172,7 +172,7 @@ impl Connection {
} }
} else if &name == "clipboard" { } else if &name == "clipboard" {
conn.clipboard = enabled; conn.clipboard = enabled;
conn.send_permisssion(Permission::Clipboard, enabled).await; conn.send_permission(Permission::Clipboard, enabled).await;
if let Some(s) = conn.server.upgrade() { if let Some(s) = conn.server.upgrade() {
s.write().unwrap().subscribe( s.write().unwrap().subscribe(
super::clipboard_service::NAME, super::clipboard_service::NAME,
@ -180,7 +180,7 @@ impl Connection {
} }
} else if &name == "audio" { } else if &name == "audio" {
conn.audio = enabled; conn.audio = enabled;
conn.send_permisssion(Permission::Audio, enabled).await; conn.send_permission(Permission::Audio, enabled).await;
if let Some(s) = conn.server.upgrade() { if let Some(s) = conn.server.upgrade() {
s.write().unwrap().subscribe( s.write().unwrap().subscribe(
super::audio_service::NAME, super::audio_service::NAME,
@ -331,7 +331,7 @@ impl Connection {
} }
} }
async fn send_permisssion(&mut self, permission: Permission, enabled: bool) { async fn send_permission(&mut self, permission: Permission, enabled: bool) {
let mut misc = Misc::new(); let mut misc = Misc::new();
misc.set_permission_info(PermissionInfo { misc.set_permission_info(PermissionInfo {
permission: permission.into(), permission: permission.into(),

View File

@ -34,7 +34,7 @@ pub trait Reset {
pub struct ServiceTmpl<T: Subscriber + From<ConnInner>>(Arc<RwLock<ServiceInner<T>>>); pub struct ServiceTmpl<T: Subscriber + From<ConnInner>>(Arc<RwLock<ServiceInner<T>>>);
pub struct ServiceSwap<T: Subscriber + From<ConnInner>>(ServiceTmpl<T>); pub struct ServiceSwap<T: Subscriber + From<ConnInner>>(ServiceTmpl<T>);
pub type GenericService = ServiceTmpl<ConnInner>; pub type GenericService = ServiceTmpl<ConnInner>;
pub const HIBERATE_TIMEOUT: u64 = 30; pub const HIBERNATE_TIMEOUT: u64 = 30;
pub const MAX_ERROR_TIMEOUT: u64 = 1_000; pub const MAX_ERROR_TIMEOUT: u64 = 1_000;
impl<T: Subscriber + From<ConnInner>> ServiceInner<T> { impl<T: Subscriber + From<ConnInner>> ServiceInner<T> {
@ -191,7 +191,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
let sp = self.clone(); let sp = self.clone();
let mut callback = callback; let mut callback = callback;
let thread = thread::spawn(move || { let thread = thread::spawn(move || {
let mut error_timeout = HIBERATE_TIMEOUT; let mut error_timeout = HIBERNATE_TIMEOUT;
while sp.active() { while sp.active() {
if sp.has_subscribes() { if sp.has_subscribes() {
log::debug!("Enter {} service inner loop", sp.name()); log::debug!("Enter {} service inner loop", sp.name());
@ -199,7 +199,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
if let Err(err) = callback(sp.clone()) { if let Err(err) = callback(sp.clone()) {
log::error!("Error of {} service: {}", sp.name(), err); log::error!("Error of {} service: {}", sp.name(), err);
if tm.elapsed() > time::Duration::from_millis(MAX_ERROR_TIMEOUT) { if tm.elapsed() > time::Duration::from_millis(MAX_ERROR_TIMEOUT) {
error_timeout = HIBERATE_TIMEOUT; error_timeout = HIBERNATE_TIMEOUT;
} else { } else {
error_timeout *= 2; error_timeout *= 2;
} }
@ -213,7 +213,7 @@ impl<T: Subscriber + From<ConnInner>> ServiceTmpl<T> {
log::debug!("Exit {} service inner loop", sp.name()); log::debug!("Exit {} service inner loop", sp.name());
} }
} }
thread::sleep(time::Duration::from_millis(HIBERATE_TIMEOUT)); thread::sleep(time::Duration::from_millis(HIBERNATE_TIMEOUT));
} }
}); });
self.0.write().unwrap().handle = Some(thread); self.0.write().unwrap().handle = Some(thread);

View File

@ -99,7 +99,6 @@ fn run(sp: GenericService) -> ResultType<()> {
*SWITCH.lock().unwrap() = false; *SWITCH.lock().unwrap() = false;
sp.send(msg_out); sp.send(msg_out);
} }
let mut crc = (0, 0); let mut crc = (0, 0);
let start = time::Instant::now(); let start = time::Instant::now();
let mut last_sent = time::Instant::now(); let mut last_sent = time::Instant::now();

View File

@ -489,7 +489,7 @@ impl UI {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
return crate::platform::linux::fix_login_wayland(); return crate::platform::linux::fix_login_wayland();
} }
fn current_is_wayland(&mut self) -> bool { fn current_is_wayland(&mut self) -> bool {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
return crate::platform::linux::current_is_wayland(); return crate::platform::linux::current_is_wayland();
@ -634,7 +634,7 @@ pub fn check_zombie(childs: Childs) {
} }
} }
// notice: avoiding create ipc connecton repeatly, // notice: avoiding create ipc connection repeatedly,
// because windows named pipe has serious memory leak issue. // because windows named pipe has serious memory leak issue.
#[tokio::main(flavor = "current_thread")] #[tokio::main(flavor = "current_thread")]
async fn check_connect_status_( async fn check_connect_status_(

View File

@ -694,8 +694,8 @@ impl Handler {
let mut key_event = KeyEvent::new(); let mut key_event = KeyEvent::new();
if down_or_up == 2 { if down_or_up == 2 {
/* windows send both keyup/keydown and keychar, so here we avoid keychar /* windows send both keyup/keydown and keychar, so here we avoid keychar
for <= 0xFF, best practise should only avoid those not on keyboard, but for <= 0xFF, best practice should only avoid those not on keyboard, but
for now, we have no way to test, so avoid <= 0xFF totaly for now, we have no way to test, so avoid <= 0xFF totally
*/ */
if code <= 0xFF { if code <= 0xFF {
return None; return None;
@ -891,7 +891,8 @@ impl Handler {
let mut name = name; let mut name = name;
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
if code == 65383 { // VK_MENU if code == 65383 {
// VK_MENU
name = "Apps".to_owned(); name = "Apps".to_owned();
} }
@ -1435,16 +1436,16 @@ impl Remote {
if elapsed <= 0 { if elapsed <= 0 {
return; return;
} }
let transfered = job.transfered(); let transferred = job.transferred();
let last_transfered = { let last_transferred = {
if let Some(v) = last_update_jobs_status.1.get(&job.id()) { if let Some(v) = last_update_jobs_status.1.get(&job.id()) {
v.to_owned() v.to_owned()
} else { } else {
0 0
} }
}; };
last_update_jobs_status.1.insert(job.id(), transfered); last_update_jobs_status.1.insert(job.id(), transferred);
let speed = (transfered - last_transfered) as f64 / (elapsed as f64 / 1000.); let speed = (transferred - last_transferred) as f64 / (elapsed as f64 / 1000.);
let file_num = job.file_num() - 1; let file_num = job.file_num() - 1;
handler.call( handler.call(
"jobProgress", "jobProgress",

View File

@ -89,7 +89,7 @@ extern "C"
CreateEnvironmentBlock(&lpEnvironment, // Environment block CreateEnvironmentBlock(&lpEnvironment, // Environment block
hToken, // New token hToken, // New token
TRUE); // Inheritence TRUE); // Inheritance
} }
if (lpEnvironment) if (lpEnvironment)
{ {