Support GET in ODoH targets

This commit is contained in:
Frank Denis 2021-06-06 01:22:48 +02:00
parent f542edacaa
commit e57d5173e9
2 changed files with 8 additions and 6 deletions

View File

@ -693,7 +693,7 @@ func (proxy *Proxy) processIncomingQuery(clientProto string, serverProto string,
if serverInfo.Relay != nil && serverInfo.Relay.ODoH != nil {
targetURL = serverInfo.Relay.ODoH.url
}
responseBody, responseCode, _, _, err := proxy.xTransport.ObliviousDoHQuery(targetURL, odohQuery.odohMessage, proxy.timeout)
responseBody, responseCode, _, _, err := proxy.xTransport.ObliviousDoHQuery(serverInfo.useGet, targetURL, odohQuery.odohMessage, proxy.timeout)
if err == nil && len(responseBody) > 0 && responseCode == 200 {
response, err = odohQuery.decryptResponse(responseBody)
if err != nil {

View File

@ -428,8 +428,7 @@ func (xTransport *XTransport) Post(url *url.URL, accept string, contentType stri
return xTransport.Fetch("POST", url, accept, contentType, body, timeout)
}
func (xTransport *XTransport) DoHQuery(useGet bool, url *url.URL, body []byte, timeout time.Duration) ([]byte, int, *tls.ConnectionState, time.Duration, error) {
dataType := "application/dns-message"
func (xTransport *XTransport) doHQLikeuery(dataType string, useGet bool, url *url.URL, body []byte, timeout time.Duration) ([]byte, int, *tls.ConnectionState, time.Duration, error) {
if useGet {
qs := url.Query()
encBody := base64.RawURLEncoding.EncodeToString(body)
@ -441,7 +440,10 @@ func (xTransport *XTransport) DoHQuery(useGet bool, url *url.URL, body []byte, t
return xTransport.Post(url, dataType, dataType, &body, timeout)
}
func (xTransport *XTransport) ObliviousDoHQuery(url *url.URL, body []byte, timeout time.Duration) ([]byte, int, *tls.ConnectionState, time.Duration, error) {
dataType := "application/oblivious-dns-message"
return xTransport.Post(url, dataType, dataType, &body, timeout)
func (xTransport *XTransport) DoHQuery(useGet bool, url *url.URL, body []byte, timeout time.Duration) ([]byte, int, *tls.ConnectionState, time.Duration, error) {
return xTransport.doHQLikeuery("application/dns-message", useGet, url, body, timeout)
}
func (xTransport *XTransport) ObliviousDoHQuery(useGet bool, url *url.URL, body []byte, timeout time.Duration) ([]byte, int, *tls.ConnectionState, time.Duration, error) {
return xTransport.doHQLikeuery("application/oblivious-dns-message", useGet, url, body, timeout)
}