Alex Yusiuk
64535c5559
refactor: add wildcard_imports clippy extra-pedantic lint ( #902 )
CI / Check formatting (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
CI / Success (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
2025-08-18 13:49:02 -04:00
Steffen Butzer
7d28ef83a6
feat: add MS-TSGU (Microsoft RD Gateway) support ( #913 )
...
CI / Fuzzing (push) Blocked by required conditions
CI / Check typos (push) Waiting to run
CI / Check formatting (push) Waiting to run
CI / Success (push) Blocked by required conditions
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
This adds a working state to connect with the ironrdp-client CLI against
a server behind a microsoft remote desktop gateway.
During my testing this was robust enough to work with sessions for more
than 30 minutes.
CLI Flags and prompts are implemented and can be mixed, so the following
would prompt only for 2 passwords:
> ironrdp-client --gw-user username@domain --gw-endpoint rdp.gw.host:443
-u username@domain rdp.internal.host
[MS-TSGU]
0007d661 -a86d-4e8f-89f7-7f77f8824188
* This implements a MVP (in terms of recentness) state needed to connect
through microsoft rdp gateway.
* This only supports the HTTPS protocol with Websocket (and not the
legacy HTTP, HTTP-RPC or UDP protocols).
* This does not implement reconnection/reauthentication.
* This only supports basic auth.
Mostly looking for rough initial feedback (e.g. in terms of if there are
parts that dont align with projects architecture or other areas needing
major rework) as well as if the implemented scope would be considered
complete enough to land this in the first place.
2025-08-18 06:11:24 -04:00
Benoît Cortier
cd184d30bd
build: fix xtask web build task ( #912 )
CI / Check typos (push) Has been cancelled
CI / Check formatting (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Success (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
2025-08-13 07:56:52 -04:00
dependabot[bot]
9ff3cffb59
build(deps): bump the patch group across 2 directories with 6 updates ( #914 )
CI / Check formatting (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Success (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
2025-08-12 10:27:56 +00:00
dependabot[bot]
a682d9cc48
build(deps): bump uuid from 1.17.0 to 1.18.0 ( #915 )
2025-08-12 06:19:55 -04:00
Gabriel Bauman
ac291423de
refactor(web): add NegotiationFailure to IronErrorKind ( #905 )
...
CI / Check formatting (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
CI / Success (push) Has been cancelled
Adds a general NegotiationFailure to IronErrorKind so that web embedders
can handle failures that occur during protocol negotiation, before
authentication.
Changes:
- RDP errors during the negotiation phase become
IronErrorKind.NegotiationError
- User-friendly RDP negotiation error messages to ironrdp-connector
- Update TypeScript definitions
2025-08-08 04:52:28 -04:00
Benoît Cortier
5fc9fefa02
refactor(server): remove needless sync primitives ( #911 )
...
CI / Check formatting (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
CI / Success (push) Has been cancelled
Instead use a `Option` as a slot from which the value can be moved out
temporarily when necessary.
2025-08-05 11:15:55 +00:00
dependabot[bot]
85fc1c7bb3
build(deps): bump tokio from 1.47.0 to 1.47.1 in the patch group across 1 directory ( #909 )
2025-08-05 06:35:05 -04:00
Benoît Cortier
867ed221da
docs: clarify STYLE.md ( #910 )
...
For error messages: use proper abbreviation casing, e.g., IPv4 and IPv6
(not ipv4/ipv6).
For inline comments, no period for brief comments
(e.g., `// VER`, `// RSV`, `// ATYP`)
2025-08-05 09:12:59 +00:00
Vladyslav Nikonov
166b76010c
feat(dvc): make dvc named pipe proxy cross-platform ( #896 )
...
CI / Check typos (push) Waiting to run
CI / Success (push) Blocked by required conditions
CI / Check formatting (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
### Changes
- Make dvc named pipe proxy cross-platform (Unix implementation via
`tokio::net::unix::UnixStream`)
- Removed unsafe code for Windows implementation, switched to
`tokio::net::windows::named_pipe`
### Testing
This feature can be used in the [same
way](https://github.com/Devolutions/IronRDP/pull/791 ) as on Windows,
however instead of GUI test app there is new basic
[CLI](https://github.com/Devolutions/now-proto/pull/31 ) app
2025-08-04 17:56:02 +03:00
Benoît Cortier
4df5dd8762
refactor: follow up to PR #906 ( #908 )
2025-08-04 11:05:38 +00:00
Benoît CORTIER
5d8a487001
fix: rename option no_audio_playback into enable_audio_playback
2025-08-04 06:46:10 -04:00
Benoît CORTIER
218fed03c7
fix: rename option no_server_pointer into enable_server_pointer
2025-08-04 06:46:10 -04:00
Steffen Butzer
0f9e8b1017
fix(client): fix special key modifiers on linux ( #906 )
...
CI / Check formatting (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
CI / Success (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
This makes CTRL+C, CTRL+V, etc. work.
2025-08-04 04:11:21 +00:00
Alex Yusiuk
39566bff58
chore: add clippy cfg_not_test extra-pedantic lint ( #903 )
CI / Check formatting (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
CI / Success (push) Has been cancelled
2025-07-31 13:10:19 -04:00
Benoît Cortier
424e46d225
chore(release): prepare for iron-remote-desktop-rdp v0.5.2 ( #901 )
CI / Success (push) Blocked by required conditions
CI / Check typos (push) Waiting to run
CI / Check formatting (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
2025-07-31 08:23:29 -04:00
Gabriel Bauman
100765f98f
feat(web): add outbound WebSocket message size limit extension ( #889 )
...
Add support for chunking outbound WebSocket messages when they exceed a
configurable size limit. This helps avoid browser- or proxy-specific
WebSocket message size restrictions while maintaining wire
compatibility.
Changes:
- Add outbound_message_size_limit field to SessionBuilderInner
- Implement extension handler with safe f64->u32 casting and validation
- Update writer_task to chunk large messages when limit is set
- Add outboundMessageSizeLimit() helper function to JavaScript API
---------
Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com>
2025-07-31 11:18:36 +00:00
Alex Yusiuk
32b0e40eca
refactor: add unused_trait_names clippy extra-pedantic lint ( #900 )
2025-07-31 03:57:09 -04:00
dependabot[bot]
5d513dcf09
build(deps): bump tokio from 1.46.1 to 1.47.0 ( #893 )
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Check formatting (push) Waiting to run
CI / Success (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Checks [linux] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
2025-07-30 10:08:47 +00:00
dependabot[bot]
07b1e13d69
build(deps): bump criterion from 0.6.0 to 0.7.0 ( #892 )
2025-07-30 10:08:32 +00:00
dependabot[bot]
3ef5cf0c20
build(deps): bump the patch group across 1 directory with 2 updates ( #899 )
2025-07-30 05:51:31 -04:00
Alex Yusiuk
9a9ab63e1c
refactor: add non_zero_suggestions clippy extra-pedantic lint ( #895 )
2025-07-30 09:11:53 +00:00
Alex Yusiuk
00f2f1b067
refactor: add renamed_function_params clippy extra-pedantic lint ( #898 )
2025-07-30 08:56:01 +00:00
Alex Yusiuk
8634ab05bc
ci(xtask): pin nightly version ( #897 )
2025-07-30 04:40:38 -04:00
Alex Yusiuk
ae052ed835
feat(pdu): improve ExtendedClientOptionalInfoBuilder API ( #891 )
CI / Check formatting (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Success (push) Has been cancelled
2025-07-27 22:51:25 -04:00
Alex Yusiuk
f30bb99746
refactor: remove unneeded pub(crate)s ( #890 )
2025-07-27 22:49:26 -04:00
Marc-Andre Lureau
aafd45229b
fix(server): keep looping on compress_stream2() > 0 ( #888 )
...
CI / Check formatting (push) Has been cancelled
CI / Check typos (push) Has been cancelled
Release crates / Open release PR (push) Has been cancelled
Release crates / Release crates (push) Has been cancelled
CI / Checks [linux] (push) Has been cancelled
CI / Checks [macos] (push) Has been cancelled
Coverage / Coverage Report (push) Has been cancelled
CI / Checks [windows] (push) Has been cancelled
CI / Fuzzing (push) Has been cancelled
CI / Web Client (push) Has been cancelled
CI / FFI (push) Has been cancelled
CI / Success (push) Has been cancelled
Fixes: 87df67fdc7 ("feat: add QOIZ image codec")
---------
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com>
Changelog: ignore
2025-07-25 17:11:17 +00:00
Alex Yusiuk
721c680f9b
chore: add rustc "Correctness" lints ( #886 )
2025-07-25 12:51:30 -04:00
Benoît Cortier
8c574f254e
style(web): extern crate getrandom2 as _ ( #884 )
...
CI / Check formatting (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
CI / Success (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
Just for consistency.
2025-07-24 10:54:37 +00:00
Marc-André Lureau
87df67fdc7
feat: add QOIZ image codec
...
Add a new QOIZ codec (UUID 229cc6dc-a860-4b52-b4d8-053a22b3892b) for
SetSurface command. The PDU data contains the same data as the QOI
codec, with zstd compression.
Some benchmarks showing interesting results (using ironrdp/perfenc)
QOI: 10s user CPU, 96.20% compression
QOIZ: 11s user CPU, 99.76% compression
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:53:10 -04:00
Marc-André Lureau
613fd51f26
feat: add QOI image codec
...
The Quite OK Image format ([1]) losslessly compresses images to a
similar size of PNG, while offering 20x-50x faster encoding and 3x-4x
faster decoding.
Add a new QOI codec (UUID 4dae9af8-b399-4df6-b43a-662fd9c0f5d6) for
SetSurface command. The PDU data contains the QOI header (14 bytes) +
data "chunks" and the end marker (8 bytes).
Some benchmarks showing interesting results (using ironrdp/perfenc)
Bitmap: 74s user CPU, 92.5% compression
RemoteFx (lossy): 201s user CPU, 96.72% compression
QOI: 10s user CPU, 96.20% compression
Note: the "qoicoubeh" crate is my own fork of "qoi-rust" project. The
plan is to switch back to it as soon as the maintainer resume its
activites (https://github.com/aldanor/qoi-rust/issues/14 ).
[1]: https://qoiformat.org/
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:53:10 -04:00
Marc-André Lureau
d3aaa43c23
feat(server)!: add server_codecs_capabilities()
...
Teach the server to support customizable codecs set. Use the same
logic/parsing as the client codecs configuration.
Replace "with_remote_fx" with "codecs".
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:53:10 -04:00
Marc-André Lureau
727c9b7710
refactor(session): generalize apply_rgb24()
...
Add an optional "flip" argument for inverting bitmaps.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:53:10 -04:00
Marc-André Lureau
fc604a567b
chore(bench): fix could not find time in tokio
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:53:10 -04:00
Marc-André Lureau
03cac54ada
build(deps): bump der-parser to 10.0
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
de0877188c
build(deps): bump rand to 0.9
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
8d09e327a1
build(deps): bump getrandom to 0.3
...
We still need to enable "js" feature for transitive dependencies.
Also, we need to explicitely enable the wasm backend via rustflags.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
971ad922a5
build(deps): bump nix to 0.30
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
12edc04c0c
build(deps): bump criterion to 0.6
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
b4fb0aa0c7
build(deps): bump thiserror to 2.0
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
cb99c82c7d
refactor(graphics): hand-implement Error trait
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
a47a12ce94
refactor(cliprdr): hand-implement Error trait
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
4a40883f2b
refactor(cliprdr-native): hand-implement Error trait
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
83ad04dd56
refactor(cliprdr-format): hand-implement Error trait
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
fc8f8ee279
build(deps): bump rstest to 0.25
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Marc-André Lureau
eeac1fee1f
build(deps): bump cpal to 0.16
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-07-24 06:34:50 -04:00
Benoît Cortier
555894ecc8
chore(release): prepare iron-remote-desktop-rdp v0.5.1 ( #883 )
CI / Check formatting (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
CI / Success (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
2025-07-24 04:23:05 +00:00
Gabriel Bauman
7a0fcce203
feat(web): add enableCredssp extension ( #878 )
...
Allows users to disable CredSSP/NLA, which is otherwise enabled by default.
This is necessary to connect to target hosts bound to AzureAD/Entra domains.
In this case, user authentication is handled in the interactive session.
2025-07-23 23:31:11 -04:00
Alex Yusiuk
e7393f50d0
chore: add disallowed_script_idents clippy extra-pedantic lint ( #881 )
CI / Checks [linux] (push) Blocked by required conditions
CI / Check formatting (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Checks [macos] (push) Blocked by required conditions
CI / Checks [windows] (push) Blocked by required conditions
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
CI / Success (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
2025-07-23 11:29:27 -04:00
Alex Yusiuk
f96b1b2ce8
refactor: add allow_attributes clippy to "Extra-pedantic clippy" section ( #880 )
CI / Checks [windows] (push) Blocked by required conditions
CI / Check formatting (push) Waiting to run
CI / Check typos (push) Waiting to run
CI / Checks [linux] (push) Blocked by required conditions
CI / Checks [macos] (push) Blocked by required conditions
CI / FFI (push) Blocked by required conditions
Release crates / Open release PR (push) Waiting to run
Release crates / Release crates (push) Waiting to run
CI / Fuzzing (push) Blocked by required conditions
CI / Web Client (push) Blocked by required conditions
CI / Success (push) Blocked by required conditions
Coverage / Coverage Report (push) Waiting to run
2025-07-23 08:55:40 +00:00