socks5-proxy

socks5-proxy is a socks5 library based on tokio offering both server and client functions.

Usage

Add this to your Cargo.toml dependency toml socks5-proxy = "0.1"

Server

```rust use anyhow::Result; use socks5_proxy::server;

[tokio::main]

async fn main() -> Result<()> { let s = server::new("127.0.0.1:8080".parse()?, None)?; s.run().await?;

Ok(())

} ```

Client

```rust use anyhow::Result; use socks5_proxy::{client, Addr}; use tokio::io::{AsyncReadExt, AsyncWriteExt};

[tokio::main]

async fn main() -> Result<()> { let mut client = client::new( "localhost:1080", &Addr::HostnamePort("www.google.com:80".into()), None, ) .await?;

client.write_all(b"GET / HTTP/1.0\r\n\r\n").await?;
let mut buffer = Vec::new();
client.read_to_end(&mut buffer).await?;
println!("{}", String::from_utf8_lossy(&buffer));

Ok(())

} ```

Improvement

All kinds of issues and PRs are welcome!