-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TDP Shared Directory Announce and Acknowledge #12405
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…and cliprdr::Client's have the vchan::Client as a field.
…o trigger it by right-clicking, however it isn't working. One reason is that the vchannel PDU header isn't being added (see rdpdr::encode_message for how that's added to other messages). Noticing that made me notice that there is another cliprdr function for breaking outgoing messages into chunks that should be refactored into vchan to do that work + add the necessary vchan headers. This is a checkpoint commit while I go attend to that.
…lient parses the DeviceCreateRequest that's immediately sent back
…ugh in most cases, no need to neurotically add every bit of the documentation text to the code itself
zmb3
approved these changes
Jun 1, 2022
zmb3
approved these changes
Jun 7, 2022
LKozlowski
approved these changes
Jun 14, 2022
r0mant
approved these changes
Jun 14, 2022
ibeckermayer
pushed a commit
that referenced
this pull request
Jun 17, 2022
Co-authored-by: Zac Bergquist <zmb3@users.noreply.github.com>
This was referenced Jun 17, 2022
v10 backport #13628 |
ibeckermayer
pushed a commit
that referenced
this pull request
Jun 21, 2022
ibeckermayer
pushed a commit
that referenced
this pull request
Jun 30, 2022
Co-authored-by: Zac Bergquist <zmb3@users.noreply.github.com>
ibeckermayer
pushed a commit
that referenced
this pull request
Jul 11, 2022
* Restructure `rdpdr.rs` into a multi file module (#12530) * Adds go build flags for directory sharing and some basic scaffolding for handling them (#12531) * TDP Shared Directory Announce and Acknowledge (#12405) * RDP <--> TDP Translation Architecture (#12615) * RBAC for directory sharing (#12684)
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR creates a feature branch
directory_sharing
and merges in theShared Directory Announce
andShared Directory Acknowledge
functionality.Shared Directory Announce
is handled by a Rust function called from Go namedhandle_tdp_sd_announce
.Shared Directory Acknowledge
is sent via a Go function called from Rust namedtdp_sd_acknowledge
.I've also broken what was formerly
rdpdr.rs
down into a multi file module, with the main chunk being inrdpdr/mod.rs
. This preventsrdpdr.rs
from becoming cluttered with large bitflags and constants structures. Right now its primarily struct representations of RDP messages and the client itself. Note that many of the RDP messages are as of now unused.There is a
webapps
branch namedisaiah/stub-directory-sharing
which this can be tested against. It gives you a big crazy looking "Share Fake Directory" button on the far right of the top bar:When you click that, expect the session to fail and you should see in the logs something like
and the browser logs should log an object
This is indicative that the tdp
Shared Directory Announce
was translated into an RDPClientDeviceListAnnounceRequest
(handle_tdp_sd_announce
), then the server's RDPServerDeviceAnnounceResponse
was translated into a TDPShared Directory Acknowledge
(at which point the RDP server sent anIRP_MJ_CREATE
request which is not yet supported, causing the session to fail).Apologies for this relatively large PR. A big chunk of it is RDP messages that we will need, but don't use in the code yet, and are straightforward implementations from the RDP spec. This is a feature that can really only show anything that works once its implemented end to end. My plan from here is to create a PR for each
MajorFunction
, starting withIRP_MJ_CREATE
, and implementing the logic as described in the RFD (open to feedback on this approach).