Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
things-go/go-socks5: socks5 server in pure Golang with much custom optional. Full TCP/UDP and IPv4/IPv6 support.

things-go/go-socks5: socks5 server in pure Golang with much custom optional. Full TCP/UDP and IPv4/IPv6 support.

15 hours ago

go-socks5

GoDoc</a> Go.Dev reference</a> !Action Status codecov</a> Go Report Card</a> License</a> Tag</a>

Provides the socks5 package that implements a SOCKS5. SOCKS (Secure Sockets) is used to route traffic between a client and server through an intermediate proxy layer. This can be used to bypass firewalls or NATs.

Feature

The package has the following features:

  • Support socks5 server
  • Support TCP/UDP and IPv4/IPv6
  • Unit tests
  • "No Auth" mode
  • User/Password authentication optional user addr limit
  • Support for the CONNECT command
  • Support for the ASSOCIATE command
  • Rules to do granular filtering of commands
  • Custom DNS resolution
  • Custom goroutine pool
  • buffer pool design and optional custom buffer pool
  • Custom logger

TODO

The package still needs the following:

  • Support for the BIND command

Installation

Use go get.

go get github.com/things-go/go-socks5

Then import the socks5 server package into your own code.

import "github.com/things-go/go-socks5"

Example

Below is a simple example of usage, more see example

[embedmd]:# (_example/main.go go)

package main

import ( "log" "os"

"github.com/things-go/go-socks5" )

func main() { // Create a SOCKS5 server server := socks5.NewServer( socks5.WithLogger(socks5.NewLogger(log.New(os.Stdout, "socks5: ", log.LstdFlags))), )

// Create SOCKS5 proxy on localhost port 8000 if err := server.ListenAndServe("tcp", ":8000"); err != nil { panic(err) } }

Reference

License

This project is under MIT License. See the LICENSE file for the full license text.

Chat with me