Struct SocksV5

Source
pub struct SocksV5<C> { /* private fields */ }
Available on crate features client and client-legacy only.
Expand description

Tunnel Proxy via SOCKSv5

This is a connector that can be used by the legacy::Client. It wraps another connector, and after getting an underlying connection, it established a TCP tunnel over it using SOCKSv5.

Implementations§

Source§

impl<C> SocksV5<C>

Source

pub fn new(proxy_dst: Uri, connector: C) -> Self

Create a new SOCKSv5 handshake service.

Wraps an underlying connector and stores the address of a tunneling proxying server.

A SocksV5 can then be called with any destination. The dst passed to call will not be used to create the underlying connection, but will be used in a SOCKS handshake with the proxy destination.

Source

pub fn with_auth(self, user: String, pass: String) -> Self

Use User/Pass authentication method during handshake.

Username and Password must be maximum of 255 characters each. 0 length strings are allowed despite RFC prohibiting it. This is done so that for compatablity with server implementations that require it for IP authentication.

Source

pub fn local_dns(self, local_dns: bool) -> Self

Resolve domain names locally on the client, rather than on the proxy server.

Disabled by default as local resolution of domain names can be detected as a DNS leak.

Source

pub fn send_optimistically(self, optimistic: bool) -> Self

Send all messages of the handshake optmistically (without waiting for server response).

Typical SOCKS handshake with auithentication takes 3 round trips. Optimistic sending can reduce round trip times and dramatically increase speed of handshake at the cost of reduced portability; many server implementations do not support optimistic sending as it is not defined in the RFC (RFC 1928).

Recommended to ensure connector works correctly without optimistic sending before trying with optimistic sending.

Trait Implementations§

Source§

impl<C: Clone> Clone for SocksV5<C>

Source§

fn clone(&self) -> SocksV5<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C: Debug> Debug for SocksV5<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C> Service<Uri> for SocksV5<C>
where C: Service<Uri>, C::Future: Send + 'static, C::Response: Read + Write + Unpin + Send + 'static, C::Error: Send + 'static,

Source§

type Response = <C as Service<Uri>>::Response

Responses given by the service.
Source§

type Error = SocksError<<C as Service<Uri>>::Error>

Errors produced by the service.
Source§

type Future = Handshaking<<C as Service<Uri>>::Future, <C as Service<Uri>>::Response, <C as Service<Uri>>::Error>

The future response value.
Source§

fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, dst: Uri) -> Self::Future

Process the request and return the response asynchronously. Read more

Auto Trait Implementations§

§

impl<C> !Freeze for SocksV5<C>

§

impl<C> RefUnwindSafe for SocksV5<C>
where C: RefUnwindSafe,

§

impl<C> Send for SocksV5<C>
where C: Send,

§

impl<C> Sync for SocksV5<C>
where C: Sync,

§

impl<C> Unpin for SocksV5<C>
where C: Unpin,

§

impl<C> UnwindSafe for SocksV5<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more