pub struct SocksClientHandshake {
request: SocksRequest,
state: State,
reply: Option<SocksReply>,
}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: SocksRequestThe request that we are currently trying to negotiate with the proxy.
state: StateOur 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 (const: unstable) · 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
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>
Source§fn call_handshake_impl(&mut self, input: &[u8]) -> (usize, Result<ImplNextStep>)
fn call_handshake_impl(&mut self, input: &[u8]) -> (usize, Result<ImplNextStep>)
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>
.handshake Read moreSource§impl HasHandshakeState for SocksClientHandshake
impl HasHandshakeState for SocksClientHandshake
Source§fn set_failed(&mut self)
fn set_failed(&mut self)
FailedAuto Trait Implementations§
impl Freeze for SocksClientHandshake
impl RefUnwindSafe for SocksClientHandshake
impl Send for SocksClientHandshake
impl Sync for SocksClientHandshake
impl Unpin for SocksClientHandshake
impl UnsafeUnpin for SocksClientHandshake
impl UnwindSafe for SocksClientHandshake
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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