Skip to content

Latest commit

 

History

History
50 lines (34 loc) · 1.54 KB

README.md

File metadata and controls

50 lines (34 loc) · 1.54 KB

moproxy

moproxy is a high performance SOCKS5 (RFC1928) and HTTP proxy server written in Golang. It uses tcpserver as a basis.

THIS CODE IS NOT YET PRODUCTION READY. As always, use at your own risk :)

Features

  • IPv4 and IPv6 support (also IPv4 to IPv6 and vice versa)
  • Access rules (from/to IP ranges)
  • Support for username/password authentication
  • Timeouts for various stages
  • CONNECT command (normal SOCKS5 proxy usage)
  • BIND command (required for i.e. non-PASV FTP)
  • TCP FastOpen (TFO) support for remote connections with Linux Kernel 4.11+
  • Config reloading (using SIGHUP)

Development/Testing

Run moproxy using from repository's base directory

# go run bin/moproxy.go -vvvv

Installation

Installing moproxy is pretty simple using make. It only requires Go 1.13 (or better) to be installed on your system.

# make
# make install

This builds and installs moproxy to /opt/moproxy by default and registers a systemd service with the name moproxyto start, reload and stop the service.

You need to copy moproxy.conf.dist to moproxy.conf within /opt/moproxy/configs and adjust it to your needs prior to starting the service. The config file is in JSON format with documentation and examples as comments.

TODOs

  • Logging to SQLite
  • JSON status page
  • Support for more flexible authenticators (squid style)
  • Maybe support SOCKSv6

License

moproxy is available under the MIT license.