Remove SERVER_KEYBOARD_ENABLED unsafe code, by using AtomicBool

This commit is contained in:
Saverio Miroddi 2022-05-24 18:12:28 +02:00
parent c7f452752d
commit 45bb271c88

View File

@ -68,7 +68,7 @@ fn get_key_state(key: enigo::Key) -> bool {
static mut IS_IN: bool = false; static mut IS_IN: bool = false;
static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(false); static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(false);
static mut SERVER_KEYBOARD_ENABLED: bool = true; static SERVER_KEYBOARD_ENABLED: AtomicBool = AtomicBool::new(true);
static mut SERVER_FILE_TRANSFER_ENABLED: bool = true; static mut SERVER_FILE_TRANSFER_ENABLED: bool = true;
static SERVER_CLIPBOARD_ENABLED: AtomicBool = AtomicBool::new(true); static SERVER_CLIPBOARD_ENABLED: AtomicBool = AtomicBool::new(true);
#[cfg(windows)] #[cfg(windows)]
@ -266,7 +266,7 @@ impl Handler {
std::env::set_var("KEYBOARD_ONLY", "y"); // pass to rdev std::env::set_var("KEYBOARD_ONLY", "y"); // pass to rdev
use rdev::{EventType::*, *}; use rdev::{EventType::*, *};
let func = move |evt: Event| { let func = move |evt: Event| {
if unsafe { !IS_IN || !SERVER_KEYBOARD_ENABLED } { if unsafe { !IS_IN || !SERVER_KEYBOARD_ENABLED.load(Ordering::SeqCst) } {
return; return;
} }
let (key, down) = match evt.event_type { let (key, down) = match evt.event_type {
@ -1381,7 +1381,7 @@ impl Remote {
match Client::start(&self.handler.id, key, token, conn_type).await { match Client::start(&self.handler.id, key, token, conn_type).await {
Ok((mut peer, direct)) => { Ok((mut peer, direct)) => {
unsafe { unsafe {
SERVER_KEYBOARD_ENABLED = true; SERVER_KEYBOARD_ENABLED.store(true, Ordering::SeqCst);
SERVER_CLIPBOARD_ENABLED.store(true, Ordering::SeqCst); SERVER_CLIPBOARD_ENABLED.store(true, Ordering::SeqCst);
SERVER_FILE_TRANSFER_ENABLED = true; SERVER_FILE_TRANSFER_ENABLED = true;
} }
@ -1463,7 +1463,7 @@ impl Remote {
stop.send(()).ok(); stop.send(()).ok();
} }
unsafe { unsafe {
SERVER_KEYBOARD_ENABLED = false; SERVER_KEYBOARD_ENABLED.store(false, Ordering::SeqCst);
SERVER_CLIPBOARD_ENABLED.store(false, Ordering::SeqCst); SERVER_CLIPBOARD_ENABLED.store(false, Ordering::SeqCst);
SERVER_FILE_TRANSFER_ENABLED = false; SERVER_FILE_TRANSFER_ENABLED = false;
} }
@ -1519,7 +1519,7 @@ impl Remote {
_ => {} _ => {}
} }
if !SERVER_CLIPBOARD_ENABLED.load(Ordering::SeqCst) if !SERVER_CLIPBOARD_ENABLED.load(Ordering::SeqCst)
|| !unsafe { SERVER_KEYBOARD_ENABLED } || !SERVER_KEYBOARD_ENABLED.load(Ordering::SeqCst)
|| lc.read().unwrap().disable_clipboard || lc.read().unwrap().disable_clipboard
{ {
continue; continue;
@ -1979,7 +1979,7 @@ impl Remote {
if !(self.handler.is_file_transfer() if !(self.handler.is_file_transfer()
|| self.handler.is_port_forward() || self.handler.is_port_forward()
|| !SERVER_CLIPBOARD_ENABLED.load(Ordering::SeqCst) || !SERVER_CLIPBOARD_ENABLED.load(Ordering::SeqCst)
|| !unsafe { SERVER_KEYBOARD_ENABLED } || !SERVER_KEYBOARD_ENABLED.load(Ordering::SeqCst)
|| self.handler.lc.read().unwrap().disable_clipboard) || self.handler.lc.read().unwrap().disable_clipboard)
{ {
let txt = self.old_clipboard.lock().unwrap().clone(); let txt = self.old_clipboard.lock().unwrap().clone();
@ -2181,9 +2181,7 @@ impl Remote {
log::info!("Change permission {:?} -> {}", p.permission, p.enabled); log::info!("Change permission {:?} -> {}", p.permission, p.enabled);
match p.permission.enum_value_or_default() { match p.permission.enum_value_or_default() {
Permission::Keyboard => { Permission::Keyboard => {
unsafe { SERVER_KEYBOARD_ENABLED.store(p.enabled, Ordering::SeqCst);
SERVER_KEYBOARD_ENABLED = p.enabled;
}
self.handler self.handler
.call2("setPermission", &make_args!("keyboard", p.enabled)); .call2("setPermission", &make_args!("keyboard", p.enabled));
} }