Skip to main content

RemoteNetstack

Struct RemoteNetstack 

Source
pub struct RemoteNetstack { /* private fields */ }
Expand description

Async LazyCat RemoteSocks network stack.

Implementations§

Source§

impl RemoteNetstack

Source

pub fn new(hserver: HServerClient, location: impl Into<RemoteLocation>) -> Self

Resolve proxy endpoints through HPortalSys for the requested location.

Source

pub fn fixed(endpoint: RemoteSocksEndpoint) -> Self

Use a fixed RemoteSocks proxy endpoint.

Source

pub fn with_endpoint_resolver<F, Fut>(resolver: F) -> Self
where F: Fn() -> Fut + Send + Sync + 'static, Fut: Future<Output = Result<RemoteSocksEndpoint, Error>> + Send + 'static,

Use an asynchronous endpoint resolver compatible with the Go SDK’s dynamic address factory.

Source

pub const fn with_dial_timeout(self, dial_timeout: Duration) -> Self

Override the default 60-second proxy connection deadline.

Source§

impl RemoteNetstack

Source

pub async fn connect_tcp( &self, address: SocksAddress, ) -> Result<RemoteTcpStream, Error>

Connect to a TCP or custom-network address through RemoteSocks.

§Errors

Returns endpoint resolution, proxy connection, SOCKS negotiation, or command reply errors.

Source

pub async fn bind_tcp( &self, address: SocksAddress, ) -> Result<RemoteTcpListener, Error>

Bind a TCP or custom-network listener through RemoteSocks.

This method waits for the first SOCKS BIND reply. Call RemoteTcpListener::accept to wait for the second reply carrying the connecting peer address.

§Errors

Returns endpoint resolution, proxy connection, SOCKS negotiation, or first-stage BIND reply errors.

Source§

impl RemoteNetstack

Source

pub async fn udp_associate( &self, target: SocksAddress, ) -> Result<RemoteUdpSocket, Error>

Create a standard RFC 1928 UDP association with a fixed default target.

The TCP control stream remains open for the lifetime of the returned socket. Closing it causes receive operations to return Error::RemoteSocksControlClosed.

§Errors

Returns endpoint resolution, SOCKS negotiation, relay address, socket binding, or control-stream errors.

Source

pub async fn connect_udp( &self, target: SocksAddress, ) -> Result<RemoteUdpSocket, Error>

Connect a UDP peer using the LazyCat 0xe2 stream extension.

Domain targets are resolved locally, matching the official Go SDK.

§Errors

Returns endpoint resolution, DNS, SOCKS negotiation, address, or framed transport errors.

Source

pub async fn bind_udp( &self, address: SocksAddress, ) -> Result<RemoteUdpSocket, Error>

Bind a UDP socket using the LazyCat 0xe3 stream extension.

Use RemoteUdpSocket::send_to and RemoteUdpSocket::recv_from with the returned socket because it has no fixed peer.

§Errors

Returns endpoint resolution, DNS, SOCKS negotiation, address, or framed transport errors.

Trait Implementations§

Source§

impl Clone for RemoteNetstack

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for RemoteNetstack

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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