fufesou
28930c0463
fix: non-E2EE show dialog ( #15514 )
...
* fix: non-E2EE show dialog
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: build web, bridge
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: direct IP access, do not snow non-E2EE dialog
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: non E2EE dialog, update contents
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: non-E2EE, show dialog, port forward
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: non-E2EE dialog, port forward, ignore direct IP access
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: non-E2EE is_direct_ip_access()
Signed-off-by: fufesou <linlong1266@gmail.com >
* Simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: non-E2EE dialog, port forward, close socket on disconnect
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: non-E2EE dialog, incorrect reuse of Data::Close
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-07-06 17:05:11 +08:00
fufesou
37141afece
refact: remove feature cli ( #15524 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-07-06 16:17:32 +08:00
fufesou
493b14ba78
Fix/session scope permission audit ( #15469 )
...
* fix: enforce session-scoped permissions
Restrict non-remote sessions to their allowed message types, filter
out-of-scope login options, and audit rejected or filtered messages.
Hide screenshot controls outside default remote sessions.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: typo
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: prevent privacy mode in view-camera sessions
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: switch display, check non-view-camera
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: avoid sending unsupported messages
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, add option to control close/alarm
Signed-off-by: fufesou <linlong1266@gmail.com >
* Fix: scoped session handling for view-camera compatibility
- Skip view-camera auto-login and display-management side effects
- Allow harmless render broadcasts without affecting non-video sessions
- Keep legacy view-camera management messages compatible as no-ops
- Preserve stricter scope violations for non-video session types
Signed-off-by: fufesou <linlong1266@gmail.com >
* update libs/hbb_common
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: ignore repeated login request
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: view camera, support "Take screenshot"
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scoped messages, check update options
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, check portforward before conn type voolations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: scoped messages, reduce changes.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: keep scoped sessions compatible with render broadcasts
Allow legacy render-broadcast no-op messages for file transfer and terminal
sessions while keeping port forward and mixed options scoped. Also avoid sending
new render updates to non-video Flutter sessions.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: scope screenshot requests by video source
Key screenshot requests by video source and display index so camera and
monitor sessions cannot consume each other's requests. Deduplicate the Flutter
render-target predicate while keeping render updates limited to video sessions.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: Harden scoped session message handling
Filter option updates by authenticated connection type,
keep legacy no-op messages compatible, and avoid noisy repeated
scope violation alarms.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: Send close reason for scoped session violations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: Enforce scoped session message filtering
- filter out-of-scope messages for limited session types
- scope option updates by authenticated connection type
- keep render-broadcast no-op compatibility for non-video scoped sessions
- restore view-camera screenshot handling
- improve session scope violation audit labels
- avoid cloning option messages on the remote hot path
Signed-off-by: fufesou <linlong1266@gmail.com >
* Fix scoped session clipboard broadcast compatibility
Treat text clipboard broadcasts as no-op compatibility messages for FileTransfer and Terminal sessions, matching existing
handler behavior and preventing optional scope-violation close from disconnecting those sessions. Keep ViewCamera and
PortForward clipboard messages subject to normal scope enforcement.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: log warn
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: restrict Flutter clipboard sync to default sessions
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, comments and tests
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, reset sessions in login handle
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: session scope, view camera, allow clipboard noop
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-07-05 23:28:32 +08:00
fufesou
001848bf2f
fix(fuse): umount ( #15426 )
...
* fix(clipboard): clean up stale Linux FUSE mounts
Recover Linux file clipboard FUSE mount points before remounting and stop treating a cached
context as valid when the mount has already gone away.
This fixes the desktop file manager copy failure that shows dialogs such as
"Error while copying a" and "There was an error copying the file into xxx".
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(clipboard): fuse, reduce dups
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: clear Linux file clipboard before unmounting FUSE
Ensure Linux client teardown clears RustDesk file clipboard URLs while
the FUSE context is still available. Also prefer fusermount before
umount to avoid noisy unprivileged teardown attempts.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(clipboard): return and log errors
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-06-26 16:17:44 +08:00
fufesou
88ae00ba73
refact: restart remote device, autoconnect ( #15290 )
...
* refact: restart remote device, autoconnect
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: guard restart reconnect timer after session close
Signed-off-by: fufesou <linlong1266@gmail.com >
* Simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(restart): auto connect, comments
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-06-17 17:50:18 +08:00
21pages
b73e5bbfa0
opt: release clipboard config lock before updates ( #15277 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2026-06-14 17:27:19 +08:00
littlestejan
84af60c07e
Fix clipboard synchronization not fully disabled in View Only mode ( #15224 )
...
* fix: view-only clipboard sync
Signed-off-by: Setani <little_stejan@hotmail.com >
* fix: gate Android MultiClipboards handling with clipboard permissions
Signed-off-by: Setani <little_stejan@hotmail.com >
---------
Signed-off-by: Setani <little_stejan@hotmail.com >
2026-06-10 07:42:58 +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
s1korrrr
99b565ef40
fix(iOS): preserve local pasteboard sync from Windows hosts ( #14659 )
...
* fix(ios): accept windows clipboard updates locally
Signed-off-by: Rafal <mrsikorarafal@gmail.com >
* docs: document clipboard text helpers
* fix(iOS): sync clipboard, debug
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: Rafal <mrsikorarafal@gmail.com >
Signed-off-by: fufesou <linlong1266@gmail.com >
Co-authored-by: fufesou <linlong1266@gmail.com >
2026-04-28 10:55:28 +08:00
fufesou
2f694c0eb2
fix: file transfer, path traversal ( #14678 )
...
* fix: file transfer, path traversal
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): remove stale files
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): update_folder_files() after set_files()
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): reduce .clone()
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): undo checking "done message for unkown id"
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): refactor
1. Hide `files` in `new_write()`.
2. Use `set_files()` to validate `files` before writing.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): Remove redundant checks
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(fs): update hbb_common
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-04-10 18:00:11 +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
4ed8696d1d
fix: file transfer, jobs lost if conn is not established ( #13635 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-11-26 19:15:32 +08:00
fufesou
b2dff336ce
fix: wayland controlled side, cursor misalignment ( #13537 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-11-18 00:37:15 +08:00
fufesou
ac70f380a6
fix: file transfer, resume, path and finished size ( #12739 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-26 17:59:39 +08:00
fufesou
6381f43f01
feat: clipboard files, audit ( #12730 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-25 22:29:53 +08:00
fufesou
f4fb31d7a1
feat: file transfer, resume ( #12626 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-25 14:34:03 +08:00
fufesou
a22f2108c6
refact: suppress warns on macos ( #12449 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-18 15:09:11 +08:00
RustDesk
53efaf125c
Revert "Feat: file transfer, resume ( #12557 )" ( #12620 )
...
This reverts commit 43ec57c769 .
2025-08-11 23:25:41 +08:00
21pages
a0659a277a
show TCP/UDP/IPv6 in tooltip ( #12613 )
...
* add punch type log
Signed-off-by: 21pages <sunboeasy@gmail.com >
* show TCP/UDP/IPv6 in tooltip
Signed-off-by: 21pages <sunboeasy@gmail.com >
* Skip udp punch if udp nat port is 0
Signed-off-by: 21pages <sunboeasy@gmail.com >
---------
Signed-off-by: 21pages <sunboeasy@gmail.com >
2025-08-11 16:13:31 +08:00
fufesou
43ec57c769
Feat: file transfer, resume ( #12557 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-09 23:47:19 +08:00
21pages
9409912344
update kcp-sys ( #12419 )
...
1. Update kcp-sys to send KCP in frames to avoid potential crashes.
2. Fix the issue when the controling side is closed, the kcp connection close is not immediately recognized by the controlled end.
* Unless the controling side receives the close reason, force the sending of the close reason to the controlled end when using KCP, and delay for 30ms to ensure the message is sent successfully.
* Move the CloseReason receiving forward, as this message needs to be received when unauthorized, especially for kcp.
Signed-off-by: 21pages <sunboeasy@gmail.com >
2025-07-25 13:22:52 +08:00
fufesou
e91f4fc104
fix: terminal, restore, cross users ( #12335 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-07-18 16:25:53 +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
rustdesk
7792ac1481
udp punch and ipv6 punch
2025-06-12 21:32:28 +08:00
fufesou
c626c2414d
feat: take screenshot ( #11591 )
...
* feat: take screenshot
Signed-off-by: fufesou <linlong1266@gmail.com >
* screenshot, vram temp switch capturer
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: misspelling
Signed-off-by: fufesou <linlong1266@gmail.com >
* screenshot, taking
Signed-off-by: fufesou <linlong1266@gmail.com >
* screenshot, rgba stride
Signed-off-by: fufesou <linlong1266@gmail.com >
* Bumps 1.4.0
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-04-30 17:23:35 +08:00
YinMo19
c9d5e15ac0
Using new Stream type adapted to the update of submodules ( #11581 )
...
* [fix bug] fix all err stream type.
* [update] update hbb_common.
* [bug fix] Stream in other platform.
2025-04-28 00:47:33 +08:00
fufesou
23e70c0fd1
refact: remote printer, adapter dll, free data ptr ( #11279 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-03-28 21:58:46 +08:00
fufesou
4b14f86134
refact: remote printer, log ( #11271 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-03-28 10:56:19 +08:00
fufesou
ee2478168c
fix: remote printer ( #11270 )
...
* fix: remote printer, log
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: remote printer, avoid double sign
Signed-off-by: fufesou <linlong1266@gmail.com >
* Spawn a new thread to handle the print job.
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-03-28 10:36:42 +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
00293a9902
Feat/macos clipboard file ( #10939 )
...
* feat: macos, clipboard file
Signed-off-by: fufesou <linlong1266@gmail.com >
* Can't reuse file transfer
Signed-off-by: fufesou <linlong1266@gmail.com >
* handle paste task
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-02-28 00:46:46 +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
fufesou
dd004f1a2d
fix: clipboard, client side, update is required on conn ( #10464 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-01-17 02:27:20 +08:00
fufesou
1c62a28ef3
fix: build ( #10364 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-12-25 16:36:13 +08:00
fufesou
9ed2499666
fix: file clipboard, init disabled ( #10361 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-12-25 15:18:06 +08:00
21pages
e5aa31eb4c
Fix auto record outgoing sessions ignore record permission ( #10294 )
...
1. Fix auto record outgoing sessions ignore record permission
2. Stop record if record permission changed
3. Update hwcodec
4. Make video thread finish faster when connection closed
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-12-16 17:13:48 +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
64654ee7cf
seperate video decoding thread for each display ( #9968 )
...
* seperate video decoding thread for each display
1. Separate Video Decoding Thread for Each Display
2. Fix Decode Errors When Clearing the Queue
Previously, on-flight frames after clearing the queue could not be decoded successfully. This issue can be resolved by setting a discard_queue flag when sending a refresh message. The flag will be reset upon receiving a keyframe.
Signed-off-by: 21pages <sunboeasy@gmail.com >
* update video format along with fps to flutter
Signed-off-by: 21pages <sunboeasy@gmail.com >
* Fix keyframe interval when auto record outgoing sessions
Signed-off-by: 21pages <sunboeasy@gmail.com >
---------
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-11-22 00:02:25 +08:00
21pages
c5426b0fbc
Fix hevc decode error "Could not find ref with POC" ( #9960 )
...
1. Dropping frames can cause this error, reset encoder when this
happens.
2. There are some logic error for clear video queue, because video queue
message is not cleared. This need to be fixed.
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-11-18 23:03:27 +08:00
fufesou
8b710f62c8
feat: android clipboard, multi-formats ( #9950 )
...
* feat: android clipboard, multi-formats
Signed-off-by: fufesou <linlong1266@gmail.com >
* Chore
Signed-off-by: fufesou <linlong1266@gmail.com >
* Remove unused code
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-11-18 15:43:41 +08:00
21pages
e8187588c1
auto record outgoing ( #9711 )
...
* Add option auto record outgoing session
* In the same connection, all displays and all windows share the same
recording state.
todo:
Android check external storage permission
Known issue:
* Sciter old issue, stop the process directly without stop record, the record file can't play.
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-10-21 14:34:06 +08:00
rustdesk
2e314bf032
disable init clipboard sync by default
2024-09-20 17:38:29 +08:00
fufesou
e5ec6957fe
fix: option OPTION_ONE_WAY_FILE_TRANSFER ( #9387 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-09-18 18:22:12 +08:00
rustdesk
cc288272d3
OPTION_ONE_WAY_CLIPBOARD_REDIRECTION,
...
OPTION_ENABLE_CLIPBOARD_INIT_SYNC,
OPTION_ALLOW_LOGON_SCREEN_PASSWORD,
OPTION_ONE_WAY_FILE_TRANSFER,
2024-09-18 12:18:26 +08:00
fufesou
9380f33d7c
Refact/options ( #9318 )
...
* refact options
Signed-off-by: fufesou <linlong1266@gmail.com >
* Remove unused msg
Signed-off-by: fufesou <linlong1266@gmail.com >
* web, toggle virtual display
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-09-10 23:54:59 +08:00
fufesou
ec28567362
fix: win, file clipboard ( #9243 )
...
1. Return the result of `wait_response_event()` in
`cliprdr_send_format_list()`
2. Add recv flags to avoid waiting a long time.
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-09-03 20:55:45 +08:00
21pages
ed18e3c786
file rename ( #9089 )
...
Signed-off-by: 21pages <sunboeasy@gmail.com >
2024-08-16 12:55:58 +08:00
fufesou
83bf067d18
fix: not plug virtual dislay, non win, installed ( #9034 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-08-12 21:53:41 +08:00