Commit graph

57 commits

Author SHA1 Message Date
Alex Yusiuk
00f2f1b067
refactor: add renamed_function_params clippy extra-pedantic lint (#898) 2025-07-30 08:56:01 +00:00
Alex Yusiuk
f30bb99746
refactor: remove unneeded pub(crate)s (#890) 2025-07-27 22:49:26 -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
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-Andre Lureau
4e581e0f47
feat(cliprdr)!: add on_ready() callback (#729)
Give a hint to the backend when the channel is actually connected &
ready to process messages.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-30 18:39:10 -04: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
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
e6d6e9d8a7
chore(release): prepare for publishing (#628) 2025-01-28 23:24:35 +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
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
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
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
logeable
7916997b0b
style: fix typos (#546) 2024-09-03 10:36:47 +00: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
23bc008d65 refactor(core): move {Decode/Encode}Error
& document the public API.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
1ef9dd3f37 refactor(pdu): rename PduEncode->Encode PduDecode->Decode
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
b4c4b7ef58 chore(pdu): introduce DecodeResult
Introduce a new error type to split encoding/decoding errors as well as
helper traits and functions to ease porting and conventions.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
00d4750e4b refactor(pdu): rename InvalidMessage->InvalidField
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
76b0518afa refactor(core): move IntoOwned
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
7419467ad3 refactor(core): move cursor.rs
Add documentation.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
4154ceea05 refactor(core): move impl_as_any macros
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-30 00:05:16 -04:00
Marc-André Lureau
7307148cb8 chore: use workspace lints
Among other things, this allows tools and LSP to pick up our settings.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-07-24 04:35:32 -04:00
Marc-André Lureau
adf2797ef7 fix: unnecessary qualification
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-07-24 04:35:32 -04:00
Marc-André Lureau
98ffaccae2 feat(cliprdr): add FormatDataResponse::into_data()
Add a way to take inner data.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-04-05 13:05:04 -04:00
Marc-André Lureau
e68a875483 fix(cliprdr): fix channel initialization in server mode
The channel is considered initialized once the initial format-list is
received.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-04-05 13:05:04 -04:00
Isaiah Becker-Mayer
1e53669b11
feat: add support for dydynvc (#419) 2024-03-29 04:18:12 -04:00
Marc-André Lureau
a45deebc98 refactor(pdu): convert RDP module to PduEncode/Decode
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-03-21 02:43:50 +09:00
Marc-André Lureau
7c432fc553 feat(cliprdr): add server support
The channel role is quite symmetrical, only initialization sequence
differs.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-01-15 13:21:51 +09:00
Marc-André Lureau
978096f8c8 Mark all static channels as SvcClient
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-01-15 13:21:51 +09:00
Marc-André Lureau
090440a45d refactor: rename StaticVirtualChannelProcessor->SvcProcessor
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-01-15 13:21:51 +09:00
Benoît Cortier
4506e1b185
build: bump rust toolchain to 1.74.0 (#322) 2023-12-05 19:55:51 -05:00
Isaiah Becker-Mayer
6588f7cdc7
refactor: function! macro for error context (#317)
Deletes any now-superfluous `const NAME: &'static str = "name";` definitions.

This gives a path to the function that is being called, which is useful
for debugging errors. It replaces the necessity of implementing
`const NAME: &'static str = "name";` in every function that wants to
use these macros (or coming up with a custom context).
2023-12-05 18:44:17 +00:00
Isaiah Becker-Mayer
6aa3f3e63b
feat(rdpdr): SetInformation* handling (#312)
- Extend ReadCursor with methods to read and try reading i64 values in both little and big endian formats.
- Update RdpdrPdu to handle ClientDriveSetInformationResponse, reflecting the addition of ServerDriveSetInformationRequest handling in the RDPDR (Remote Desktop Protocol: Device Redirection) protocol.
- Implement decoding and encoding of various FileInformationClass types such as FileEndOfFileInformation, FileDispositionInformation, FileRenameInformation, and FileAllocationInformation.
- Refactor the existing code to improve the handling of different FileInformationClassLevels and FileSystemInformationClassLevels.
- Add handling for ServerDriveNotifyChangeDirectoryRequest in ServerDriveIoRequest, supporting the specific case when MinorFunction is set to IRP_MN_NOTIFY_CHANGE_DIRECTORY.
2023-11-29 17:38:01 +00:00
Benoît CORTIER
d2ddf50a40 perf: enable inlining for a few functions
These are very small functions which are used multiple times in the same
loop inside cliprdr web backend.
2023-11-20 09:39:36 -05:00
Benoît CORTIER
c1ac51904f refactor(cliprdr): fix typos 2023-11-20 09:39:36 -05:00
Benoît Cortier
76e3a35df1
style: normalize casing of error messages (#274)
Error messages should start by a lowercase so it’s easier to compose
with other error messages and the final casing is left up to the "error
reporter" down the line. This is the convention adopted by the Rust
project:

- https://rust-lang.github.io/api-guidelines/interoperability.html
- https://doc.rust-lang.org/stable/std/error/trait.Error.html
2023-11-13 17:06:48 +02:00
Vladyslav Nikonov
2b501496d9
feat: clipboard support for web client (#259) 2023-11-08 13:57:21 +02:00
Benoît CORTIER
39ecfb1368 style: run cargo +nightly fmt 2023-10-30 18:24:00 -04:00
Benoît Cortier
9e287b6cf7
fix(cliprdr): ensure string padding is zeroed (#239) 2023-10-30 16:38:48 +02:00
Isaiah Becker-Mayer
2075833ff2
feat(rdpdr): drive announce (#234)
Initial work for drive redirection.

Co-authored-by: Benoît CORTIER <bcortier@proton.me>
2023-10-25 04:04:28 +00:00
Isaiah Becker-Mayer
40e5581de3
feat: adds AsAny bound on CliprdrBackend (#219) 2023-10-16 19:40:20 +00:00
Benoît Cortier
3d98cd1d94
refactor: enable elided_lifetimes_in_paths lint (#203)
Hiding the lifetimes is making the code less obvious.

That’s not a problem for types that I know about intimately such as
`ReadCursor` or `WriteCursor`, but I actually found myself surprised
more than once when reading code I didn’t authored, discovering  later
there was in fact a hidden lifetime parameter.
I expect this problem to be worse for someone not familiar with
our codebase.

I understand this lint is "allow" by default because in some cases
it leads to writing unergonomic ugly code when a type has many generic
lifetimes parameters:

```
TyCtxt<'_, '_, '_>
```

However we _never_ work with more than one generic lifetime parameter in
IronRDP codebase, so it seems to me that the tradeoff towards clarity is
worth it, in our case.
2023-10-04 09:14:36 -07:00