feat: add custom header support to PHT protocol

- Add Header field to PHT Client and clientConn structs
- Support custom headers in authorize, push, and pull requests
- Add metadata parsing for header configuration as map[string]string
- Enables PHT usage with header-based authentication (e.g., Cloudflare Access)

Backwards compatible - headers are optional.
This commit is contained in:
Vasileios Papadimas
2026-01-16 14:35:48 +02:00
committed by ginuerzh
parent cd7bf9521f
commit 96f35bd7aa
4 changed files with 44 additions and 0 deletions
+19
View File
@@ -17,6 +17,7 @@ import (
type clientConn struct {
client *http.Client
header http.Header
pushURL string
pullURL string
buf []byte
@@ -69,6 +70,15 @@ func (c *clientConn) write(b []byte) (n int, err error) {
return
}
// Add custom headers
if c.header != nil {
for k, values := range c.header {
for _, v := range values {
req.Header.Add(k, v)
}
}
}
if c.logger.IsLevelEnabled(logger.TraceLevel) {
dump, _ := httputil.DumpRequest(req, false)
c.logger.Trace(string(dump))
@@ -109,6 +119,15 @@ func (c *clientConn) readLoop() {
return err
}
// Add custom headers
if c.header != nil {
for k, values := range c.header {
for _, v := range values {
r.Header.Add(k, v)
}
}
}
if c.logger.IsLevelEnabled(logger.TraceLevel) {
dump, _ := httputil.DumpRequest(r, false)
c.logger.Trace(string(dump))