fufesou
bc2c36215d
fix(ipc): scope active-user IPC routing to root CLI main requests ( #15058 )
...
* fix(ipc): scope active-user IPC routing to root CLI main requests
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): cmdline, comments fails close
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): cmdline, better check
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): cmdline, try active uid when no --server processes
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): cmdline, select active uid
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): remove unused import
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-05-18 16:32:46 +08:00
RustDesk
472c4fc03a
--deploy, reuse the device token ( #15035 )
...
* --deploy, reuse the device token
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
* fix review
* no id validation in deploy, so to keep the same behavior in udp register
pk
* Fix collapsed toolbar drag preview sizing
* Revert "Fix collapsed toolbar drag preview sizing"
This reverts commit 66e39abb74 .
* remove too many logs
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-16 14:41:34 +08:00
fufesou
9df486a689
fix(ipc): harden local IPC authorization and portable-service bootstrap flow ( #14671 )
...
* fix(ipc): harden ipc access
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): full cmd path, comments, simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): portable service, ipc exit
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): Remove unused logs
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): Use SetEntriesInAclW instead of icacls
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): Comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): check is_reparse_point
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): shmem name, no fallback
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): Simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): better exit and clear
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): portable service, better exit
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): comments, id -u
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: comments linux headless, rx desktop ready
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): magic number
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): update deps
Signed-off-by: fufesou <linlong1266@gmail.com >
* Update Cargo.lock
* Update Cargo.lock
* fix(ipc): harden ipc, test `identity_unavailable`
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): portable service, check dir of shmem
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): macos, better check exe allowed
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): update hbb_common
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): update hbb_common
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): harden ipc, better active uid for uinput
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): harden portable service token validation
Compare portable service IPC tokens in constant time and document the
CSPRNG source used for one-time token generation. Clarify Windows IPC
authorization comments around canonical path matching and partial peer
identity lookup.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): harden portable service token handling
Generate the portable service IPC token directly from OsRng, keep token
comparison in the IPC layer as a fixed-length byte-wise check, and document
the malformed-frame behavior for protected service IPC.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(ipc): comments
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2026-05-09 18:15:00 +08:00
rustdesk
f29dec7b13
harden switch side
2026-05-06 19:27:56 +08:00
fufesou
383a5c3478
feat: option, enable-privacy-mode & enable-perm-change-in-accept-window ( #14875 )
...
* feat: option, privacy mode
Signed-off-by: fufesou <linlong1266@gmail.com >
* feat(privacy mode): update libs/hbb_common
Signed-off-by: fufesou <linlong1266@gmail.com >
* feat(privacy mode): turn off on disable privacy mode
Signed-off-by: fufesou <linlong1266@gmail.com >
* feat(privacy mode): better check if supported
Signed-off-by: fufesou <linlong1266@gmail.com >
* feat(option): enable perm change in accept window
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-05-02 00:44:22 +08:00
fufesou
170516572e
refact(password): Store permanent password as hashed verifier ( #14619 )
...
* refact(password): Store permanent password as hashed verifier
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(password): remove unused code
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(password): mobile, password dialog, width 500
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-03-26 14:49:54 +08:00
RustDesk
ab64a32f30
avatar ( #14440 )
...
* avatar
* refactor avatar display: unify rendering and resolve at use time
- Extract buildAvatarWidget() in common.dart to share avatar rendering
logic across desktop settings, desktop CM and mobile CM
- Add resolve_avatar_url() in Rust, exposed via FFI (SyncReturn),
to resolve relative avatar paths (e.g. "/avatar/xxx") to absolute URLs
- Store avatar as-is in local config, only resolve when displaying
(settings page) or sending (LoginRequest)
- Resolve avatar in LoginRequest before sending to remote peer
- Add error handling for network image load failures
- Guard against empty client.name[0] crash
- Show avatar in mobile settings page account tile
Signed-off-by: 21pages <sunboeasy@gmail.com >
* web: implement mainResolveAvatarUrl via js getByName
Signed-off-by: 21pages <sunboeasy@gmail.com >
* increase ipc Data enum size limit to 120 bytes
Signed-off-by: 21pages <sunboeasy@gmail.com >
---------
Signed-off-by: 21pages <sunboeasy@gmail.com >
Co-authored-by: 21pages <sunboeasy@gmail.com >
2026-03-04 21:43:19 +08:00
21pages
3a9084006f
Allow configuring remote control permissions for different users ( #13974 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2026-01-09 00:21:28 +08:00
fufesou
969ea28d06
feat(fs): delegate win --server file reading to CM ( #13736 )
...
- Route Windows server-to-client file reads through CM instead of the connection layer
- Add FS IPC commands (ReadFile, CancelRead, SendConfirmForRead, ReadAllFiles) and CM data messages
(ReadJobInitResult, FileBlockFromCM, FileReadDone, FileReadError, FileDigestFromCM, AllFilesResult)
- Track pending read validations and read jobs to coordinate CM-driven file transfers and clean them up
on completion, cancellation, and errors
- Enforce a configurable file-transfer-max-files limit for ReadAllFiles and add stronger file name/path
validation on the CM side
- Improve Flutter file transfer UX and robustness:
- Use explicit percent/percentText progress fields
- Derive speed and cancel actions from the active job
- Handle job errors via FileModel.handleJobError and complete pending recursive tasks on failure
- Wrap recursive directory operations in try/catch and await sendRemoveEmptyDir when removing empty directories
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-12-28 15:39:35 +08:00
fufesou
910dcf2036
refact: tls, native-tls fallback rustls-tls ( #13263 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-11-03 23:21:01 +08:00
luzpaz
e14e850e10
fix: typos in src/ and subdirectories ( #11727 )
...
Found via codespell
2025-09-17 13:37:44 +08:00
fufesou
6c949a9602
feat: cursor, linux ( #12822 )
...
* feat: cursor, linux
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: cursor, text, white background
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-09-06 12:11:43 +08:00
fufesou
e2ec6a5be8
feat: whiteboard, macos ( #12780 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-30 22:16:35 +08:00
fufesou
d0e9c6dc57
feat: show my cursor ( #12745 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-28 15:20:01 +08:00
fufesou
f4fb31d7a1
feat: file transfer, resume ( #12626 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-25 14:34:03 +08:00
RustDesk
53efaf125c
Revert "Feat: file transfer, resume ( #12557 )" ( #12620 )
...
This reverts commit 43ec57c769 .
2025-08-11 23:25:41 +08:00
fufesou
43ec57c769
Feat: file transfer, resume ( #12557 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-09 23:47:19 +08:00
fufesou
f766d28c36
Fix/linux keep terminal sessions ( #12222 )
...
* fix: linux, keep terminal sessions
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: terminal service stucked at reader join
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-07-03 17:27:50 +08:00
RustDesk
5faf0ad3cf
terminal works basically. ( #12189 )
...
* terminal works basically.
todo:
- persistent
- sessions restore
- web
- mobile
* missed terminal persistent option change
* android sdk 34 -> 35
* +#![cfg_attr(lt_1_77, feature(c_str_literals))]
* fixing ci
* fix ci
* fix ci for android
* try "Fix Android SDK Platform 35"
* fix android 34
* revert flutter_plugin_android_lifecycle to 2.0.17 which used in rustdesk 1.4.0
* refactor, but break something of desktop terminal (new tab showing loading)
* fix connecting...
2025-07-01 13:12:55 +08:00
21pages
9475743b4e
allow use websocket ( #11677 )
...
1. Enable the RustDesk client to use WebSocket for either controlling or being controlled.
2. Fix TCP sending `register_pk` frequently
Note:
1. Because hbb_common directly uses `use_ws` to read config directly, rustdesk also directly reads config
Signed-off-by: 21pages <sunboeasy@gmail.com >
2025-05-09 12:18:49 +08:00
fufesou
61cdb60362
fix: rdp ( #11670 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-05-07 21:24:14 +08:00
fufesou
ca00706a38
feat, update, win, macos ( #11618 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-05-04 07:32:47 +08:00
21pages
c0789a5fc0
Add custom client judgment for hide cm ( #11563 )
...
There is latency in the HTTP request; add a custom client check to avoid the PRO variable being unset during application startup
Signed-off-by: 21pages <sunboeasy@gmail.com >
2025-04-25 17:13:19 +08:00
fufesou
279fb72a4f
fix: remote printer, update install option ( #11461 )
...
* fix: remote printer, update install option
Signed-off-by: fufesou <linlong1266@gmail.com >
* Add comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* Add comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* Win, run_cmds, remove extra whitespace and newline
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-04-24 18:24:22 +08:00
fufesou
f4bbf82363
feat: remote printer ( #11231 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-03-27 15:34:27 +08:00
21pages
f0f999dc27
view camera ( #11040 )
...
* view camera
Signed-off-by: 21pages <sunboeasy@gmail.com >
* `No cameras` prompt if no cameras available, `peerGetSessionsCount` use
connType as parameter
Signed-off-by: 21pages <sunboeasy@gmail.com >
* fix, use video_service_name rather than display_idx as key in qos,etc
Signed-off-by: 21pages <sunboeasy@gmail.com >
---------
Signed-off-by: 21pages <sunboeasy@gmail.com >
Co-authored-by: Adwin White <adwinw01@gmail.com >
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2025-03-10 21:06:53 +08:00
fufesou
fbba8f0b34
refact: file copy&paste, cross platform (no macOS) ( #10671 )
...
* feat: unix, file copy&paste
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: unix file c&p, check peer version
Signed-off-by: fufesou <linlong1266@gmail.com >
* Update pubspec.yaml
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2025-02-04 20:33:02 +08:00
21pages
d4a712bb32
always block desktop settings page if video connection exists ( #10224 )
...
1. Always block desktop settings page if video connection exists, both mouse event and key event are blocked..
2. Server control page always block key event.
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-12-08 18:26:55 +08:00
fufesou
1c17fddf51
fix: android clipboard permission ( #10223 )
...
* fix: android clipboard permission
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: Android, clipboard, floating ball
Call rust to check if clipboard is enabled.
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-12-07 22:34:54 +08:00
zuiyu
314c93b210
Create empty dir on send files in local ( #9993 )
...
* feat: Add empty dirs on sendfiles
* Update connection.rs
---------
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2024-11-23 23:09:11 +08:00
21pages
6159449eba
move option video-save-directory and allow-auto-record-outgoing to local ( #9715 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-10-22 08:24:52 +08:00
fufesou
ba832362a7
fix: installed, copy&paste, special format ( #9570 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-10-06 08:32:04 +08:00
21pages
f0ca4b9fee
--no-server parameter to avoid server ipc occupied by ui ( #9272 )
...
Signed-off-by: 21pages <pages21@163.com >
2024-09-06 14:43:38 +08:00
21pages
3bd34bf0b9
increase interval for restart linux ui, try fix loop start ( #9264 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-09-05 18:34:48 +08:00
21pages
29e12b84a9
password max length prompt ( #9248 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-09-04 11:31:13 +08:00
21pages
ed18e3c786
file rename ( #9089 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-08-16 12:55:58 +08:00
21pages
1729ee337f
trust this device to skip 2fa ( #9012 )
...
* trust this device to skip 2fa
Signed-off-by: 21pages <sunboeasy@gmail.com >
* Update connection.rs
---------
Signed-off-by: 21pages <sunboeasy@gmail.com >
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2024-08-12 18:08:33 +08:00
21pages
76d5a8b205
unlock with PIN ( #8977 )
...
* add custom password to unlock settings
* If not set, use admin password; if set, use custom settings password.
* At least 4 characters.
* Set with gui or command line.
Signed-off-by: 21pages <sunboeasy@gmail.com >
* Update cn.rs
---------
Signed-off-by: 21pages <sunboeasy@gmail.com >
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2024-08-07 16:21:38 +08:00
fufesou
15404ecab4
fix: clipboard, windows, controlled side, formats ( #8885 )
...
* fix: clipboard, windows, controlled side, formats
Signed-off-by: fufesou <linlong1266@gmail.com >
* Clipboard, reuse ipc conn and send_raw()
Signed-off-by: fufesou <linlong1266@gmail.com >
* Clipboard, merge content buffer
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: clipboard service, ipc stream
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-30 11:35:39 +08:00
fufesou
30afe4f779
refact: seperate audio device for voice call ( #8703 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-14 04:07:02 +08:00
21pages
821f7245b0
videotoolbox ram codec ( #8683 )
...
* h265 encoding: the second frame always fails, use repeat encoding to achieve real-time encoding
* h264 encoding: Not supported because encoding fails too frequently, about 50%, with one failure followed by another success.
* h264/h265 decoding: No issues found.
* Does not support dynamically changing the bitrate and changing the quality by resetting the encoder.
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-07-12 11:08:51 +08:00
fufesou
b047730830
Refact/android input changed notify clients ( #8494 )
...
* refact: android, input control changed, notify clients
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: android init input perm
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-06-27 13:05:45 +08:00
rustdesk
77f1c7e74c
add crate::platform::quit_gui(); for double sure
2024-06-19 21:21:51 +08:00
rustdesk
27478946ea
open new window not always work, so give it a little time before exit
2024-06-19 21:17:26 +08:00
rustdesk
60dc40f47f
try hide docker in tao delegate because hide in rustdesk side a bit late so that still seeing it sometimes
...
refactor service to make it restart after login to avoid delegate caught for seconds after login
also make main windows Close event restart itself for above case
2024-06-19 15:42:53 +08:00
21pages
841c331981
fix sleep duration when receive ipc close ( #8410 )
...
unit is second
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-06-19 14:02:13 +08:00
21pages
4eafa5a585
fix ci ( #8407 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-06-19 10:12:10 +08:00
rustdesk
5a740e891e
make main window can be reopen if killed by --server for creating ipc
2024-06-19 09:27:29 +08:00
rustdesk
1fcc7001bd
use exit(-1) in Data::Close to make sure --server can restart
2024-06-18 22:42:42 +08:00
rustdesk
e57854422a
fix kill main window in --server
2024-06-18 22:04:34 +08:00