Skip to content

Conversation

irvingoujAtDevolution
Copy link
Contributor

@irvingoujAtDevolution irvingoujAtDevolution commented Oct 7, 2025

Add RDCleanPath support for Devolutions.IronRDP .NET package

irvingoujAtDevolution and others added 4 commits October 7, 2025 16:07
- Add RDCleanPath FFI bindings
- Implement WebSocket stream for gateway connections
- Add GatewayConnection API with CredSSP hostname extraction
- Support both direct and gateway connection modes
Add KerberosConfig FFI bindings and HTTP/HTTPS network protocol
handling for KDC proxy authentication via Devolutions Gateway.

- Expose KerberosConfig::new() in FFI layer
- Add GenerateKdcToken() method to TokenGenerator
- Update GatewayConnection to accept KDC proxy parameters
- Implement HTTP/HTTPS request handling in ResolveGenerator
- Auto-generate client hostname for Kerberos authentication

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copy link

github-actions bot commented Oct 7, 2025

Coverage Report 🤖 ⚙️

Past:
Total lines: 26124
Covered lines: 15317 (58.63%)

New:
Total lines: 26124
Covered lines: 15313 (58.62%)

Diff: -0.02%

[this comment will be updated automatically]

@CBenoit CBenoit requested a review from Copilot October 8, 2025 08:21
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR integrates Devolutions.IronRDP with Gateway by adding RDCleanPath protocol support and KDC proxy capabilities for .NET. The implementation enables RDP connections through Devolutions Gateway using WebSocket transport with optional Kerberos authentication via KDC proxy.

  • Adds RDCleanPath protocol FFI bindings for gateway communication
  • Implements KDC proxy support for Kerberos authentication through the gateway
  • Provides WebSocket transport layer and gateway connection methods for .NET

Reviewed Changes

Copilot reviewed 14 out of 36 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
ffi/src/rdcleanpath.rs Adds FFI bindings for RDCleanPath protocol operations
ffi/src/lib.rs Registers new rdcleanpath module
ffi/src/error.rs Adds error handling for RDCleanPath and DER operations
ffi/src/credssp/mod.rs Extends KerberosConfig with KDC proxy support
ffi/dotnet/Devolutions.IronRdp/src/WebsocketStream.cs Implements WebSocket stream adapter for network transport
ffi/dotnet/Devolutions.IronRdp/src/GatewayConnection.cs Provides gateway connection methods using RDCleanPath
ffi/dotnet/Devolutions.IronRdp/src/Framed.cs Adds custom PDU hint interface for flexible frame detection
ffi/dotnet/Devolutions.IronRdp/src/Connection.cs Updates connection logic to support HTTP/HTTPS requests for KDC proxy
ffi/dotnet/Devolutions.IronRdp.ConnectExample/Program.cs Updates example to remove unused parameter
ffi/dotnet/Devolutions.IronRdp.AvaloniaExample/TokenGenerator.cs Adds JWT token generation client for gateway authentication
ffi/dotnet/Devolutions.IronRdp.AvaloniaExample/MainWindow.axaml.cs Integrates gateway connection support in example application
ffi/dotnet/Devolutions.IronRdp.ConnectExample/Devolutions.IronRdp.ConnectExample.csproj Updates ImageSharp package version
ffi/dotnet/Devolutions.IronRdp.AvaloniaExample/Devolutions.IronRdp.AvaloniaExample.csproj Updates Avalonia package versions
ffi/Cargo.toml Adds ironrdp-rdcleanpath dependency
Comments suppressed due to low confidence (1)

ffi/dotnet/Devolutions.IronRdp/src/Connection.cs:129

  • [nitpick] Use conventional null comparison style 'decoded == null' instead of Yoda condition 'null == decoded' for better readability and consistency with C# conventions.
            if (null == decoded)

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@CBenoit
Copy link
Member

CBenoit commented Oct 8, 2025

Please, open a separate PR for the KDC proxy part.

irvingoujAtDevolution and others added 3 commits October 8, 2025 11:38
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@irvingoujAtDevolution irvingoujAtDevolution changed the title feat(ffi): intergrate Devolutions.IronRDP with Gateway feat(ffi): integrate Devolutions.IronRDP with Gateway Oct 8, 2025
@irvingoujAtDevolution irvingoujAtDevolution changed the title feat(ffi): integrate Devolutions.IronRDP with Gateway feat(ffi): integrate Devolutions.IronRDP with RDCleanPath Oct 8, 2025
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 17 out of 39 changed files in this pull request and generated 1 comment.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

if let Err(err) = self.sender.send(message) {
error!("Failed to send clipboard message: {:?}", err);
if let Err(error) = self.sender.send(message) {
error!(?error, "Failed to send clipboard message");
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just fixing styles along the way, let me know if you mind

}

pub fn with_dynamic_channel_display_control(&mut self) -> Result<(), Box<IronRdpError>> {
self.with_dvc(DisplayControlClient::new(|c| {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just fixing styles along the way, let me know if you mind

@irvingoujAtDevolution
Copy link
Contributor Author

Ready for review @CBenoit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants