refactor server keyboard/clipboard enabled
This commit is contained in:
parent
484f50811d
commit
bc3d3bd0ec
@ -50,7 +50,8 @@ fn get_key_state(key: enigo::Key) -> bool {
|
|||||||
|
|
||||||
static mut IS_IN: bool = false;
|
static mut IS_IN: bool = false;
|
||||||
static mut KEYBOARD_HOOKED: bool = false;
|
static mut KEYBOARD_HOOKED: bool = false;
|
||||||
static mut KEYBOARD_ENABLED: bool = true;
|
static mut SERVER_KEYBOARD_ENABLED: bool = true;
|
||||||
|
static mut SERVER_CLIPBOARD_ENABLED: bool = true;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct HandlerInner {
|
pub struct HandlerInner {
|
||||||
@ -238,7 +239,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 || !KEYBOARD_ENABLED } {
|
if unsafe { !IS_IN || !SERVER_KEYBOARD_ENABLED } {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let (key, down) = match evt.event_type {
|
let (key, down) = match evt.event_type {
|
||||||
@ -1180,8 +1181,6 @@ async fn io_loop(handler: Handler) {
|
|||||||
remove_jobs: Default::default(),
|
remove_jobs: Default::default(),
|
||||||
timer: time::interval(SEC30),
|
timer: time::interval(SEC30),
|
||||||
last_update_jobs_status: (Instant::now(), Default::default()),
|
last_update_jobs_status: (Instant::now(), Default::default()),
|
||||||
clipboard: Arc::new(RwLock::new(true)),
|
|
||||||
keyboard: Arc::new(RwLock::new(true)),
|
|
||||||
first_frame: false,
|
first_frame: false,
|
||||||
};
|
};
|
||||||
remote.io_loop().await;
|
remote.io_loop().await;
|
||||||
@ -1221,8 +1220,6 @@ struct Remote {
|
|||||||
remove_jobs: HashMap<i32, RemoveJob>,
|
remove_jobs: HashMap<i32, RemoveJob>,
|
||||||
timer: Interval,
|
timer: Interval,
|
||||||
last_update_jobs_status: (Instant, HashMap<i32, u64>),
|
last_update_jobs_status: (Instant, HashMap<i32, u64>),
|
||||||
clipboard: Arc<RwLock<bool>>,
|
|
||||||
keyboard: Arc<RwLock<bool>>,
|
|
||||||
first_frame: bool,
|
first_frame: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1238,7 +1235,8 @@ impl Remote {
|
|||||||
match Client::start(&self.handler.id, conn_type).await {
|
match Client::start(&self.handler.id, conn_type).await {
|
||||||
Ok((mut peer, direct)) => {
|
Ok((mut peer, direct)) => {
|
||||||
unsafe {
|
unsafe {
|
||||||
KEYBOARD_ENABLED = true;
|
SERVER_KEYBOARD_ENABLED = true;
|
||||||
|
SERVER_CLIPBOARD_ENABLED = true;
|
||||||
}
|
}
|
||||||
self.handler
|
self.handler
|
||||||
.call("setConnectionType", &make_args!(peer.is_secured(), direct));
|
.call("setConnectionType", &make_args!(peer.is_secured(), direct));
|
||||||
@ -1300,7 +1298,8 @@ impl Remote {
|
|||||||
stop.send(()).ok();
|
stop.send(()).ok();
|
||||||
}
|
}
|
||||||
unsafe {
|
unsafe {
|
||||||
KEYBOARD_ENABLED = false;
|
SERVER_KEYBOARD_ENABLED = false;
|
||||||
|
SERVER_CLIPBOARD_ENABLED = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1339,8 +1338,6 @@ impl Remote {
|
|||||||
let (tx, rx) = std::sync::mpsc::channel();
|
let (tx, rx) = std::sync::mpsc::channel();
|
||||||
let old_clipboard = self.old_clipboard.clone();
|
let old_clipboard = self.old_clipboard.clone();
|
||||||
let tx_protobuf = self.sender.clone();
|
let tx_protobuf = self.sender.clone();
|
||||||
let clipboard = self.clipboard.clone();
|
|
||||||
let keyboard = self.keyboard.clone();
|
|
||||||
let lc = self.handler.lc.clone();
|
let lc = self.handler.lc.clone();
|
||||||
match ClipboardContext::new() {
|
match ClipboardContext::new() {
|
||||||
Ok(mut ctx) => {
|
Ok(mut ctx) => {
|
||||||
@ -1355,8 +1352,8 @@ impl Remote {
|
|||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
if !*clipboard.read().unwrap()
|
if !unsafe { SERVER_CLIPBOARD_ENABLED }
|
||||||
|| !*keyboard.read().unwrap()
|
|| !unsafe { SERVER_KEYBOARD_ENABLED }
|
||||||
|| lc.read().unwrap().disable_clipboard
|
|| lc.read().unwrap().disable_clipboard
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@ -1612,8 +1609,8 @@ impl Remote {
|
|||||||
self.handler.handle_peer_info(pi);
|
self.handler.handle_peer_info(pi);
|
||||||
if !(self.handler.is_file_transfer()
|
if !(self.handler.is_file_transfer()
|
||||||
|| self.handler.is_port_forward()
|
|| self.handler.is_port_forward()
|
||||||
|| !*self.clipboard.read().unwrap()
|
|| !unsafe { SERVER_CLIPBOARD_ENABLED }
|
||||||
|| !*self.keyboard.read().unwrap()
|
|| !unsafe { SERVER_KEYBOARD_ENABLED }
|
||||||
|| 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();
|
||||||
@ -1689,14 +1686,12 @@ 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 {
|
unsafe { SERVER_KEYBOARD_ENABLED = p.enabled; }
|
||||||
KEYBOARD_ENABLED = p.enabled;
|
|
||||||
}
|
|
||||||
self.handler
|
self.handler
|
||||||
.call("setPermission", &make_args!("keyboard", p.enabled));
|
.call("setPermission", &make_args!("keyboard", p.enabled));
|
||||||
}
|
}
|
||||||
Permission::Clipboard => {
|
Permission::Clipboard => {
|
||||||
*self.clipboard.write().unwrap() = p.enabled;
|
unsafe { SERVER_CLIPBOARD_ENABLED = p.enabled; }
|
||||||
self.handler
|
self.handler
|
||||||
.call("setPermission", &make_args!("clipboard", p.enabled));
|
.call("setPermission", &make_args!("clipboard", p.enabled));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user