disable proxy for local requests, #509.

This commit is contained in:
Miroslav Šedivý 2025-04-07 19:33:58 +02:00
parent 2ec35d9d0c
commit b2219396dd
2 changed files with 14 additions and 6 deletions

View file

@ -9,6 +9,7 @@ import (
"net/http" "net/http"
"net/url" "net/url"
"strings" "strings"
"time"
"github.com/m1k1o/neko/server/internal/api" "github.com/m1k1o/neko/server/internal/api"
oldEvent "github.com/m1k1o/neko/server/internal/http/legacy/event" oldEvent "github.com/m1k1o/neko/server/internal/http/legacy/event"
@ -35,9 +36,6 @@ var (
return true return true
}, },
} }
// DefaultDialer is a dialer with all fields set to the default zero values.
DefaultDialer = websocket.DefaultDialer
) )
type LegacyHandler struct { type LegacyHandler struct {
@ -45,6 +43,7 @@ type LegacyHandler struct {
serverAddr string serverAddr string
bannedIPs map[string]struct{} bannedIPs map[string]struct{}
sessionIPs map[string]string sessionIPs map[string]string
wsDialer *websocket.Dialer
} }
func New(serverAddr string) *LegacyHandler { func New(serverAddr string) *LegacyHandler {
@ -55,6 +54,10 @@ func New(serverAddr string) *LegacyHandler {
serverAddr: serverAddr, serverAddr: serverAddr,
bannedIPs: make(map[string]struct{}), bannedIPs: make(map[string]struct{}),
sessionIPs: make(map[string]string), 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() defer s.destroy()
// dial to the remote backend // 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 { if err != nil {
h.logger.Error().Err(err).Msg("couldn't dial to the remote backend") h.logger.Error().Err(err).Msg("couldn't dial to the remote backend")

View file

@ -55,13 +55,18 @@ type session struct {
} }
func (h *LegacyHandler) newSession(r *http.Request) *session { func (h *LegacyHandler) newSession(r *http.Request) *session {
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = nil // disable proxy for local requests
return &session{ return &session{
r: r, r: r,
h: h, h: h,
logger: h.logger, logger: h.logger,
serverAddr: h.serverAddr, serverAddr: h.serverAddr,
client: http.DefaultClient, client: &http.Client{
sessions: make(map[string]*memberStruct), Transport: transport,
},
sessions: make(map[string]*memberStruct),
} }
} }