commit
1bacd2335d
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -3975,7 +3975,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "rdev"
|
||||
version = "0.5.0-2"
|
||||
source = "git+https://github.com/asur4s/rdev#895c8fb1a6106714793e8877d35d2b7a1c57ce9c"
|
||||
source = "git+https://github.com/asur4s/rdev#0ad53987fa6f0e37a7bc000358f71c3802de4e7c"
|
||||
dependencies = [
|
||||
"cocoa",
|
||||
"core-foundation 0.9.3",
|
||||
|
@ -62,6 +62,7 @@ default-net = "0.11.0"
|
||||
wol-rs = "0.9.1"
|
||||
flutter_rust_bridge = { git = "https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge", optional = true }
|
||||
errno = "0.2.8"
|
||||
rdev = { git = "https://github.com/asur4s/rdev" }
|
||||
|
||||
[target.'cfg(not(target_os = "linux"))'.dependencies]
|
||||
reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features=false }
|
||||
@ -76,7 +77,6 @@ sciter-rs = { git = "https://github.com/open-trade/rust-sciter", branch = "dyn"
|
||||
sys-locale = "0.2"
|
||||
enigo = { path = "libs/enigo", features = [ "with_serde" ] }
|
||||
clipboard = { path = "libs/clipboard" }
|
||||
rdev = { git = "https://github.com/asur4s/rdev" }
|
||||
ctrlc = "3.2"
|
||||
arboard = "2.0"
|
||||
#minreq = { version = "2.4", features = ["punycode", "https-native"] }
|
||||
|
@ -7,6 +7,8 @@ if [ "$1" = configure ]; then
|
||||
INITSYS=$(ls -al /proc/1/exe | awk -F' ' '{print $NF}' | awk -F'/' '{print $NF}')
|
||||
|
||||
if [ "systemd" == "$INITSYS" ]; then
|
||||
ln -s /usr/lib/rustdesk/flutter_hbb /usr/bin/rustdesk
|
||||
|
||||
if [ -e /etc/systemd/system/rustdesk.service ]; then
|
||||
rm /etc/systemd/system/rustdesk.service /usr/lib/systemd/system/rustdesk.service /usr/lib/systemd/user/rustdesk.service >/dev/null 2>&1
|
||||
fi
|
||||
@ -18,7 +20,12 @@ if [ "$1" = configure ]; then
|
||||
systemctl start rustdesk
|
||||
|
||||
cp /usr/share/rustdesk/files/systemd/rustdesk.service.user /usr/lib/systemd/user/rustdesk.service
|
||||
ubuntuVersion=$(grep -oP 'VERSION_ID="\K[\d]+' /etc/os-release | bc -l)
|
||||
waylandSupportVersion=21
|
||||
if [ "$ubuntuVersion" -ge "$waylandSupportVersion" ]
|
||||
then
|
||||
curUser=$(who | awk '{print $1}' | head -1)
|
||||
systemctl --machine=${curUser}@.host --user daemon-reload
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -5,12 +5,17 @@ set -e
|
||||
case $1 in
|
||||
remove|upgrade)
|
||||
INITSYS=$(ls -al /proc/1/exe | awk -F' ' '{print $NF}' | awk -F'/' '{print $NF}')
|
||||
|
||||
if [ "systemd" == "${INITSYS}" ]; then
|
||||
rm /usr/bin/rustdesk
|
||||
|
||||
systemctl stop rustdesk || true
|
||||
systemctl disable rustdesk || true
|
||||
|
||||
serverUser=$(ps -ef | grep -E 'rustdesk +--server' | awk '{print $1}' | head -1)
|
||||
if [ "$serverUser" != "" ] && [ "$serverUser" != "root" ]
|
||||
ubuntuVersion=$(grep -oP 'VERSION_ID="\K[\d]+' /etc/os-release | bc -l)
|
||||
waylandSupportVersion=21
|
||||
if [ "$serverUser" != "" ] && [ "$serverUser" != "root" ] && [ "$ubuntuVersion" -ge "$waylandSupportVersion" ]
|
||||
then
|
||||
systemctl --machine=${serverUser}@.host --user stop rustdesk || true
|
||||
fi
|
||||
|
35
build.py
35
build.py
@ -121,20 +121,40 @@ def get_features(args):
|
||||
print("features:", features)
|
||||
return features
|
||||
|
||||
def generate_control_file(version):
|
||||
control_file_path = "../DEBIAN/control"
|
||||
os.system('/bin/rm -rf %s' % control_file_path)
|
||||
|
||||
content = """Package: rustdesk
|
||||
Version: %s
|
||||
Architecture: amd64
|
||||
Maintainer: open-trade <info@rustdesk.com>
|
||||
Homepage: https://rustdesk.com
|
||||
Depends: libgtk-3-0, libxcb-randr0, libxdo3, libxfixes3, libxcb-shape0, libxcb-xfixes0, libasound2, libsystemd0, pulseaudio, curl
|
||||
Description: A remote control software.
|
||||
|
||||
""" % version
|
||||
file = open(control_file_path, "w")
|
||||
file.write(content)
|
||||
file.close()
|
||||
|
||||
def build_flutter_deb(version):
|
||||
os.chdir('flutter')
|
||||
os.system('/bin/rm -rf tmpdeb/')
|
||||
os.system('dpkg-deb -R rustdesk.deb tmpdeb')
|
||||
os.system('flutter build linux --release')
|
||||
os.system('rm tmpdeb/usr/bin/rustdesk')
|
||||
os.system('strip build/linux/x64/release/liblibrustdesk.so')
|
||||
|
||||
os.system('mkdir -p tmpdeb/usr/bin/')
|
||||
os.system('mkdir -p tmpdeb/usr/lib/rustdesk')
|
||||
os.system('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
os.system('mkdir -p tmpdeb/usr/share/polkit-1/actions')
|
||||
os.system('mkdir -p tmpdeb/usr/share/applications/')
|
||||
|
||||
os.system(
|
||||
'cp -r build/linux/x64/release/bundle/* tmpdeb/usr/lib/rustdesk/')
|
||||
os.system(
|
||||
'pushd tmpdeb && ln -s /usr/lib/rustdesk/flutter_hbb usr/bin/rustdesk && popd')
|
||||
os.system(
|
||||
'cp build/linux/x64/release/liblibrustdesk.so tmpdeb/usr/lib/rustdesk/librustdesk.so')
|
||||
os.system(
|
||||
'cp ../rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
os.system(
|
||||
@ -143,14 +163,15 @@ def build_flutter_deb(version):
|
||||
'cp ../128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
||||
os.system(
|
||||
'cp ../rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||
os.system(
|
||||
'cp ../com.rustdesk.RustDesk.policy tmpdeb/usr/share/polkit-1/actions/')
|
||||
os.system("echo \"#!/bin/sh\" >> tmpdeb/usr/share/rustdesk/files/polkit && chmod a+x tmpdeb/usr/share/rustdesk/files/polkit")
|
||||
os.system('mkdir -p tmpdeb/DEBIAN')
|
||||
generate_control_file(version)
|
||||
os.system('cp -a ../DEBIAN/* tmpdeb/DEBIAN/')
|
||||
md5_file('usr/share/rustdesk/files/systemd/rustdesk.service')
|
||||
md5_file('usr/share/rustdesk/files/systemd/rustdesk.service.user')
|
||||
os.system('dpkg-deb -b tmpdeb rustdesk.deb; /bin/rm -rf tmpdeb/')
|
||||
os.system('dpkg-deb -b tmpdeb rustdesk.deb;')
|
||||
|
||||
os.system('/bin/rm -rf tmpdeb/')
|
||||
os.system('/bin/rm -rf ../DEBIAN/control')
|
||||
os.rename('rustdesk.deb', '../rustdesk-%s.deb' % version)
|
||||
os.chdir("..")
|
||||
|
||||
|
@ -4,7 +4,7 @@ use std::{
|
||||
ops::{Deref, Not},
|
||||
sync::{atomic::AtomicBool, mpsc, Arc, Mutex, RwLock},
|
||||
};
|
||||
|
||||
use std::sync::atomic::Ordering;
|
||||
pub use async_trait::async_trait;
|
||||
#[cfg(not(any(target_os = "android", target_os = "linux")))]
|
||||
use cpal::{
|
||||
@ -1891,3 +1891,7 @@ fn decode_id_pk(signed: &[u8], key: &sign::PublicKey) -> ResultType<(String, [u8
|
||||
bail!("Wrong public length");
|
||||
}
|
||||
}
|
||||
|
||||
pub fn disable_keyboard_listening() {
|
||||
crate::ui_session_interface::KEYBOARD_HOOKED.store(false, Ordering::SeqCst);
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
use hbb_common::log;
|
||||
|
||||
use crate::{start_os_service, flutter::connection_manager, start_server};
|
||||
use crate::{flutter::connection_manager, start_os_service, start_server};
|
||||
|
||||
/// Main entry of the RustDesk Core.
|
||||
/// Return true if the app should continue running with UI(possibly Flutter), false if the app should exit.
|
||||
@ -14,6 +14,9 @@ pub fn core_main() -> bool {
|
||||
connection_manager::start_listen_ipc_thread();
|
||||
return true;
|
||||
}
|
||||
|
||||
use hbb_common::env_logger::*;
|
||||
init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "info"));
|
||||
if args[1] == "--service" {
|
||||
log::info!("start --service");
|
||||
start_os_service();
|
||||
|
@ -328,6 +328,7 @@ pub fn session_start_(id: &str, event_stream: StreamSink<EventToUI>) -> ResultTy
|
||||
*session.event_stream.write().unwrap() = Some(event_stream);
|
||||
let session = session.clone();
|
||||
std::thread::spawn(move || {
|
||||
crate::client::disable_keyboard_listening();
|
||||
io_loop(session);
|
||||
});
|
||||
Ok(())
|
||||
|
@ -22,7 +22,7 @@ use std::sync::{Arc, Mutex, RwLock};
|
||||
|
||||
/// IS_IN KEYBOARD_HOOKED sciter only
|
||||
pub static IS_IN: AtomicBool = AtomicBool::new(false);
|
||||
static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(false);
|
||||
pub static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(true);
|
||||
|
||||
#[cfg(windows)]
|
||||
static mut IS_ALT_GR: bool = false;
|
||||
@ -1166,7 +1166,7 @@ impl<T: InvokeUiSession> Session<T> {
|
||||
if self.is_port_forward() || self.is_file_transfer() {
|
||||
return;
|
||||
}
|
||||
if KEYBOARD_HOOKED.swap(true, Ordering::SeqCst) {
|
||||
if !KEYBOARD_HOOKED.load(Ordering::SeqCst){
|
||||
return;
|
||||
}
|
||||
log::info!("keyboard hooked");
|
||||
|
Loading…
x
Reference in New Issue
Block a user