Installation
go get github.com/TuanKiri/socks5
Getting Started
Create your .go
file. For example: main.go
.
package main
import (
"context"
"log"
"os/signal"
"syscall"
"github.com/TuanKiri/socks5"
)
func main() {
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
defer stop()
srv := socks5.New()
go func() {
if err := srv.ListenAndServe(); err != nil {
log.Fatal(err)
}
}()
<-ctx.Done()
if err := srv.Shutdown(); err != nil {
log.Fatal(err)
}
}
Run your server:
go run main.go
The following curl example shows how to use the proxy server:
curl -x socks5://127.0.0.1:1080 http://example.com
See the tests and examples for more information about package.
FAQ
If you have any questions, you can ask in GitHub Discussions.
Note
- The proof of work for the UDP association was done using qBittorrent - a BitTorrent client.
Contributing
Feel free to open tickets or send pull requests with improvements. Thanks in advance for your help!
Please follow the contribution guidelines.
References
- RFC 1928 SOCKS Protocol Version 5
- RFC 1929 Username/Password Authentication for SOCKS V5
Licenses