From b2219396ddba20fd0b199fad25566d07449d980d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Mon, 7 Apr 2025 19:33:58 +0200 Subject: [PATCH] disable proxy for local requests, #509. --- server/internal/http/legacy/handler.go | 11 +++++++---- server/internal/http/legacy/session.go | 9 +++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/server/internal/http/legacy/handler.go b/server/internal/http/legacy/handler.go index ca3dde56..dc128ade 100644 --- a/server/internal/http/legacy/handler.go +++ b/server/internal/http/legacy/handler.go @@ -9,6 +9,7 @@ import ( "net/http" "net/url" "strings" + "time" "github.com/m1k1o/neko/server/internal/api" oldEvent "github.com/m1k1o/neko/server/internal/http/legacy/event" @@ -35,9 +36,6 @@ var ( return true }, } - - // DefaultDialer is a dialer with all fields set to the default zero values. - DefaultDialer = websocket.DefaultDialer ) type LegacyHandler struct { @@ -45,6 +43,7 @@ type LegacyHandler struct { serverAddr string bannedIPs map[string]struct{} sessionIPs map[string]string + wsDialer *websocket.Dialer } func New(serverAddr string) *LegacyHandler { @@ -55,6 +54,10 @@ func New(serverAddr string) *LegacyHandler { serverAddr: serverAddr, bannedIPs: make(map[string]struct{}), sessionIPs: make(map[string]string), + wsDialer: &websocket.Dialer{ + Proxy: nil, // disable proxy for local requests + HandshakeTimeout: 45 * time.Second, + }, } } @@ -99,7 +102,7 @@ func (h *LegacyHandler) Route(r types.Router) { defer s.destroy() // dial to the remote backend - connBackend, _, err := DefaultDialer.Dial("ws://"+h.serverAddr+"/api/ws?token="+url.QueryEscape(s.token), nil) + connBackend, _, err := h.wsDialer.Dial("ws://"+h.serverAddr+"/api/ws?token="+url.QueryEscape(s.token), nil) if err != nil { h.logger.Error().Err(err).Msg("couldn't dial to the remote backend") diff --git a/server/internal/http/legacy/session.go b/server/internal/http/legacy/session.go index bd28aa03..02f45ec0 100644 --- a/server/internal/http/legacy/session.go +++ b/server/internal/http/legacy/session.go @@ -55,13 +55,18 @@ type session struct { } func (h *LegacyHandler) newSession(r *http.Request) *session { + transport := http.DefaultTransport.(*http.Transport).Clone() + transport.Proxy = nil // disable proxy for local requests + return &session{ r: r, h: h, logger: h.logger, serverAddr: h.serverAddr, - client: http.DefaultClient, - sessions: make(map[string]*memberStruct), + client: &http.Client{ + Transport: transport, + }, + sessions: make(map[string]*memberStruct), } }