From a78a803a2267da3bb76f8ec93f0cc96972bded47 Mon Sep 17 00:00:00 2001 From: 21pages Date: Tue, 2 Dec 2025 14:54:56 +0800 Subject: [PATCH] fix is_public (#13701) Signed-off-by: 21pages --- src/common.rs | 25 ++++++++++++++++++++++++- src/hbbs_http/sync.rs | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/common.rs b/src/common.rs index 4ac3b6cd9..6decd2d04 100644 --- a/src/common.rs +++ b/src/common.rs @@ -1051,7 +1051,7 @@ fn get_api_server_(api: String, custom: String) -> String { #[inline] pub fn is_public(url: &str) -> bool { - url.contains("rustdesk.com") + url.contains("rustdesk.com/") || url.ends_with("rustdesk.com") } pub fn get_udp_punch_enabled() -> bool { @@ -2405,4 +2405,27 @@ mod tests { Duration::from_nanos(0) ); } + + #[test] + fn test_is_public() { + // Test URLs containing "rustdesk.com/" + assert!(is_public("https://rustdesk.com/")); + assert!(is_public("https://www.rustdesk.com/")); + assert!(is_public("https://api.rustdesk.com/v1")); + assert!(is_public("https://rustdesk.com/path")); + + // Test URLs ending with "rustdesk.com" + assert!(is_public("rustdesk.com")); + assert!(is_public("https://rustdesk.com")); + assert!(is_public("http://www.rustdesk.com")); + assert!(is_public("https://api.rustdesk.com")); + + // Test non-public URLs + assert!(!is_public("https://example.com")); + assert!(!is_public("https://custom-server.com")); + assert!(!is_public("http://192.168.1.1")); + assert!(!is_public("localhost")); + assert!(!is_public("https://rustdesk.computer.com")); + assert!(!is_public("rustdesk.comhello.com")); + } } diff --git a/src/hbbs_http/sync.rs b/src/hbbs_http/sync.rs index a266829a6..d3083acd1 100644 --- a/src/hbbs_http/sync.rs +++ b/src/hbbs_http/sync.rs @@ -278,7 +278,7 @@ fn heartbeat_url() -> String { Config::get_option("api-server"), Config::get_option("custom-rendezvous-server"), ); - if url.is_empty() || url.contains("rustdesk.com") { + if url.is_empty() || crate::is_public(&url) { return "".to_owned(); } format!("{}/api/heartbeat", url)