feat: allow DERP headers to be set (#6572)

* feat: allow DERP headers to be set

* chore: remove custom flag

* Clone DERP header on client create

* Adjust to use interface to cast headers

---------

Co-authored-by: Kyle Carberry <kyle@carberry.com>
This commit is contained in:
Josh Vawdrey
2023-03-21 18:43:20 +00:00
committed by GitHub
co-authored by Kyle Carberry
parent d8aee26776
commit 97f77c4507
4 changed files with 30 additions and 11 deletions
+11 -5
View File
@@ -334,14 +334,14 @@ func createUnauthenticatedClient(cmd *cobra.Command, serverURL *url.URL) (*coder
}
transport := &headerTransport{
transport: http.DefaultTransport,
headers: map[string]string{},
header: http.Header{},
}
for _, header := range headers {
parts := strings.SplitN(header, "=", 2)
if len(parts) < 2 {
return nil, xerrors.Errorf("split header %q had less than two parts", header)
}
transport.headers[parts[0]] = parts[1]
transport.header.Add(parts[0], parts[1])
}
client.HTTPClient.Transport = transport
return client, nil
@@ -655,12 +655,18 @@ func checkWarnings(cmd *cobra.Command, client *codersdk.Client) error {
type headerTransport struct {
transport http.RoundTripper
headers map[string]string
header http.Header
}
func (h *headerTransport) Header() http.Header {
return h.header.Clone()
}
func (h *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) {
for k, v := range h.headers {
req.Header.Add(k, v)
for k, v := range h.header {
for _, vv := range v {
req.Header.Add(k, vv)
}
}
return h.transport.RoundTrip(req)
}
+4 -4
View File
@@ -330,8 +330,8 @@ func scaletestCleanup() *cobra.Command {
client.HTTPClient = &http.Client{
Transport: &headerTransport{
transport: http.DefaultTransport,
headers: map[string]string{
codersdk.BypassRatelimitHeader: "true",
header: map[string][]string{
codersdk.BypassRatelimitHeader: {"true"},
},
},
}
@@ -515,8 +515,8 @@ It is recommended that all rate limits are disabled on the server before running
client.HTTPClient = &http.Client{
Transport: &headerTransport{
transport: http.DefaultTransport,
headers: map[string]string{
codersdk.BypassRatelimitHeader: "true",
header: map[string][]string{
codersdk.BypassRatelimitHeader: {"true"},
},
},
}