From 40b483357f189eee18267a370175522410500e59 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Fri, 26 Mar 2021 14:11:56 +0300 Subject: [PATCH] Propagate network to proxy object --- mtglib/init.go | 3 +++ mtglib/proxy.go | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mtglib/init.go b/mtglib/init.go index cb2893d..331bc38 100644 --- a/mtglib/init.go +++ b/mtglib/init.go @@ -17,6 +17,9 @@ var ( ErrIPBlocklistIsNotDefined = errors.New("ip blocklist is not defined") ErrEventStreamIsNotDefined = errors.New("event stream is not defined") ErrLoggerIsNotDefined = errors.New("logger is not defined") + + errCannotSendWelcomePacket = errors.New("cannot send welcome packet") + errReplayAttackDetected = errors.New("replay attack detected") ) const ( diff --git a/mtglib/proxy.go b/mtglib/proxy.go index 6766c00..b48d50f 100644 --- a/mtglib/proxy.go +++ b/mtglib/proxy.go @@ -27,6 +27,7 @@ type Proxy struct { telegram *telegram.Telegram secret Secret + network Network antiReplayCache AntiReplayCache timeAttackDetector TimeAttackDetector ipBlocklist IPBlocklist @@ -139,13 +140,13 @@ func (p *Proxy) doFakeTLSHandshake(ctx *streamContext) error { } if p.antiReplayCache.SeenBefore(hello.SessionID) { - p.logger.Warning("anti replay attack was detected") - - return fmt.Errorf("anti replay attack from %s", ctx.ClientIP().String()) + return errReplayAttackDetected } if err := faketls.SendWelcomePacket(ctx.clientConn, p.secret.Key[:], hello); err != nil { - return fmt.Errorf("cannot send a welcome packet: %w", err) + p.logger.InfoError("cannot send welcome packet", err) + + return errCannotSendWelcomePacket } ctx.clientConn = &faketls.Conn{ @@ -249,6 +250,7 @@ func NewProxy(opts ProxyOpts) (*Proxy, error) { // nolint: cyclop, funlen ctx: ctx, ctxCancel: cancel, secret: opts.Secret, + network: opts.Network, antiReplayCache: opts.AntiReplayCache, timeAttackDetector: opts.TimeAttackDetector, ipBlocklist: opts.IPBlocklist,