Crate fast_socks5

Crate fast_socks5 

Source
Expand description

Fast SOCKS5 client/server implementation written in Rust async/.await (with tokio).

This library is maintained by anyip.io a residential and mobile socks5 proxy provider.

§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 the Tokio runtime
  • Ultra lightweight and scalable
  • No system dependencies
  • Cross-platform
  • Infinitely extensible, explicit server API based on typestates for safety
    • You control the request handling, the library only ensures you follow the proper protocol flow
    • Can skip DNS resolution
    • Can skip the authentication/handshake process (not RFC-compliant, for private use, to save on useless round-trips)
    • Instead of proxying in-process, swap out run_tcp_proxy for custom handling to build a router or to use a custom accelerated proxying method
  • Authentication methods:
    • No-Auth method (0x00)
    • Username/Password auth method (0x02)
    • Custom auth methods can be implemented on the server side via the AuthMethod Trait
      • Multiple auth methods with runtime negotiation can be supported, with fast static dispatch (enums can be generated with the auth_method_enums macro)
  • UDP is supported
  • All SOCKS5 RFC errors (replies) should be mapped
  • IPv4, IPv6, and Domains types are supported

§Install

Open in crates.io.

§Examples

Please check examples directory.

Modules§

client
consts
server
util

Macros§

auth_method_enums
read_exact
Easy to destructure bytes buffers by naming each fields:
ready

Enums§

AuthenticationMethod
ReplyError
SOCKS5 reply code
Socks5Command
SocksError
UdpHeaderError

Functions§

new_udp_header
Generate UDP header
parse_udp_request
Parse data from UDP client on raw buffer, return (frag, target_addr, payload).

Type Aliases§

Result