rusocks 0.0.7

A socks4(a)/5 server
Documentation
use std::net::{SocketAddrV4, SocketAddrV6};

#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum SocksAddr {
    IPV4(SocketAddrV4),
    Domain(String, u16),
    IPV6(SocketAddrV6),
}

impl SocksAddr {
    pub fn domain(&self) -> String {
        match self {
            Self::IPV4(addr) => addr.ip().to_string(),
            Self::Domain(addr, _) => addr.clone(),
            Self::IPV6(addr) => addr.ip().to_string(),
        }
    }

    pub fn port(&self) -> u16 {
        match self {
            Self::IPV4(addr) => addr.port(),
            Self::Domain(_, port) => *port,
            Self::IPV6(addr) => addr.port(),
        }
    }
}