New: experimental in-memory SOCKS5 listener

This commit is contained in:
kayos@tcp.direct 2021-10-30 18:24:37 -07:00
parent a9864d39e0
commit fce68552a9
Signed by: kayos
GPG Key ID: 4B841471B4BEE979
2 changed files with 24 additions and 0 deletions

1
go.mod
View File

@ -4,6 +4,7 @@ go 1.17
require (
git.tcp.direct/kayos/go-socks5 v1.0.1
github.com/akutz/memconn v0.1.0
github.com/mattn/go-tty v0.0.3
github.com/miekg/dns v1.1.43
github.com/panjf2000/ants/v2 v2.4.6

View File

@ -4,6 +4,7 @@ import (
"fmt"
"git.tcp.direct/kayos/go-socks5"
"github.com/akutz/memconn"
)
type socksLogger struct {
@ -49,3 +50,25 @@ func (s *Swamp) StartSOCKS5Server(listen, username, password string) error {
return server.ListenAndServe("tcp", listen)
}
// StartMemoryServer starts our rotating proxy SOCKS5 server as an in-memory socket.
func (s *Swamp) StartMemoryServer() error {
conf := &socks5.Config{
Logger: s.socksServerLogger,
Dial: s.MysteryDialer,
}
s.dbgPrint("listening for SOCKS5 connections in memory")
server, err := socks5.New(conf)
if err != nil {
return err
}
listener, err := memconn.Listen("prox5", "0")
if err != nil {
return err
}
return server.Serve(listener)
}