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>
- 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.
Note that we can’t really use the --locked option of cargo, because to
run xtask, we need to compile it using cargo, and thus the lock files
are already "refreshed" as far as cargo is concerned. Instead, this new
task will check for modifications to the lock files using git-status
porcelain. The side benefit is that we can check for npm lock files too.
The source for the certificate parsing error was discarded. This
patch is modifying the ServerLicenseError::InvalidX509Certificate
variant so that it is properly bubbled up.
This will help us gather troubleshooting information from our
end users.
Instead of directly depending on the unmaintained rdp-rs to decompress
RLE tiles dynamically, a few snapshots are saved to test against.
The benefit is to remove a lot of outdated dependencies from our
(developement) dependency graph.
Breakage was caused by some bad interaction with a
transitive dependency (proc-macro2).
This is simply updating the Cargo.lock by running `cargo update`.
> Make the root of the workspace a virtual manifest. It might
> be tempting to put the main crate into the root, but that
> pollutes the root with src/, requires passing --workspace to
> every Cargo command, and adds an exception to an otherwise
> consistent structure.
> Don’t succumb to the temptation to strip common prefix
> from folder names. If each crate is named exactly as the
> folder it lives in, navigation and renames become easier.
> Cargo.tomls of reverse dependencies mention both the folder
> and the crate name, it’s useful when they are exactly the
> same.
Source:
https://matklad.github.io/2021/08/22/large-rust-workspaces.html#Smaller-Tips
This adds support for RDP6 32bpp bitmaps.
- RDP6 RLE implementation
- `RDP6_BITMAP_STREAM` pdu parsing
- New CLI arguments to select color depth and color reduction
- Unit tests and fuzzing for implemented functionality
Test bpp32 mode without lossy compression (RGB colorspace)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 <IP_ADDRESS>
```
Test bpp32 mode with lossy compression (YCoCg colorspace, subsampling, color loss)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 --lossy-bitmap-compression <IP_ADDRESS>
```
Issue: ARC-149