Commit graph

192 commits

Author SHA1 Message Date
Alex Yusiuk
32b0e40eca
refactor: add unused_trait_names clippy extra-pedantic lint (#900) 2025-07-31 03:57:09 -04:00
Alex Yusiuk
ae052ed835
feat(pdu): improve ExtendedClientOptionalInfoBuilder API (#891)
Some checks failed
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
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
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
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
Alex Yusiuk
f96b1b2ce8
refactor: add allow_attributes clippy to "Extra-pedantic clippy" section (#880)
Some checks are pending
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
Alex Yusiuk
aa82dfb1fd
refactor: add more clippy lints to "Compile-time / optimization" section (#875)
Some checks are pending
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-21 12:28:33 -04:00
Benoît Cortier
48e02441d2
chore: update Rust toolchain to 1.88.0 (#852)
MSRV is also bumped to 1.84.
2025-07-03 07:38:28 +03:00
devolutionsbot
aa6777b56a
chore(release): prepare for publishing (#748) 2025-05-27 15:21:56 +00:00
dependabot[bot]
87ed315bc2
build(deps): bump bitflags from 2.9.0 to 2.9.1 in the patch group across 1 directory (#792) 2025-05-20 01:37:48 -04:00
Marc-André Lureau
783702962a feat(session): make client_codecs_capabilities() configurable
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-05-09 12:28:46 +02:00
Marc-André Lureau
ce7379be03 refactor(pdu): simplify Codec::decode
No need to special-case codec_properties_len == 0, defer to the decoding
of the properties instead.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-05-09 09:11:45 +02:00
Marc-André Lureau
f03ee393a3 refactor!: add supported codecs in BitmapConfig
"session" has a fixed set of supported codecs with associated IDs.

"connector" must expose the set of codecs during capabilities exchange.
It currently uses hard-codes codec IDs in different places.

Move the BitmapCodecs set to ironrdp-pdu. Shared code will be used by
the server, so this is a suitable common place.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-05-09 09:11:45 +02:00
Benoît Cortier
9f4e6d410b
fix(pdu): fix possible out of bound indexing in RFX module (#724)
An index bound check was missing in the RFX module. Found by fuzzer.
2025-03-27 12:00:20 -04:00
Benoît Cortier
b72e0857bf
refactor: move padding module to ironrdp-core (#716) 2025-03-24 22:52:46 +02:00
Benoît CORTIER
97f4f25813 style: run cargo +nightly fmt 2025-03-13 11:03:10 +01:00
Benoît CORTIER
19d6b1ea83 refactor: fix new clippy warnings 2025-03-13 11:03:10 +01:00
devolutionsbot
b19008c029
chore(release): prepare for publishing (#699) 2025-03-13 09:06:30 +00:00
devolutionsbot
f2c8482ba6
build: bump ironrdp-pdu (#698) 2025-03-12 20:59:54 +00:00
Marc-André Lureau
7cb1ac99d1 refactor(pdu)!: remove RfxChannelWidth and RfxChannelHeight structs
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-12 21:34:47 +01:00
Marc-André Lureau
097cdb66f9 fix(pdu): TS_RFX_CHANNELT width/height SHOULD be within range
According to the specification, the value does not need to be in the range:
4060f07e-9d73-454d-841e-131a93aca675

(the ironrdp-server can send larger values)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-12 21:34:47 +01:00
devolutionsbot
92dd927ec2
chore(release): prepare for publishing (#696) 2025-03-12 16:40:47 +00:00
Benoît Cortier
c21fa44fd6
build: do not use workspace dependencies (#695)
As written in the workspace Cargo.toml:

> Note that for better cross-tooling interactions, do not use workspace
dependencies for anything that is not "workspace internal" (e.g.: mostly
dev-dependencies). E.g.: release-plz can’t detect that a dependency has
been
updated in a way warranting a version bump in the dependant if no commit
is
touching a file associated to the crate. It is technically okay to use
that
for "private" (i.e.: not used in the public API) dependencies too, but
we
still want to make follow-up releases to stay up to date with the
community,
even for private dependencies.

Expectation is that release-plz will be able to auto-detect when bumping
dependents is necessary.

Closes #689
2025-03-12 09:25:01 -04:00
devolutionsbot
47a77d2b36
chore(release): prepare for publishing (#666) 2025-03-07 12:16:34 +00:00
Marc-Andre Lureau
3b9d558e9c
fix(pdu): fix FastPathHeader minimal size (#687)
The minimal_size() logic didn't properly take into account the overall
PDU size.

This fixes random error/disconnect in client.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-07 09:25:39 +01:00
Marc-André Lureau
7f08a098e2 refactor(pdu): drop legacy trait
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-04 16:08:55 +01:00
Marc-André Lureau
81984f9377 refactor(pdu): move rfx to Encode/Decode traits
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-04 16:08:55 +01:00
Gyusun Yeom
6b4af94071
fix(pdu): make AddressFamily parsing resilient (#672)
Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com>
2025-03-04 13:47:38 +00:00
devolutionsbot
e6d6e9d8a7
chore(release): prepare for publishing (#628) 2025-01-28 23:24:35 +00:00
Przemko Robakowski
dd221bf224
feat: support license caching (#634)
Adds support for license caching by storing the license obtained
from SERVER_UPGRADE_LICENSE message and sending
CLIENT_LICENSE_INFO if a license requested by the server is already
stored in the cache.

Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com>
2025-01-18 14:34:58 +00:00
Sébastien Duquette
dd249909a8
docs: use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) 2025-01-09 10:06:10 -05:00
devolutionsbot
97ef9f0acb
chore(release): prepare for publishing (#611) 2024-12-14 14:32:28 +00:00
Benoît Cortier
0c10367ebc
chore: symlinks to license files in packages (#604)
Add symlinks to the license files in crates that we are publishing on
crates.io.
2024-12-11 08:13:26 -05:00
Benoît Cortier
fc23992dea
chore: prepare release (#585)
Crates to release:

- ironrdp-core -> 0.1.1
- ironrdp-pdu -> 0.1.1
- ironrdp-svc -> 0.1.1
- ironrdp-connector -> 0.2.0
- ironrdp-server -> 0.2.0
- ironrdp -> 0.6.0
2024-11-21 10:14:01 -05:00
Benoît CORTIER
49cba12c8b fix: add a few temporary, hidden re-exports for Teleport
Teleport is generating many errors when using the latest IronRDP crates.
This patch is re-exporting a few items from ironrdp_core so it’s
easier for them to incrementally migrate to the newer versions.
2024-11-21 22:54:57 +09:00
Benoît CORTIER
69eba11325 fix: macro hygiene
Some macros where not hygienic, requiring the user to have specific
items in scope.
2024-11-21 22:54:57 +09:00
Benoît CORTIER
294af1cc5c style: cargo +nightly fmt 2024-11-20 01:28:31 +09:00
Benoît CORTIER
807eb59b07 refactor: enable clippy::std_instead_of_core lint 2024-11-20 01:28:31 +09:00
Benoît CORTIER
d26e64e4c2 refactor: enable clippy::similar_names lint 2024-11-20 01:28:31 +09:00
Marc-André Lureau
5381b24444 docs: use Devolutions logo
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-10-29 19:14:20 +09:00
Marc-André Lureau
c609fab780 docs(pdu): fix invalid rust syntax
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-10-29 19:14:20 +09:00
Marc-André Lureau
bf56a7fc80 docs: use README.md for crates lib.rs doc
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-10-29 19:14:20 +09:00
Marc-André Lureau
4ef36bf5fa docs: add project links to READMEs for consistency
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-10-29 19:14:20 +09:00
Marc-André Lureau
bb1860d153 build: update Rust toolchain to 1.82.0
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-10-25 13:19:58 +09:00
Marc-André Lureau
880d5012e6 fix(pdu): Error occurred after refactor(pdu) #541
Fixes commit 7419467ad3 ("refactor(core): move cursor.rs")

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-09-03 06:48:31 -04:00
Marc-André Lureau
402ffd56c9 refactor(core): move Encode/Decode to core
ironrdp-pdu contains lots of code that we don’t actually need in other crates such as the virtual channels.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
ab5760d47b refactor(pdu): add X224 newtype
This allows to implement external Encode/Decode traits in following change.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
fda9530ef6 refactor(pdu): use a newtype for Option<SystemTime>
This allows to implement the external Encode/Decode traits.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00