From 8a90646a68b60fd95414c7a1ee0b5567e606767e Mon Sep 17 00:00:00 2001 From: idk Date: Tue, 25 Dec 2018 21:58:35 -0500 Subject: [PATCH] use a rewriter instead --- resolve/resolver.go | 5 ++--- rewriter/rewriter.go | 24 ++++++++++++++++++++++++ socks/manager.go | 2 ++ 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 rewriter/rewriter.go diff --git a/resolve/resolver.go b/resolve/resolver.go index 0d57e55..2e0f43f 100644 --- a/resolve/resolver.go +++ b/resolve/resolver.go @@ -23,7 +23,7 @@ func (r Resolver) Resolve(ctx context.Context, name string) (context.Context, ne return r.ResolveI2P(ctx, name) } -func (r Resolver) ResolveI2P(ctx context.Context, name string) (context.Context, *sam3.I2PDestHash, error) { +func (r Resolver) ResolveI2P(ctx context.Context, name string) (context.Context, *sam3.I2PAddr, error) { if !r.ValidateI2PAddr(name) { return ctx, nil, fmt.Errorf("Error, not an allowed suffix") } @@ -31,8 +31,7 @@ func (r Resolver) ResolveI2P(ctx context.Context, name string) (context.Context, if err != nil { return ctx, nil, err } - v := raddr.DestHash() - return ctx, &v, nil + return ctx, &raddr, nil } func (r Resolver) Cleanup() error { diff --git a/rewriter/rewriter.go b/rewriter/rewriter.go new file mode 100644 index 0000000..75757d8 --- /dev/null +++ b/rewriter/rewriter.go @@ -0,0 +1,24 @@ +package rewriter + +import ( + "context" +) +import ( + "github.com/eyedeekay/go-socks5" + "github.com/eyedeekay/sam3" +) + +type Rewriter struct { + network string +} + +func (r Rewriter) Rewrite(ctx context.Context, request *socks5.Request) (context.Context, *socks5.AddrSpec) { + addr := request.DestAddr + addr.FQDN = request.DestAddr.ADDR.(*sam3.I2PAddr).Base32() + return ctx, addr +} + +func NewRewriter() Rewriter { + var r Rewriter + return &r +} diff --git a/socks/manager.go b/socks/manager.go index 6281b4d..310e1b1 100644 --- a/socks/manager.go +++ b/socks/manager.go @@ -10,6 +10,7 @@ import ( import ( "github.com/eyedeekay/eeproxy/conn" "github.com/eyedeekay/eeproxy/resolve" + "github.com/eyedeekay/eeproxy/rewriter" "github.com/eyedeekay/go-socks5" "github.com/eyedeekay/sam3" ) @@ -105,6 +106,7 @@ func NewManagerFromOptions(opts ...func(*Manager) error) (*Manager, error) { m.Config = socks5.Config{ Resolver: r, Dial: m.Dial, + Rewriter: NewRewriter(), } return &m, nil }