Commit graph

29 commits

Author SHA1 Message Date
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
Alex Yusiuk
f7cbb08e2e
feat(web): add RdpFile helper to parse RDP configs (#877)
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-22 20:33:37 -04:00
Benoît Cortier
f287e168a8
refactor: rework extension API for iron-remote-desktop (#762) 2025-04-21 09:33:12 -04:00
Alex Yusiuk
ec1832bba0
feat(ironrdp-web): iron-remote-desktop helper crate for remote desktop WASM modules (#755) 2025-04-18 07:30:45 -04:00
Alex Yusiuk
0ff1ed8de5
refactor(web-client): refactor iron-remote-gui into iron-remote-desktop (#722) 2025-04-11 08:28:27 -04:00
dependabot[bot]
e70e7e2c5f
build(deps): bump smallvec from 1.14.0 to 1.15.0 (#739) 2025-04-08 08:38:53 -04: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
Marc-André Lureau
3c503cb2d1 chore: change "default" feature to only enable "core" and "pdu"
Reorganize a bit the dev-dependencies for screenshot/server examples.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-10-29 21:48:11 +09:00
irvingouj @ Devolutions
c04bc2d29c
feat(web): allow dynamic resize for web (#550) 2024-09-19 19:08:45 +00: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
c97b1f90bc chore(web): bump softbuffer to 0.4.5
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-08-11 22:26:02 -04:00
dependabot[bot]
e58aa7111d
build(deps): bump gloo-net from 0.5.0 to 0.6.0 (#520) 2024-08-06 00:14:21 -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
dependabot[bot]
f81b909475
build(deps): bump base64 from 0.21.7 to 0.22.0 (#470)
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.7 to 0.22.0.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.7...v0.22.0)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 04:08:47 -04:00
Benoît Cortier
0cd612bd43
refactor(web): use gloo-net provided AsyncRead/Write impl (#370) 2024-02-13 16:06:11 +02:00
dependabot[bot]
0f6a7068e1
build(deps): bump gloo-net from 0.4.0 to 0.5.0 (#361)
Bumps [gloo-net](https://github.com/rustwasm/gloo) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/rustwasm/gloo/releases)
- [Changelog](https://github.com/rustwasm/gloo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/gloo/compare/0.4.0...0.5.0)

---
updated-dependencies:
- dependency-name: gloo-net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-29 22:52:00 -05:00
dependabot[bot]
151a7e9839
build(deps): bump smallvec from 1.12.0 to 1.13.1 (#356)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.12.0 to 1.13.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.12.0...v1.13.1)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 23:50:23 -05:00
dependabot[bot]
ed31ead9d3
build(deps): bump url from 2.4.1 to 2.5.0 (#309)
Bumps [url](https://github.com/servo/rust-url) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.4.1...v2.5.0)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-27 23:49:29 +00:00
Vladyslav Nikonov
5b210f2fc7
feat(web): support for hardware cursor (#290)
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
2023-11-21 17:20:03 +00:00
Benoît Cortier
8fc213e699
refactor(credssp): follow up to #260 (#287) 2023-11-17 09:50:03 -05:00
irvingouj@Devolutions
5530550ef3
feat(credssp): support for Kerberos (#260)
Issue: ARC-139
Co-authored-by: Benoît Cortier <bcortier@proton.me>
2023-11-17 04:12:13 +00:00
Vladyslav Nikonov
2b501496d9
feat: clipboard support for web client (#259) 2023-11-08 13:57:21 +02:00
Benoît CORTIER
b6407a688a build: update dependencies 2023-10-05 10:58:16 -04:00
Benoît Cortier
9d33cad303
feat(web): use softbuffer to draw into the canvas (#191)
Instead of copying and sending image buffers to JavaScript, the WASM
module now draws into the canvas by itself. This removes some overhead
associated with the previous approach and open the door for further
optimizations.

In order to achieve good performance, the newest API of
`softbuffer@0.3.0` is used: the "owned buffer" that can be written into
by us with direct access and `present_with_damage` to apply partial
updates. The presentation itself is currently not yet "no-copy" in
the case of the web backend because the current API of `softbuffer` is
expecting a pixel buffer in the BGRX format while the underlying canvas
can only takes RGBA pixels. There is an open issue for this.

There was a bug with the `present_with_damage` implementation for the
web backend. I fixed the issue and opened a PR to upstream the patch.
The cargo dependency patch will be removed once the fix is published
on crates.io.

Issue: ARC-164
2023-09-09 00:16:27 +03:00
Benoît CORTIER
2938db416b feat: API for custom static virtual channels
Issue: ARC-147
Co-authored-by: Isaiah Becker-Mayer <isaiah@goteleport.com>
2023-08-26 04:37:13 -04:00
Benoît Cortier
dbbd168b97
fix(web): detect errors when opening WebSocket (#173)
Ideally, when the WebSocket can’t be opened, the call to
`WebSocket::open` should fail with details on why is that (e.g., the
proxy hostname could not be resolved, proxy service is not running),
but errors are neved bubbled up in practice, so instead we poll the
WebSocket state until we know its connected (i.e., the WebSocket
handshake is a success and user data can be exchanged).
2023-08-11 17:04:08 -05:00
Benoît Cortier
2cb0b476b5
feat: enable additional sspi features (KDC) (#154)
* feat: enable additional sspi features (KDC)

- Actually implement sspi-rs’s `NetworkClient` trait in `ironrdp-web`
- Enable the `dns_resolver` feature for `ironrdp-client` (the native client)

* Updated code to use new dev version of sspi-rs

* Updated sspi-rs to 0.9.0

---------

Co-authored-by: Vladyslav Nikonov <mail@pacmancoder.xyz>
2023-07-24 10:42:41 -04:00
Benoît CORTIER
60bc72f873 test: organize integration tests into single crate
Put all integration tests in a single crate, and organized in modules.

This is similar to what was done in `cargo` repository:
https://github.com/rust-lang/cargo/pull/5022#issuecomment-364691154

```
$ rustup show
stable-x86_64-unknown-linux-gnu (default)
rustc 1.69.0 (84c898d65 2023-04-16)
```

Run on a recent high-end laptop:
12th Gen Intel(R) Core(TM) i9-12900HK

Original (multiple integration binaries):

- `cargo clean && cargo test --no-run`: 62.893s
- `cargo clean && cargo build --lib`: 54.959s
- `cargo clean && cargo build --bins`: 55.933s
- `cargo test --no-run` (after `cargo build`): 14.472s
- `cargo test` (after `cargo test --no-run`): 1.786s
- `du -hs target/`: 4.2G

After (ironrdp-testsuite):

- `cargo clean && cargo test --no-run`: 41.157s (crates with no tests are ignored)
- `cargo clean && cargo build --lib`: 53.983s
- `cargo clean && cargo build --bins`: 54.482s
- `cargo test --no-run` (after `cargo build`): 12.915s
- `cargo test` (after `cargo test --no-run`): 0.240s
- `du -hs target/`: 3.4G

Absolute diff:
- `cargo clean && cargo test --no-run`: -21.736s
- `cargo clean && cargo build --lib`: -0.976s
- `cargo clean && cargo build --bins`: -1.451s
- `cargo test --no-run` (after `cargo build`): -1.557s
- `cargo test` (after `cargo test --no-run`): -1.546s
- `du -hs target/`: -0.8G

Relative diff (%):
- `cargo clean && cargo test --no-run`: -34.5%
- `cargo clean && cargo build --lib`: -1.77%
- `cargo clean && cargo build --bins`: -2.59%
- `cargo test --no-run` (after `cargo build`): -10.7%
- `cargo test` (after `cargo test --no-run`): -86.5%
- `du -hs target/`: -19.0%
2023-05-11 19:41:11 -04:00
Benoît Cortier
55d11a5000
refactor: clarify project architecture (#123)
> 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
2023-05-09 21:00:07 +00:00
Renamed from crates/web/Cargo.toml (Browse further)