disable proxy for local requests, #509.
This commit is contained in:
parent
2ec35d9d0c
commit
b2219396dd
2 changed files with 14 additions and 6 deletions
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue