Skip to content

Commit

Permalink
feat: http/socks5 proxy on unix socket
Browse files Browse the repository at this point in the history
  • Loading branch information
Menci committed Sep 3, 2024
1 parent 8d12718 commit 3141ef5
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"net"
"net/http"
"net/http/httputil"
"os"
"strings"

"tailscale.com/net/socks5"
Expand Down Expand Up @@ -89,7 +90,24 @@ const (
type Dialer func(ctx context.Context, network, address string) (net.Conn, error)

func StartProxy(logger *Logger, address string, dialer Dialer, proxyType ProxyType) {
listener, err := net.Listen("tcp", address)
var listener net.Listener
var err error
var cleanup func()

if strings.HasPrefix(address, "unix:") {
filename := address[5:]
listener, err = net.Listen("unix", filename)
cleanup = func() {
listener.Close()
os.Remove(filename)
}
} else {
listener, err = net.Listen("tcp", address)
cleanup = func() {
listener.Close()
}
}

if err != nil {
logger.Fatalf("failed to start %s proxy on %s: %v", proxyType, address, err)
}
Expand All @@ -112,7 +130,9 @@ func StartProxy(logger *Logger, address string, dialer Dialer, proxyType ProxyTy
}

go func() {
if err := serve(listener); err != nil {
err := serve(listener)
cleanup()
if err != nil {
logger.Fatalf("failed to serve %s proxy on %s: %v", proxyType, address, err)
}
}()
Expand Down

0 comments on commit 3141ef5

Please sign in to comment.