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>
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>
This patch could be split if we introduce a legacy module for the
transition of the few PDUs.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Replace the bitflag-based config API with a boolean-based one:
- `enable_tls`: set the PROTOCOL_SSL flag
- `enable_credssp`: set the PROTOCOL_HYBRID and PROTOCOL_HYBRID_EX flags
The `--security_protocol` argument was removed from the native client
CLI, and instead it’s possible to disable specific protocols with
`--no-tls` and `--no-credssp`. By default, both protocols are
enabled for maximum compatibility with most RDP servers. We may change
the defaults in the future.
Adds support for native cursors for `IronRDP-web`.
- Uses CSS `cursor` property to set the custom cursor (which we encode as Base64 data URL
- Software rendering is still in place and could be enabled via the config flag
- "Inverted colors" are implemented for native cursors as a "checkerboard pattern" (As in FreeRDP)
- Native cursors have size **limitation** - _Any remote cursor bigger than 32x32 will be scaled down._ This is due to browser limitations described [here](https://chromestatus.com/feature/5825971391299584) and [here](https://bugs.chromium.org/p/chromium/issues/detail?id=880863)
Closes#250
Adds handling for `DR_CORE_SERVER_CLIENTID_CONFIRM` and `DR_CORE_DEVICELIST_ANNOUNCE`/`DR_CORE_DEVICELIST_ANNOUNCE_REQ`.
The next steps in the rdpdr initialization sequence.
FastPath pointer messages handling:
- Add pointer messages handling in `ironrdp-session`, `ironrdp-client` and `ironrdp-web`
- Supported bpp's: 1, 16, 24, 32 (8bpp is not supported yet, palette messages handling
should be added first)
- Alpha blending is supported, and done via software-based compositing
- Inverted cursor pixels are supported (FreeRDP do not support them correctly)
- Large pointers are supported (FreeRDP crashes on them)
- Cursor caching is supported
- Add new CLI argument to enable/disable pointer rendering (--no-server-pointer)
- `session`/`client` refactoring to facilitate multiple types of session output updates besides
framebuffer update (e.g. request to hide/show system pointer on client)
- Minor changes in web client typescript code to hide/show cursor on canvas
Closes#108
Base all library errors on `ironrdp_error::Error`, a lightweight and
`no_std`-compatible generic `Error` type.
A custom consumer-defined type (such as `PduErrorKind`) for
domain-specific details is wrapped by this type.