socks5_impl::server::auth

Trait AuthExecutor

Source
pub trait AuthExecutor {
    type Output: AsAny;

    // Required methods
    fn auth_method(&self) -> AuthMethod;
    fn execute<'life0, 'life1, 'async_trait>(
        &'life0 self,
        stream: &'life1 mut TcpStream,
    ) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
}
Expand description

This trait is for defining the socks5 authentication method.

Pre-defined authentication methods can be found in the auth module.

You can create your own authentication method by implementing this trait. Since GAT is not stabled yet, async_trait needs to be used.

§Example

use async_trait::async_trait;
use socks5_impl::protocol::AuthMethod;
use socks5_impl::server::AuthExecutor;
use tokio::net::TcpStream;

pub struct MyAuth;

#[async_trait]
impl AuthExecutor for MyAuth {
    type Output = std::io::Result<usize>;

    fn auth_method(&self) -> AuthMethod {
        AuthMethod::from(0x80)
    }

    async fn execute(&self, stream: &mut TcpStream) -> Self::Output {
        // do something
        Ok(1145141919810)
    }
}

Required Associated Types§

Required Methods§

Source

fn auth_method(&self) -> AuthMethod

Source

fn execute<'life0, 'life1, 'async_trait>( &'life0 self, stream: &'life1 mut TcpStream, ) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Implementors§