pub struct SocksClientHandshake {
request: SocksRequest,
state: State,
reply: Option<SocksReply>,
}
client-handshake
only.Expand description
The client (initiator) side of a SOCKS handshake.
Create you have one of these with SocksClientHandshake::new()
,
and then use Handshake::step
to drive it.
Fields§
§request: SocksRequest
The request that we are currently trying to negotiate with the proxy.
state: State
Our current state in negotiating that request.
reply: Option<SocksReply>
If present, the return message that we received from the proxy.
Implementations§
Source§impl SocksClientHandshake
impl SocksClientHandshake
Sourcepub fn new(request: SocksRequest) -> Self
pub fn new(request: SocksRequest) -> Self
Construct a new SocksClientHandshake
that will attempt to negotiate
with a peer using request
.
Sourcepub fn into_reply(self) -> Option<SocksReply>
pub fn into_reply(self) -> Option<SocksReply>
Consume this handshake’s state; if it finished successfully,
return the SocksReply
that we got from the proxy..
Sourcefn send_v4(&mut self) -> Result<ImplNextStep>
fn send_v4(&mut self) -> Result<ImplNextStep>
Send the client side of the socks 4 handshake.
Sourcefn handle_v4(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
fn handle_v4(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
Handle a SOCKSv4 response.
Sourcefn send_v5_initial(&mut self) -> Result<ImplNextStep>
fn send_v5_initial(&mut self) -> Result<ImplNextStep>
Send our initial socks5 message (which negotiates our authentication methods).
Sourcefn handle_v5_auth(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
fn handle_v5_auth(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
Try to handle a socks5 reply telling us what authentication method to use, and reply as appropriate.
Sourcefn generate_v5_username_auth(&self) -> Result<Vec<u8>>
fn generate_v5_username_auth(&self) -> Result<Vec<u8>>
Return a message to perform username/password authentication.
Sourcefn handle_v5_username_ack(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
fn handle_v5_username_ack(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
Try to handle a reply from the socks5 proxy to acknowledge our username/password authentication, and reply as appropriate.
Sourcefn generate_v5_command(&self) -> Result<Vec<u8>>
fn generate_v5_command(&self) -> Result<Vec<u8>>
Return a message to encode our final socks5 request.
(This can be done either in response getting an ACK for our authentication, or in response to being told that we don’t need to authenticate.)
Sourcefn handle_v5_final(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
fn handle_v5_final(&mut self, r: &mut Reader<'_>) -> Result<ImplNextStep>
Handle a final socks5 reply.
Trait Implementations§
Source§impl Clone for SocksClientHandshake
impl Clone for SocksClientHandshake
Source§fn clone(&self) -> SocksClientHandshake
fn clone(&self) -> SocksClientHandshake
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SocksClientHandshake
impl Debug for SocksClientHandshake
Source§impl Handshake for SocksClientHandshake
impl Handshake for SocksClientHandshake
Source§type Output = <Option<SocksReply> as IntoIterator>::Item
type Output = <Option<SocksReply> as IntoIterator>::Item
proxy-handshake
or client-handshake
only.Source§impl HandshakeImpl for SocksClientHandshake
impl HandshakeImpl for SocksClientHandshake
Source§fn handshake_impl(&mut self, input: &mut Reader<'_>) -> Result<ImplNextStep>
fn handshake_impl(&mut self, input: &mut Reader<'_>) -> Result<ImplNextStep>
proxy-handshake
or client-handshake
only.Source§fn call_handshake_impl(&mut self, input: &[u8]) -> (usize, Result<ImplNextStep>)
fn call_handshake_impl(&mut self, input: &[u8]) -> (usize, Result<ImplNextStep>)
proxy-handshake
or client-handshake
only.handshake_impl
. Read moreSource§impl HasHandshakeOutput<<Option<SocksReply> as IntoIterator>::Item> for SocksClientHandshake
impl HasHandshakeOutput<<Option<SocksReply> as IntoIterator>::Item> for SocksClientHandshake
Source§fn take_output(&mut self) -> Option<<Option<SocksReply> as IntoIterator>::Item>
fn take_output(&mut self) -> Option<<Option<SocksReply> as IntoIterator>::Item>
proxy-handshake
or client-handshake
only..handshake
Read moreSource§impl HasHandshakeState for SocksClientHandshake
impl HasHandshakeState for SocksClientHandshake
Source§fn set_failed(&mut self)
fn set_failed(&mut self)
proxy-handshake
or client-handshake
only.Failed
Auto Trait Implementations§
impl Freeze for SocksClientHandshake
impl RefUnwindSafe for SocksClientHandshake
impl Send for SocksClientHandshake
impl Sync for SocksClientHandshake
impl Unpin for SocksClientHandshake
impl UnwindSafe for SocksClientHandshake
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more