mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-06-06 17:32:51 +08:00
permisson block input
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
663d355a48
commit
d528fd3762
@ -191,6 +191,7 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
|
||||
}
|
||||
// blockUserInput
|
||||
if (ffi.ffiModel.keyboard &&
|
||||
ffi.ffiModel.permissions['block_input'] != false &&
|
||||
pi.platform == kPeerPlatformWindows) // privacy-mode != true ??
|
||||
{
|
||||
v.add(TTextMenu(
|
||||
|
@ -649,6 +649,10 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
||||
_OptionCheckBox(
|
||||
context, 'Enable Recording Session', 'enable-record-session',
|
||||
enabled: enabled, fakeValue: fakeValue),
|
||||
if (Platform.isWindows)
|
||||
_OptionCheckBox(
|
||||
context, 'Enable Block User Input', 'enable-block-input',
|
||||
enabled: enabled, fakeValue: fakeValue),
|
||||
_OptionCheckBox(context, 'Enable remote configuration modification',
|
||||
'allow-remote-config-modification',
|
||||
enabled: enabled, fakeValue: fakeValue),
|
||||
|
@ -536,7 +536,6 @@ class _PrivilegeBoardState extends State<_PrivilegeBoard> {
|
||||
child: Icon(
|
||||
iconData,
|
||||
color: Colors.white,
|
||||
size: 32,
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -548,9 +547,11 @@ class _PrivilegeBoardState extends State<_PrivilegeBoard> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final crossAxisCount = 4;
|
||||
final spacing = 10.0;
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
height: 200.0,
|
||||
height: 160.0,
|
||||
margin: EdgeInsets.all(5.0),
|
||||
padding: EdgeInsets.all(5.0),
|
||||
decoration: BoxDecoration(
|
||||
@ -575,10 +576,10 @@ class _PrivilegeBoardState extends State<_PrivilegeBoard> {
|
||||
).marginOnly(left: 4.0, bottom: 8.0),
|
||||
Expanded(
|
||||
child: GridView.count(
|
||||
crossAxisCount: 3,
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.0),
|
||||
mainAxisSpacing: 20.0,
|
||||
crossAxisSpacing: 20.0,
|
||||
crossAxisCount: crossAxisCount,
|
||||
padding: EdgeInsets.symmetric(horizontal: spacing),
|
||||
mainAxisSpacing: spacing,
|
||||
crossAxisSpacing: spacing,
|
||||
children: [
|
||||
buildPermissionIcon(
|
||||
client.keyboard,
|
||||
@ -651,7 +652,23 @@ class _PrivilegeBoardState extends State<_PrivilegeBoard> {
|
||||
});
|
||||
},
|
||||
translate('Allow recording session'),
|
||||
)
|
||||
),
|
||||
// only windows support block input
|
||||
if (Platform.isWindows)
|
||||
buildPermissionIcon(
|
||||
client.blockInput,
|
||||
Icons.block,
|
||||
(enabled) {
|
||||
bind.cmSwitchPermission(
|
||||
connId: client.id,
|
||||
name: "block_input",
|
||||
enabled: enabled);
|
||||
setState(() {
|
||||
client.blockInput = enabled;
|
||||
});
|
||||
},
|
||||
translate('Allow block user input'),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -690,6 +690,7 @@ class Client {
|
||||
bool file = false;
|
||||
bool restart = false;
|
||||
bool recording = false;
|
||||
bool blockInput = false;
|
||||
bool disconnected = false;
|
||||
bool fromSwitch = false;
|
||||
bool inVoiceCall = false;
|
||||
@ -713,6 +714,7 @@ class Client {
|
||||
file = json['file'];
|
||||
restart = json['restart'];
|
||||
recording = json['recording'];
|
||||
blockInput = json['block_input'];
|
||||
disconnected = json['disconnected'];
|
||||
fromSwitch = json['from_switch'];
|
||||
inVoiceCall = json['in_voice_call'];
|
||||
@ -733,6 +735,7 @@ class Client {
|
||||
data['file'] = file;
|
||||
data['restart'] = restart;
|
||||
data['recording'] = recording;
|
||||
data['block_input'] = blockInput;
|
||||
data['disconnected'] = disconnected;
|
||||
data['from_switch'] = fromSwitch;
|
||||
return data;
|
||||
|
@ -526,6 +526,7 @@ message PermissionInfo {
|
||||
File = 4;
|
||||
Restart = 5;
|
||||
Recording = 6;
|
||||
BlockInput = 7;
|
||||
}
|
||||
|
||||
Permission permission = 1;
|
||||
|
@ -1347,6 +1347,9 @@ impl<T: InvokeUiSession> Remote<T> {
|
||||
Ok(Permission::Recording) => {
|
||||
self.handler.set_permission("recording", p.enabled);
|
||||
}
|
||||
Ok(Permission::BlockInput) => {
|
||||
self.handler.set_permission("block_input", p.enabled);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
@ -177,6 +177,7 @@ pub enum Data {
|
||||
file_transfer_enabled: bool,
|
||||
restart: bool,
|
||||
recording: bool,
|
||||
block_input: bool,
|
||||
from_switch: bool,
|
||||
},
|
||||
ChatMessage {
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "虚拟显示器"),
|
||||
("Plug out all", "拔出所有"),
|
||||
("True color (4:4:4)", "真彩模式(4:4:4)"),
|
||||
("Enable Block User Input", "允许阻止用户输入"),
|
||||
("Allow block user input", "允许阻止用户输入"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Virtuální obrazovka"),
|
||||
("Plug out all", "Odpojit všechny"),
|
||||
("True color (4:4:4)", "Skutečné barvy (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Virtueller Bildschirm"),
|
||||
("Plug out all", "Alle ausschalten"),
|
||||
("True color (4:4:4)", "True Color (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Pantalla virtual"),
|
||||
("Plug out all", "Desconectar todo"),
|
||||
("True color (4:4:4)", "Color real (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Tampilan virtual"),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Scehrmo virtuale"),
|
||||
("Plug out all", "Scollega tutto"),
|
||||
("True color (4:4:4)", "Colore reale (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "가상 디스플레이"),
|
||||
("Plug out all", "모두 플러그 아웃"),
|
||||
("True color (4:4:4)", "트루컬러(4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Virtuālais displejs"),
|
||||
("Plug out all", "Atvienot visu"),
|
||||
("True color (4:4:4)", "Īstā krāsa (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Witualne ekrany"),
|
||||
("Plug out all", "Odłącz wszystko"),
|
||||
("True color (4:4:4)", "True color (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Виртуальный дисплей"),
|
||||
("Plug out all", "Отключить все"),
|
||||
("True color (4:4:4)", "Истинный цвет (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Virtuálny displej"),
|
||||
("Plug out all", "Odpojiť všetky"),
|
||||
("True color (4:4:4)", "Skutočná farba (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", "Віртуальний дисплей"),
|
||||
("Plug out all", "Відключити все"),
|
||||
("True color (4:4:4)", "Спражній колір (4:4:4)"),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -573,5 +573,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Virtual display", ""),
|
||||
("Plug out all", ""),
|
||||
("True color (4:4:4)", ""),
|
||||
("Enable Block User Input", ""),
|
||||
("Allow block user input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
@ -180,6 +180,7 @@ pub struct Connection {
|
||||
file: bool,
|
||||
restart: bool,
|
||||
recording: bool,
|
||||
block_input: bool,
|
||||
last_test_delay: i64,
|
||||
network_delay: Option<u32>,
|
||||
lock_after_session_end: bool,
|
||||
@ -326,6 +327,7 @@ impl Connection {
|
||||
file: Connection::permission("enable-file-transfer"),
|
||||
restart: Connection::permission("enable-remote-restart"),
|
||||
recording: Connection::permission("enable-record-session"),
|
||||
block_input: Connection::permission("enable-block-input"),
|
||||
last_test_delay: 0,
|
||||
network_delay: None,
|
||||
lock_after_session_end: false,
|
||||
@ -396,6 +398,9 @@ impl Connection {
|
||||
if !conn.recording {
|
||||
conn.send_permission(Permission::Recording, false).await;
|
||||
}
|
||||
if !conn.block_input {
|
||||
conn.send_permission(Permission::BlockInput, false).await;
|
||||
}
|
||||
let mut test_delay_timer =
|
||||
time::interval_at(Instant::now() + TEST_DELAY_TIMEOUT, TEST_DELAY_TIMEOUT);
|
||||
let mut last_recv_time = Instant::now();
|
||||
@ -477,6 +482,9 @@ impl Connection {
|
||||
} else if &name == "recording" {
|
||||
conn.recording = enabled;
|
||||
conn.send_permission(Permission::Recording, enabled).await;
|
||||
} else if &name == "block_input" {
|
||||
conn.block_input = enabled;
|
||||
conn.send_permission(Permission::BlockInput, enabled).await;
|
||||
}
|
||||
}
|
||||
ipc::Data::RawMessage(bytes) => {
|
||||
@ -1271,6 +1279,7 @@ impl Connection {
|
||||
file_transfer_enabled: self.file,
|
||||
restart: self.restart,
|
||||
recording: self.recording,
|
||||
block_input: self.block_input,
|
||||
from_switch: self.from_switch,
|
||||
});
|
||||
}
|
||||
@ -2525,8 +2534,8 @@ impl Connection {
|
||||
}
|
||||
}
|
||||
}
|
||||
if self.keyboard {
|
||||
if let Ok(q) = o.block_input.enum_value() {
|
||||
if let Ok(q) = o.block_input.enum_value() {
|
||||
if self.keyboard && self.block_input {
|
||||
match q {
|
||||
BoolOption::Yes => {
|
||||
self.tx_input.send(MessageInput::BlockOn).ok();
|
||||
@ -2536,6 +2545,17 @@ impl Connection {
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
} else {
|
||||
if q != BoolOption::NotSet {
|
||||
let state = if q == BoolOption::Yes {
|
||||
back_notification::BlockInputState::BlkOnFailed
|
||||
} else {
|
||||
back_notification::BlockInputState::BlkOffFailed
|
||||
};
|
||||
if let Some(tx) = &self.inner.tx {
|
||||
Self::send_block_input_error(tx, state, "No permission".to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -112,6 +112,10 @@ icon.recording {
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANpJREFUWEftltENAiEMhtsJ1NcynG6gI+gGugEOR591gppeQoIYSDBILxEeydH/57u2FMF4obE+TAOTwLoIhBDOAHBExG2n6rgR0akW640AM0sn4SWMiDycc7s8JjN7Ijro/k8NqAAR5RoeAPZxv2ggP9hCJiWZxtGbq3hqbJiBVHy4gVx8qAER8Yi4JFy6huVAKXemgb8icI+1b5KEitq0DOO/Nm1EEX1TK27p/bVvv36MOhl4EtHHbFF7jq8AoG1z08OAiFycczrkFNe6RrIet26NMQlMAuYEXiayryF/QQktAAAAAElFTkSuQmCC');
|
||||
}
|
||||
|
||||
icon.block_input {
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAjdJREFUWEe1V8tNAzEQfXOHAx2QG0UgQSqBFIIgHdABoQqOhBq4cCMlcMh90FvZq/HEXtvJxlKUZNceP783no+gY6jqNYBHAHcA+JufXTDBb37eRWTbalZqE82mz7W55v0ABMBGRCLA7PJJAKr6AiC3sT11NHyf2SEyQjvtAMKp3wBYo9VTGbYegjxxU65d5tg4YEBVbwF8ALgw2lLX4in80QqyZUEkAMLCb7P5n4hcdWifTA32Pg0bByA8AE4+oL3n9A1s7ERkEeeNAJzD/QC4OVaCAgjrU7wdK86zAHREJSKqyvvORRxVb67JFOT4NfYGpxwAqCo34oYcKxHZhOdzg7D2BhYigHj6RJ+5QbjrPezlqR61sZTOKYfztSUBWPoXpdA5FwjnC2sCGK+eiNRC8yw+oap0RiayLQHEPwf65zx7DibMoXcEEB0wq/85QJQAbEVkWbvP8f0pTFi/65ZgjtuRyJ7QYWL0OZnwTmiLDobH5nLqGDlUlcmON49jQwnsg/Wxma/VJ1zcGQIR7+OYJGyqbJWhhwlDPxh3JpNRL4Ba7nAsJckoYaFUv7UCyslBvQ3TNDWEfVsPJGH2FCkKTPAxD8ox+poFwJfZqqX15H6eYyK+TgJeriidLCJ7wAQHZ4Udy7u9iFxaG7mynEx4EF1leZDANzV7AE8i8joJICz2cvBxbExIYTZYTTQmxTxTzP+VnvC8rZlLOLEj7m5OW6JqtTs2US6247Hvy7XnX0OV05FP/gHde5fLZaGS8AAAAABJRU5ErkJggg==');
|
||||
}
|
||||
|
||||
div.outer_buttons {
|
||||
flow:vertical;
|
||||
border-spacing:8;
|
||||
|
@ -28,7 +28,8 @@ impl InvokeUiCM for SciterHandler {
|
||||
client.audio,
|
||||
client.file,
|
||||
client.restart,
|
||||
client.recording
|
||||
client.recording,
|
||||
client.block_input
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ class Body: Reactor.Component
|
||||
<div class={!c.restart ? "disabled" : ""} title={translate('Allow remote restart')}><icon .restart /></div>
|
||||
</div> <div .permissions style="margin-top:8px;" >
|
||||
<div class={!c.recording ? "disabled" : ""} title={translate('Allow recording session')}><icon .recording /></div>
|
||||
<div class={!c.block_input ? "disabled" : ""} title={translate('Allow block input')} style={is_win ? "" : "display:none;"}><icon .block_input /></div>
|
||||
</div></div>
|
||||
}
|
||||
{c.port_forward ? <div>Port Forwarding: {c.port_forward}</div> : ""}
|
||||
@ -143,6 +144,15 @@ class Body: Reactor.Component
|
||||
});
|
||||
}
|
||||
|
||||
event click $(icon.block_input) {
|
||||
var { cid, connection } = this;
|
||||
checkClickTime(function() {
|
||||
connection.block_input = !connection.block_input;
|
||||
body.update();
|
||||
handler.switch_permission(cid, "block_input", connection.block_input);
|
||||
});
|
||||
}
|
||||
|
||||
event click $(button#accept) {
|
||||
var { cid, connection } = this;
|
||||
checkClickTime(function() {
|
||||
@ -346,7 +356,7 @@ function bring_to_top(idx=-1) {
|
||||
}
|
||||
}
|
||||
|
||||
handler.addConnection = function(id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, restart, recording) {
|
||||
handler.addConnection = function(id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, restart, recording, block_input) {
|
||||
stdout.println("new connection #" + id + ": " + peer_id);
|
||||
var conn;
|
||||
connections.map(function(c) {
|
||||
@ -368,6 +378,7 @@ handler.addConnection = function(id, is_file_transfer, port_forward, peer_id, na
|
||||
name: name, authorized: authorized, time: new Date(), now: new Date(),
|
||||
keyboard: keyboard, clipboard: clipboard, msgs: [], unreaded: 0,
|
||||
audio: audio, file: file, restart: restart, recording: recording,
|
||||
block_input:block_input,
|
||||
disconnected: false
|
||||
};
|
||||
if (idx < 0) {
|
||||
|
@ -306,6 +306,7 @@ class MyIdMenu: Reactor.Component {
|
||||
<li #enable-file-transfer><span>{svg_checkmark}</span>{translate('Enable File Transfer')}</li>
|
||||
<li #enable-remote-restart><span>{svg_checkmark}</span>{translate('Enable Remote Restart')}</li>
|
||||
<li #enable-tunnel><span>{svg_checkmark}</span>{translate('Enable TCP Tunneling')}</li>
|
||||
{is_win ? <li #enable-block-input><span>{svg_checkmark}</span>{translate('Enable Block User Input')}</li> : ""}
|
||||
<li #enable-lan-discovery><span>{svg_checkmark}</span>{translate('Enable LAN Discovery')}</li>
|
||||
<AudioInputs />
|
||||
<Enhancements />
|
||||
|
@ -53,6 +53,7 @@ pub struct Client {
|
||||
pub file: bool,
|
||||
pub restart: bool,
|
||||
pub recording: bool,
|
||||
pub block_input: bool,
|
||||
pub from_switch: bool,
|
||||
pub in_voice_call: bool,
|
||||
pub incoming_voice_call: bool,
|
||||
@ -133,6 +134,7 @@ impl<T: InvokeUiCM> ConnectionManager<T> {
|
||||
file: bool,
|
||||
restart: bool,
|
||||
recording: bool,
|
||||
block_input: bool,
|
||||
from_switch: bool,
|
||||
#[cfg(not(any(target_os = "ios")))] tx: mpsc::UnboundedSender<Data>,
|
||||
) {
|
||||
@ -150,6 +152,7 @@ impl<T: InvokeUiCM> ConnectionManager<T> {
|
||||
file,
|
||||
restart,
|
||||
recording,
|
||||
block_input,
|
||||
from_switch,
|
||||
#[cfg(not(any(target_os = "ios")))]
|
||||
tx,
|
||||
@ -378,9 +381,9 @@ impl<T: InvokeUiCM> IpcTaskRunner<T> {
|
||||
}
|
||||
Ok(Some(data)) => {
|
||||
match data {
|
||||
Data::Login{id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, file_transfer_enabled: _file_transfer_enabled, restart, recording, from_switch} => {
|
||||
Data::Login{id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, file_transfer_enabled: _file_transfer_enabled, restart, recording, block_input, from_switch} => {
|
||||
log::debug!("conn_id: {}", id);
|
||||
self.cm.add_connection(id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, restart, recording, from_switch,self.tx.clone());
|
||||
self.cm.add_connection(id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, restart, recording, block_input, from_switch, self.tx.clone());
|
||||
self.conn_id = id;
|
||||
#[cfg(any(target_os = "linux", target_os = "windows", target_os = "macos"))]
|
||||
{
|
||||
@ -632,6 +635,7 @@ pub async fn start_listen<T: InvokeUiCM>(
|
||||
file,
|
||||
restart,
|
||||
recording,
|
||||
block_input,
|
||||
from_switch,
|
||||
..
|
||||
}) => {
|
||||
@ -649,6 +653,7 @@ pub async fn start_listen<T: InvokeUiCM>(
|
||||
file,
|
||||
restart,
|
||||
recording,
|
||||
block_input,
|
||||
from_switch,
|
||||
tx.clone(),
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user