proxy-dns: Allow setting the Host header via url hash
This commit is contained in:
parent
db9b6541d0
commit
6458b091a5
|
@ -129,8 +129,8 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
&cli.StringSliceFlag{
|
&cli.StringSliceFlag{
|
||||||
Name: "upstream",
|
Name: "upstream",
|
||||||
Usage: "Upstream endpoint URL, you can specify multiple endpoints for redundancy.",
|
Usage: "Upstream endpoint URL, you can specify multiple endpoints for redundancy. If required, the Host header can be manually set by appending a hash to the URL.",
|
||||||
Value: cli.NewStringSlice("https://1.1.1.1/dns-query", "https://1.0.0.1/dns-query"),
|
Value: cli.NewStringSlice("https://1.1.1.1/dns-query", "https://[2606:4700:4700::1111]/dns-query", "https://1.0.0.1/dns-query", "https://[2606:4700:4700::1001]/dns-query"),
|
||||||
EnvVars: []string{"TUNNEL_DNS_UPSTREAM"},
|
EnvVars: []string{"TUNNEL_DNS_UPSTREAM"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -934,8 +934,8 @@ func tunnelFlags(shouldHide bool) []cli.Flag {
|
||||||
}),
|
}),
|
||||||
altsrc.NewStringSliceFlag(&cli.StringSliceFlag{
|
altsrc.NewStringSliceFlag(&cli.StringSliceFlag{
|
||||||
Name: "proxy-dns-upstream",
|
Name: "proxy-dns-upstream",
|
||||||
Usage: "Upstream endpoint URL, you can specify multiple endpoints for redundancy.",
|
Usage: "Upstream endpoint URL, you can specify multiple endpoints for redundancy. If required, the Host header can be manually set by appending a hash to the URL.",
|
||||||
Value: cli.NewStringSlice("https://1.1.1.1/dns-query", "https://1.0.0.1/dns-query"),
|
Value: cli.NewStringSlice("https://1.1.1.1/dns-query", "https://[2606:4700:4700::1111]/dns-query", "https://1.0.0.1/dns-query", "https://[2606:4700:4700::1001]/dns-query"),
|
||||||
EnvVars: []string{"TUNNEL_DNS_UPSTREAM"},
|
EnvVars: []string{"TUNNEL_DNS_UPSTREAM"},
|
||||||
Hidden: shouldHide,
|
Hidden: shouldHide,
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -35,6 +35,10 @@ func NewUpstreamHTTPS(endpoint string) (Upstream, error) {
|
||||||
|
|
||||||
// Update TLS and HTTP client configuration
|
// Update TLS and HTTP client configuration
|
||||||
tls := &tls.Config{ServerName: u.Hostname()}
|
tls := &tls.Config{ServerName: u.Hostname()}
|
||||||
|
if u.Fragment != "" {
|
||||||
|
// Allow server name override via anchor on the url
|
||||||
|
tls.ServerName = u.Fragment
|
||||||
|
}
|
||||||
transport := &http.Transport{
|
transport := &http.Transport{
|
||||||
TLSClientConfig: tls,
|
TLSClientConfig: tls,
|
||||||
DisableCompression: true,
|
DisableCompression: true,
|
||||||
|
@ -84,6 +88,10 @@ func (u *UpstreamHTTPS) exchangeWireformat(msg []byte) ([]byte, error) {
|
||||||
|
|
||||||
req.Header.Add("Content-Type", "application/dns-message")
|
req.Header.Add("Content-Type", "application/dns-message")
|
||||||
req.Host = u.endpoint.Host
|
req.Host = u.endpoint.Host
|
||||||
|
if u.endpoint.Fragment != "" {
|
||||||
|
// Allow server name override via anchor on the url
|
||||||
|
req.Host = u.endpoint.Fragment
|
||||||
|
}
|
||||||
|
|
||||||
resp, err := u.client.Do(req)
|
resp, err := u.client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue