Struct Binder
pub struct Binder<A, S> { /* private fields */ }
Expand description
Only “useful” public Socks5Binder
implementation,
which actually is able to accept bind requests and process them.
The Default
implementation opens a new socket for accepting 1
incoming connection. Once received it will pipe the original request (source)
stream together with the received inbound stream from the secondary callee.
You can customise the Binder
fully by creating it using Binder::new
or overwrite any of the default components using either or both of Binder::with_acceptor
and Binder::with_service
.
Implementations§
§impl<A, S> Binder<A, S>
impl<A, S> Binder<A, S>
pub fn new(acceptor: A, service: S) -> Binder<A, S>
pub fn new(acceptor: A, service: S) -> Binder<A, S>
Create a new Binder
.
In case you only wish to overwrite one of these components
you can also use a Default
Binder
and overwrite the specific component
using Binder::with_acceptor
or Binder::with_service
.
§impl<A, S> Binder<A, S>
impl<A, S> Binder<A, S>
pub fn with_acceptor<T>(self, acceptor: T) -> Binder<T, S>
pub fn with_acceptor<T>(self, acceptor: T) -> Binder<T, S>
Overwrite the Binder
’s [AcceptorFactory
],
used to open a listener, return the address and
wait for an incoming connection which it will return.
pub fn with_service<T>(self, service: T) -> Binder<A, T>
pub fn with_service<T>(self, service: T) -> Binder<A, T>
pub fn set_bind_interface(
&mut self,
interface: impl Into<Interface>,
) -> &mut Binder<A, S>
pub fn set_bind_interface( &mut self, interface: impl Into<Interface>, ) -> &mut Binder<A, S>
Define the (network) Interface
to bind to.
By default it will use the client’s requested bind address, which is in many cases not what you want.
pub fn set_default_bind_interface(&mut self) -> &mut Binder<A, S>
pub fn set_default_bind_interface(&mut self) -> &mut Binder<A, S>
Define the default (network) Interface
to bind to (0.0.0.0:0
).
By default it will use the client’s requested bind address, which is in many cases not what you want.
pub fn with_bind_interface(
self,
interface: impl Into<Interface>,
) -> Binder<A, S>
pub fn with_bind_interface( self, interface: impl Into<Interface>, ) -> Binder<A, S>
Define the (network) Interface
to bind to.
By default it will use the client’s requested bind address, which is in many cases not what you want.
pub fn with_default_bind_interface(self) -> Binder<A, S>
pub fn with_default_bind_interface(self) -> Binder<A, S>
Define the default (network) Interface
to bind to (0.0.0.0:0
).
By default it will use the client’s requested bind address, which is in many cases not what you want.
pub fn set_accept_timeout(
&mut self,
accept_timeout: Duration,
) -> &mut Binder<A, S>
pub fn set_accept_timeout( &mut self, accept_timeout: Duration, ) -> &mut Binder<A, S>
Set field with Some(value)
pub fn with_accept_timeout(self, accept_timeout: Duration) -> Binder<A, S>
pub fn with_accept_timeout(self, accept_timeout: Duration) -> Binder<A, S>
Replace field with Some(value)
pub fn maybe_with_accept_timeout(
self,
accept_timeout: Option<Duration>,
) -> Binder<A, S>
pub fn maybe_with_accept_timeout( self, accept_timeout: Option<Duration>, ) -> Binder<A, S>
Replace field with the provided option
Trait Implementations§
§impl Default for Binder<Timeout<DefaultAcceptorFactory, LayerErrorStatic<Elapsed>>, StreamForwardService>
impl Default for Binder<Timeout<DefaultAcceptorFactory, LayerErrorStatic<Elapsed>>, StreamForwardService>
§fn default() -> Binder<Timeout<DefaultAcceptorFactory, LayerErrorStatic<Elapsed>>, StreamForwardService>
fn default() -> Binder<Timeout<DefaultAcceptorFactory, LayerErrorStatic<Elapsed>>, StreamForwardService>
§impl<S, F, StreamService> Socks5BinderSeal<S> for Binder<F, StreamService>where
S: Stream + Unpin,
F: SocketService,
<F as SocketService>::Socket: Acceptor,
<<F as SocketService>::Socket as Acceptor>::Stream: Unpin,
StreamService: Service<ProxyRequest<S, <<F as SocketService>::Socket as Acceptor>::Stream>, Response = ()>,
<StreamService as Service<ProxyRequest<S, <<F as SocketService>::Socket as Acceptor>::Stream>>>::Error: Into<Box<dyn Error + Sync + Send>>,
impl<S, F, StreamService> Socks5BinderSeal<S> for Binder<F, StreamService>where
S: Stream + Unpin,
F: SocketService,
<F as SocketService>::Socket: Acceptor,
<<F as SocketService>::Socket as Acceptor>::Stream: Unpin,
StreamService: Service<ProxyRequest<S, <<F as SocketService>::Socket as Acceptor>::Stream>, Response = ()>,
<StreamService as Service<ProxyRequest<S, <<F as SocketService>::Socket as Acceptor>::Stream>>>::Error: Into<Box<dyn Error + Sync + Send>>,
Auto Trait Implementations§
impl<A, S> Freeze for Binder<A, S>
impl<A, S> RefUnwindSafe for Binder<A, S>where
A: RefUnwindSafe,
S: RefUnwindSafe,
impl<A, S> Send for Binder<A, S>
impl<A, S> Sync for Binder<A, S>
impl<A, S> Unpin for Binder<A, S>
impl<A, S> UnwindSafe for Binder<A, S>where
A: UnwindSafe,
S: UnwindSafe,
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> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more