From e157e73adecf4ab7c425327485f4801456f8e9fa Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Wed, 26 Jan 2022 00:58:33 +0000 Subject: [PATCH] Check proxy method after checking admin uid to allow admin to have an invalid but unused proxy method --- internal/server/auth.go | 4 ---- internal/server/dispatcher.go | 12 ++++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/server/auth.go b/internal/server/auth.go index 1ce79ff..c7e6d1b 100644 --- a/internal/server/auth.go +++ b/internal/server/auth.go @@ -83,10 +83,6 @@ func AuthFirstPacket(firstPacket []byte, transport Transport, sta *State) (info err = fmt.Errorf("%w: %v", ErrBadDecryption, err) return } - if _, ok := sta.ProxyBook[info.ProxyMethod]; !ok { - err = ErrBadProxyMethod - return - } info.Transport = transport return } diff --git a/internal/server/dispatcher.go b/internal/server/dispatcher.go index 287e363..20eae5f 100644 --- a/internal/server/dispatcher.go +++ b/internal/server/dispatcher.go @@ -213,6 +213,18 @@ func dispatchConnection(conn net.Conn, sta *State) { return } + if _, ok := sta.ProxyBook[ci.ProxyMethod]; !ok { + log.WithFields(log.Fields{ + "remoteAddr": conn.RemoteAddr(), + "UID": b64(ci.UID), + "sessionId": ci.SessionId, + "proxyMethod": ci.ProxyMethod, + "encryptionMethod": ci.EncryptionMethod, + }).Error(ErrBadProxyMethod) + goWeb() + return + } + var user *ActiveUser if sta.IsBypass(ci.UID) { user, err = sta.Panel.GetBypassUser(ci.UID)