reacher-fast-socks5

Crates.ioreacher-fast-socks5
lib.rsreacher-fast-socks5
version0.8.1
sourcesrc
created_at2022-08-10 21:19:45.513994
updated_at2022-08-10 21:19:45.513994
descriptionFast SOCKS5 client/server implementation written in Rust async/.await (tokio)
homepage
repositoryhttps://github.com/amaurym/fast-socks5
max_upload_size
id642901
size118,611
Amaury (amaurym)

documentation

README

SOCKS5 client/server library using async/.await

License crates.io dependency status Release

Features

  • An async/.await SOCKS5 implementation.

  • An async/.await SOCKS4 Client implementation.

  • An async/.await SOCKS4a Client implementation.

  • No unsafe code

  • Built on-top of tokio library

  • Ultra lightweight and scalable

  • No system dependencies

  • Cross-platform

  • Authentication methods:

    • No-Auth method
    • Username/Password auth method
    • Custom auth methods can be implemented via the Authentication Trait
  • All SOCKS5 RFC errors (replies) should be mapped

  • AsyncRead + AsyncWrite traits are implemented on Socks5Stream & Socks5Socket

  • IPv4, IPv6, and Domains types are supported

  • Config helper for Socks5Server

  • Helpers to run a Socks5Server à la "std's TcpStream" via incoming.next().await

  • Examples come with real cases commands scenarios

  • Can disable DNS resolving

  • Can skip the authentication/handshake process, which will directly handle command's request (useful to save useless round-trips in a current authenticated environment)

  • Can disable command execution (useful if you just want to forward the request to a different server)

Install

Open in crates.io.

Examples

Please check examples directory.

# Run client
RUST_LOG=debug cargo run --example client -- --socks-server 127.0.0.1:1337 --username admin --password password -a perdu.com -p 80

# Run server
RUST_LOG=debug cargo run --example server -- --listen-addr 127.0.0.1:1337 password -u admin -p password

# Test it with cURL
curl -v --proxy socks5://admin:password@127.0.0.1:1337 https://ipapi.co/json/

TODO

  • Tests have to be implemented
  • Better Rust doc
  • UDP bind command not implemented

Inspired by

Thanks to all these SOCKS5 projects

Further consideration

Commit count: 0

cargo fmt