mirror of
https://github.com/Devolutions/IronRDP.git
synced 2025-08-04 15:18:17 +00:00
refactor(ironrdp): small refactoring;
This commit is contained in:
parent
61f4419922
commit
3eb1439b66
3 changed files with 22 additions and 29 deletions
|
@ -159,9 +159,12 @@ impl<'a> CredsspSequence<'a> {
|
|||
output: &mut WriteBuf,
|
||||
) -> ConnectorResult<Written> {
|
||||
let (ts_request, next_state) = match result {
|
||||
Ok(ServerState::ReplyNeeded(ts_request)) => (Some(Box::new(ts_request)), CredsspState::Ongoing),
|
||||
Ok(ServerState::ReplyNeeded(ts_request)) => (Some(ts_request), CredsspState::Ongoing),
|
||||
Ok(ServerState::Finished(_id)) => (None, CredsspState::Finished),
|
||||
Err(err) => (err.ts_request, CredsspState::ServerError(err.error)),
|
||||
Err(err) => (
|
||||
err.ts_request.map(|ts_request| *ts_request),
|
||||
CredsspState::ServerError(err.error),
|
||||
),
|
||||
};
|
||||
|
||||
self.state = next_state;
|
||||
|
|
|
@ -13,14 +13,6 @@ use std::io;
|
|||
use bytes::BytesMut;
|
||||
use tokio::io::{AsyncRead, AsyncWrite, ReadHalf, WriteHalf};
|
||||
|
||||
#[cfg(feature = "reqwest")]
|
||||
pub trait AsyncSendableNetworkClient: Send + Sync {
|
||||
fn send<'a>(
|
||||
&'a mut self,
|
||||
network_request: &'a sspi::NetworkRequest,
|
||||
) -> Pin<Box<dyn core::future::Future<Output = ironrdp_connector::ConnectorResult<Vec<u8>>> + Send + 'a>>;
|
||||
}
|
||||
|
||||
pub type TokioFramed<S> = Framed<TokioStream<S>>;
|
||||
|
||||
pub fn split_tokio_framed<S>(framed: TokioFramed<S>) -> (TokioFramed<ReadHalf<S>>, TokioFramed<WriteHalf<S>>)
|
||||
|
|
|
@ -9,7 +9,7 @@ use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
|||
use tokio::net::{TcpStream, UdpSocket};
|
||||
use url::Url;
|
||||
|
||||
use crate::{AsyncNetworkClient, AsyncSendableNetworkClient};
|
||||
use crate::AsyncNetworkClient;
|
||||
|
||||
pub struct ReqwestNetworkClient {
|
||||
client: Option<Client>,
|
||||
|
@ -20,24 +20,7 @@ impl AsyncNetworkClient for ReqwestNetworkClient {
|
|||
&'a mut self,
|
||||
request: &'a sspi::generator::NetworkRequest,
|
||||
) -> Pin<Box<dyn Future<Output = ConnectorResult<Vec<u8>>> + 'a>> {
|
||||
AsyncSendableNetworkClient::send(self, request)
|
||||
}
|
||||
}
|
||||
|
||||
impl AsyncSendableNetworkClient for ReqwestNetworkClient {
|
||||
fn send<'a>(
|
||||
&'a mut self,
|
||||
request: &'a sspi::generator::NetworkRequest,
|
||||
) -> Pin<Box<dyn Future<Output = ConnectorResult<Vec<u8>>> + Send + 'a>> {
|
||||
Box::pin(async move {
|
||||
match &request.protocol {
|
||||
sspi::network_client::NetworkProtocol::Tcp => self.send_tcp(&request.url, &request.data).await,
|
||||
sspi::network_client::NetworkProtocol::Udp => self.send_udp(&request.url, &request.data).await,
|
||||
sspi::network_client::NetworkProtocol::Http | sspi::network_client::NetworkProtocol::Https => {
|
||||
self.send_http(&request.url, &request.data).await
|
||||
}
|
||||
}
|
||||
})
|
||||
ReqwestNetworkClient::send(self, request)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,6 +37,21 @@ impl Default for ReqwestNetworkClient {
|
|||
}
|
||||
|
||||
impl ReqwestNetworkClient {
|
||||
pub fn send<'a>(
|
||||
&'a mut self,
|
||||
request: &'a sspi::generator::NetworkRequest,
|
||||
) -> Pin<Box<dyn Future<Output = ConnectorResult<Vec<u8>>> + Send + 'a>> {
|
||||
Box::pin(async move {
|
||||
match &request.protocol {
|
||||
sspi::network_client::NetworkProtocol::Tcp => self.send_tcp(&request.url, &request.data).await,
|
||||
sspi::network_client::NetworkProtocol::Udp => self.send_udp(&request.url, &request.data).await,
|
||||
sspi::network_client::NetworkProtocol::Http | sspi::network_client::NetworkProtocol::Https => {
|
||||
self.send_http(&request.url, &request.data).await
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async fn send_tcp(&self, url: &Url, data: &[u8]) -> ConnectorResult<Vec<u8>> {
|
||||
let addr = format!("{}:{}", url.host_str().unwrap_or_default(), url.port().unwrap_or(88));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue