From a28c9f8f365f007846ea7a344c465a436bdb5a47 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Sun, 25 Feb 2024 13:29:06 +0800 Subject: [PATCH] remove more "rustdesk" built-in --- flutter/lib/common.dart | 13 ++++++----- flutter/lib/consts.dart | 1 - .../lib/desktop/pages/desktop_home_page.dart | 4 +++- flutter/lib/mobile/pages/scan_page.dart | 4 ++-- flutter/lib/models/model.dart | 2 +- flutter/macos/Podfile.lock | 22 ++++++------------- src/client/io_loop.rs | 13 +++++------ src/common.rs | 8 ++++++- src/core_main.rs | 18 ++++++++++----- src/flutter_ffi.rs | 4 ++++ src/platform/macos.rs | 20 +++++++++++------ ...riez.RustDesk_server.plist => agent.plist} | 0 ...ez.RustDesk_service.plist => daemon.plist} | 0 src/platform/windows.rs | 3 ++- src/tray.rs | 4 ++-- 15 files changed, 66 insertions(+), 50 deletions(-) rename src/platform/privileges_scripts/{com.carriez.RustDesk_server.plist => agent.plist} (100%) rename src/platform/privileges_scripts/{com.carriez.RustDesk_service.plist => daemon.plist} (100%) diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 2758ce5b2..95f26b445 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -1889,7 +1889,7 @@ bool handleUriLink({List? cmdArgs, Uri? uri, String? uriString}) { if (cmdArgs != null && cmdArgs.isNotEmpty) { args = cmdArgs; // rustdesk - if (args[0].startsWith(kUniLinksPrefix)) { + if (args[0].startsWith(bind.mainUriPrefixSync())) { final uri = Uri.tryParse(args[0]); if (uri != null) { args = urlLinkToCmdArgs(uri); @@ -2429,19 +2429,20 @@ int versionCmp(String v1, String v2) { } String getWindowName({WindowType? overrideType}) { + final name = bind.mainGetAppNameSync(); switch (overrideType ?? kWindowType) { case WindowType.Main: - return "RustDesk"; + return name; case WindowType.FileTransfer: - return "File Transfer - RustDesk"; + return "File Transfer - $name"; case WindowType.PortForward: - return "Port Forward - RustDesk"; + return "Port Forward - $name"; case WindowType.RemoteDesktop: - return "Remote Desktop - RustDesk"; + return "Remote Desktop - $name"; default: break; } - return "RustDesk"; + return name; } String getWindowNameWithId(String id, {WindowType? overrideType}) { diff --git a/flutter/lib/consts.dart b/flutter/lib/consts.dart index bf893951d..7a8056616 100644 --- a/flutter/lib/consts.dart +++ b/flutter/lib/consts.dart @@ -71,7 +71,6 @@ const String kOptionOpenInWindows = "allow-open-in-windows"; const String kOptionForceAlwaysRelay = "force-always-relay"; const String kOptionViewOnly = "view-only"; -const String kUniLinksPrefix = "rustdesk://"; const String kUrlActionClose = "close"; const String kTabLabelHomePage = "Home"; diff --git a/flutter/lib/desktop/pages/desktop_home_page.dart b/flutter/lib/desktop/pages/desktop_home_page.dart index 55cbfe110..65611434b 100644 --- a/flutter/lib/desktop/pages/desktop_home_page.dart +++ b/flutter/lib/desktop/pages/desktop_home_page.dart @@ -322,7 +322,9 @@ class _DesktopHomePageState extends State } Future buildHelpCards() async { - if (updateUrl.isNotEmpty && !isCardClosed) { + if (updateUrl.isNotEmpty && + !isCardClosed && + bind.mainUriPrefixSync().contains('rustdesk')) { return buildInstallCard( "Status", "There is a newer version of ${bind.mainGetAppNameSync()} ${bind.mainGetNewVersion()} available.", diff --git a/flutter/lib/mobile/pages/scan_page.dart b/flutter/lib/mobile/pages/scan_page.dart index 6eb4862a0..527e7446f 100644 --- a/flutter/lib/mobile/pages/scan_page.dart +++ b/flutter/lib/mobile/pages/scan_page.dart @@ -8,7 +8,7 @@ import 'package:qr_code_scanner/qr_code_scanner.dart'; import 'package:zxing2/qrcode.dart'; import '../../common.dart'; -import '../../consts.dart'; +import '../../models/platform_model.dart'; import '../widgets/dialog.dart'; class ScanPage extends StatefulWidget { @@ -61,7 +61,7 @@ class _ScanPageState extends State { var reader = QRCodeReader(); try { var result = reader.decode(bitmap); - if (result.text.startsWith(kUniLinksPrefix)) { + if (result.text.startsWith(bind.mainUriPrefixSync())) { handleUriLink(uriString: result.text); } else { showServerSettingFromQr(result.text); diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 7cf99c8c4..30625a6f1 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -379,7 +379,7 @@ class FfiModel with ChangeNotifier { onUrlSchemeReceived(Map evt) { final url = evt['url'].toString().trim(); - if (url.startsWith(kUniLinksPrefix) && handleUriLink(uriString: url)) { + if (url.startsWith(bind.mainUriPrefixSync()) && handleUriLink(uriString: url)) { return; } switch (url) { diff --git a/flutter/macos/Podfile.lock b/flutter/macos/Podfile.lock index 40105d0fe..4dfab95fd 100644 --- a/flutter/macos/Podfile.lock +++ b/flutter/macos/Podfile.lock @@ -10,9 +10,6 @@ PODS: - flutter_custom_cursor (0.0.1): - FlutterMacOS - FlutterMacOS (1.0.0) - - FMDB (2.7.5): - - FMDB/standard (= 2.7.5) - - FMDB/standard (2.7.5) - package_info_plus (0.0.1): - FlutterMacOS - path_provider_foundation (0.0.1): @@ -20,9 +17,9 @@ PODS: - FlutterMacOS - screen_retriever (0.0.1): - FlutterMacOS - - sqflite (0.0.2): + - sqflite (0.0.3): + - Flutter - FlutterMacOS - - FMDB (>= 2.7.5) - texture_rgba_renderer (0.0.1): - FlutterMacOS - uni_links_desktop (0.0.1): @@ -49,7 +46,7 @@ DEPENDENCIES: - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`) - - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`) + - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`) - texture_rgba_renderer (from `Flutter/ephemeral/.symlinks/plugins/texture_rgba_renderer/macos`) - uni_links_desktop (from `Flutter/ephemeral/.symlinks/plugins/uni_links_desktop/macos`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) @@ -58,10 +55,6 @@ DEPENDENCIES: - window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`) - window_size (from `Flutter/ephemeral/.symlinks/plugins/window_size/macos`) -SPEC REPOS: - trunk: - - FMDB - EXTERNAL SOURCES: desktop_drop: :path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos @@ -82,7 +75,7 @@ EXTERNAL SOURCES: screen_retriever: :path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos sqflite: - :path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos + :path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin texture_rgba_renderer: :path: Flutter/ephemeral/.symlinks/plugins/texture_rgba_renderer/macos uni_links_desktop: @@ -105,15 +98,14 @@ SPEC CHECKSUMS: file_selector_macos: 468fb6b81fac7c0e88d71317f3eec34c3b008ff9 flutter_custom_cursor: 629957115075c672287bd0fa979d863ccf6024f7 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce - path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38 - sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec texture_rgba_renderer: cbed959a3c127122194a364e14b8577bd62dc8f2 uni_links_desktop: 45900fb319df48fcdea2df0756e9c2626696b026 url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95 - video_player_avfoundation: 8563f13d8fc8b2c29dc2d09e60b660e4e8128837 + video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269 window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8 window_size: 339dafa0b27a95a62a843042038fa6c3c48de195 diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index 7780aca0d..a8fa4b67b 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -1527,14 +1527,11 @@ impl Remote { }, Some(message::Union::MessageBox(msgbox)) => { let mut link = msgbox.link; - // Links from the remote side must be verified. - if !link.starts_with("rustdesk://") { - if let Some(v) = hbb_common::config::HELPER_URL.get(&link as &str) { - link = v.to_string(); - } else { - log::warn!("Message box ignore link {} for security", &link); - link = "".to_string(); - } + if let Some(v) = hbb_common::config::HELPER_URL.get(&link as &str) { + link = v.to_string(); + } else { + log::warn!("Message box ignore link {} for security", &link); + link = "".to_string(); } self.handler .msgbox(&msgbox.msgtype, &msgbox.title, &msgbox.text, &link); diff --git a/src/common.rs b/src/common.rs index 8bb072906..73756b026 100644 --- a/src/common.rs +++ b/src/common.rs @@ -979,10 +979,16 @@ async fn check_software_update_() -> hbb_common::ResultType<()> { Ok(()) } +#[inline] pub fn get_app_name() -> String { hbb_common::config::APP_NAME.read().unwrap().clone() } +#[inline] +pub fn get_uri_prefix() -> String { + format!("{}://", get_app_name().to_lowercase()) +} + #[cfg(target_os = "macos")] pub fn get_full_name() -> String { format!( @@ -1512,7 +1518,7 @@ mod tests { assert_eq!(times, tokio_times); } } - + #[tokio::test] async fn test_tokio_time_interval_sleep() { let mut timer = interval_maker(); diff --git a/src/core_main.rs b/src/core_main.rs index e87ff9309..a377a649c 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -24,10 +24,11 @@ macro_rules! my_println{ #[inline] fn is_empty_uni_link(arg: &str) -> bool { - if !arg.starts_with("rustdesk://") { + let prefix = crate::get_uri_prefix(); + if !arg.starts_with(&prefix) { return false; } - arg["rustdesk://".len()..].chars().all(|c| c == '/') + arg[prefix.len()..].chars().all(|c| c == '/') } /// shared by flutter and sciter main function @@ -135,7 +136,7 @@ pub fn core_main() -> Option> { // linux uni (url) go here. #[cfg(all(target_os = "linux", feature = "flutter"))] - if args.len() > 0 && args[0].starts_with("rustdesk:") { + if args.len() > 0 && args[0].starts_with(&crate::get_uri_prefix()) { return try_send_by_dbus(args[0].clone()); } @@ -551,7 +552,14 @@ fn core_main_invoke_new_connection(mut args: std::env::Args) -> Option Option SyncReturn { SyncReturn(get_app_name()) } +pub fn main_uri_prefix_sync() -> SyncReturn { + SyncReturn(crate::get_uri_prefix()) +} + pub fn main_get_license() -> String { get_license() } diff --git a/src/platform/macos.rs b/src/platform/macos.rs index e9d553b7f..aff7f7593 100644 --- a/src/platform/macos.rs +++ b/src/platform/macos.rs @@ -158,21 +158,21 @@ pub fn is_installed_daemon(prompt: bool) -> bool { let Some(install_script) = PRIVILEGES_SCRIPTS_DIR.get_file("install.scpt") else { return false; }; - let Some(install_script_body) = install_script.contents_utf8() else { + let Some(install_script_body) = install_script.contents_utf8().map(correct_app_name) else { return false; }; - let Some(daemon_plist) = PRIVILEGES_SCRIPTS_DIR.get_file(&daemon) else { + let Some(daemon_plist) = PRIVILEGES_SCRIPTS_DIR.get_file("daemon.plist") else { return false; }; - let Some(daemon_plist_body) = daemon_plist.contents_utf8() else { + let Some(daemon_plist_body) = daemon_plist.contents_utf8().map(correct_app_name) else { return false; }; - let Some(agent_plist) = PRIVILEGES_SCRIPTS_DIR.get_file(&agent) else { + let Some(agent_plist) = PRIVILEGES_SCRIPTS_DIR.get_file("agent.plist") else { return false; }; - let Some(agent_plist_body) = agent_plist.contents_utf8() else { + let Some(agent_plist_body) = agent_plist.contents_utf8().map(correct_app_name) else { return false; }; @@ -213,6 +213,12 @@ pub fn is_installed_daemon(prompt: bool) -> bool { false } +fn correct_app_name(s: &str) -> String { + let s = s.replace("rustdesk", &crate::get_app_name().to_lowercase()); + let s = s.replace("RustDesk", &crate::get_app_name()); + s +} + pub fn uninstall_service(show_new_window: bool) -> bool { // to-do: do together with win/linux about refactory start/stop service if !is_installed_daemon(false) { @@ -222,7 +228,7 @@ pub fn uninstall_service(show_new_window: bool) -> bool { let Some(script_file) = PRIVILEGES_SCRIPTS_DIR.get_file("uninstall.scpt") else { return false; }; - let Some(script_body) = script_file.contents_utf8() else { + let Some(script_body) = script_file.contents_utf8().map(correct_app_name) else { return false; }; @@ -625,7 +631,7 @@ pub fn handle_application_should_open_untitled_file() { let x = std::env::args().nth(1).unwrap_or_default(); if x == "--server" || x == "--cm" || x == "--tray" { if crate::platform::macos::check_main_window() { - allow_err!(crate::ipc::send_url_scheme("rustdesk:".into())); + allow_err!(crate::ipc::send_url_scheme(crate::get_uri_prefix())); } } } diff --git a/src/platform/privileges_scripts/com.carriez.RustDesk_server.plist b/src/platform/privileges_scripts/agent.plist similarity index 100% rename from src/platform/privileges_scripts/com.carriez.RustDesk_server.plist rename to src/platform/privileges_scripts/agent.plist diff --git a/src/platform/privileges_scripts/com.carriez.RustDesk_service.plist b/src/platform/privileges_scripts/daemon.plist similarity index 100% rename from src/platform/privileges_scripts/com.carriez.RustDesk_service.plist rename to src/platform/privileges_scripts/daemon.plist diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 266667808..9ffbf1d62 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -2408,11 +2408,12 @@ sc start {app_name} fn run_after_run_cmds(silent: bool) { let (_, _, _, exe) = get_install_info(); + let app = crate::get_app_name().to_lowercase(); if !silent { log::debug!("Spawn new window"); allow_err!(std::process::Command::new("cmd") .arg("/c") - .arg("timeout /t 2 & start rustdesk://") + .arg("timeout /t 2 & start {app}://") .creation_flags(winapi::um::winbase::CREATE_NO_WINDOW) .spawn()); } diff --git a/src/tray.rs b/src/tray.rs index 7be8b7b81..c960b8f7c 100644 --- a/src/tray.rs +++ b/src/tray.rs @@ -91,14 +91,14 @@ pub fn make_tray() -> hbb_common::ResultType<()> { use std::process::Command; Command::new("cmd") .arg("/c") - .arg("start rustdesk://") + .arg(&format!("start {}", crate::get_uri_prefix())) .creation_flags(winapi::um::winbase::CREATE_NO_WINDOW) .spawn() .ok(); } #[cfg(target_os = "linux")] if !std::process::Command::new("xdg-open") - .arg("rustdesk://") + .arg(&crate::get_uri_prefix()) .spawn() .is_ok() {