Skip to content

Commit

Permalink
fix: handling multiple cookies
Browse files Browse the repository at this point in the history
  • Loading branch information
Marco98 committed Aug 3, 2024
1 parent 185a10a commit 0f7cf6f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
12 changes: 7 additions & 5 deletions pkg/proxy/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func (p *Proxy) proxyRequest(cluster string, host *config.Host, w http.ResponseW
req.ContentLength = r.ContentLength
p.copyHeaders(r.Header, req.Header)
if p.config.PassthroughAuth {
if err := p.mangleCookies(cluster, r, req.Header); err != nil {
if err := p.mangleCookies(cluster, r, req); err != nil {
return err
}
}
Expand Down Expand Up @@ -167,14 +167,16 @@ func (p *Proxy) proxyWebsocket(cluster string, w http.ResponseWriter, r *http.Re
InsecureSkipVerify: p.config.TLSIgnoreCert, //nolint:gosec,G402
},
}
bhead := http.Header{}
p.copyHeaders(r.Header, bhead)
nreq := &http.Request{
Header: http.Header{},
}
p.copyHeaders(r.Header, nreq.Header)
if p.config.PassthroughAuth {
if err := p.mangleCookies(cluster, r, bhead); err != nil {
if err := p.mangleCookies(cluster, r, nreq); err != nil {
return err
}
}
bcon, resp, err := dialer.Dial(tgturl.String(), bhead)
bcon, resp, err := dialer.Dial(tgturl.String(), nreq.Header)
if err != nil {
return fmt.Errorf("failed dialing backend: %w", err)
}
Expand Down
12 changes: 6 additions & 6 deletions pkg/proxy/sessions.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,16 @@ func (p *Proxy) registerSession(log logrus.FieldLogger, sid uuid.UUID, cluster s
return nil
}

func (p *Proxy) mangleCookies(cluster string, r *http.Request, h http.Header) error {
h.Del("Cookie")
for _, c := range r.Cookies() {
func (p *Proxy) mangleCookies(cluster string, oreq *http.Request, nreq *http.Request) error {
nreq.Header.Del("Cookie")
for _, c := range oreq.Cookies() {
if c.Name != "PVEAuthCookie" &&
c.Name != clusterCookieName &&
c.Name != sessionCookieName {
h.Add("Cookie", c.String())
nreq.AddCookie(c)
}
}
rsid, err := r.Cookie(sessionCookieName)
rsid, err := oreq.Cookie(sessionCookieName)
if errors.Is(err, http.ErrNoCookie) {
return nil
}
Expand All @@ -217,7 +217,7 @@ func (p *Proxy) mangleCookies(cluster string, r *http.Request, h http.Header) er
if !ok {
return nil
}
h.Add("Cookie", c.String())
nreq.AddCookie(&c)
return nil
}

Expand Down

0 comments on commit 0f7cf6f

Please sign in to comment.