Files
opera-proxy/handler/socks.go
T

31 lines
672 B
Go
Raw Normal View History

2025-04-11 23:20:07 +07:00
package handler
import (
2025-11-20 01:25:35 +02:00
"context"
2025-08-12 19:38:17 +03:00
"log"
2025-11-20 01:25:35 +02:00
"net"
2025-08-12 19:38:17 +03:00
2026-03-25 15:26:39 +03:00
"github.com/Alexey71/opera-proxy/dialer"
2025-11-20 01:25:35 +02:00
"github.com/things-go/go-socks5"
2025-04-11 23:20:07 +07:00
)
func NewSocksServer(dialer dialer.ContextDialer, logger *log.Logger) (*socks5.Server, error) {
2025-11-20 01:25:35 +02:00
opts := []socks5.Option{
socks5.WithLogger(socks5.NewLogger(logger)),
socks5.WithRule(
&socks5.PermitCommand{
EnableConnect: true,
},
),
socks5.WithDial(dialer.DialContext),
socks5.WithResolver(DummySocksResolver{}),
}
return socks5.NewServer(opts...), nil
}
type DummySocksResolver struct{}
func (_ DummySocksResolver) Resolve(ctx context.Context, name string) (context.Context, net.IP, error) {
return ctx, nil, nil
2025-04-11 23:20:07 +07:00
}