From 5ffbb63e4271b7df05f0bfc31d0696745f028e76 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 6 Sep 2018 09:16:02 +0200 Subject: [PATCH] curl: --doh-url added --- docs/cmdline-opts/Makefile.inc | 2 +- docs/cmdline-opts/doh-url.d | 9 +++++++++ src/tool_cfgable.c | 1 + src/tool_cfgable.h | 1 + src/tool_getparam.c | 4 ++++ src/tool_help.c | 2 ++ src/tool_operate.c | 3 +++ 7 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 docs/cmdline-opts/doh-url.d diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc index fe5fb5baf8..76fa5d45fd 100644 --- a/docs/cmdline-opts/Makefile.inc +++ b/docs/cmdline-opts/Makefile.inc @@ -2,7 +2,7 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cert.d \ cert-status.d cert-type.d ciphers.d compressed.d compressed-ssh.d \ - config.d \ + config.d doh-url.d \ connect-timeout.d connect-to.d continue-at.d cookie.d cookie-jar.d \ create-dirs.d crlf.d crlfile.d data-ascii.d data-binary.d data.d \ data-raw.d data-urlencode.d delegation.d digest.d disable.d \ diff --git a/docs/cmdline-opts/doh-url.d b/docs/cmdline-opts/doh-url.d new file mode 100644 index 0000000000..8fa42c1b2a --- /dev/null +++ b/docs/cmdline-opts/doh-url.d @@ -0,0 +1,9 @@ +Long: doh-url +Arg: +Help: Resolve host names over DOH +Protocols: all +--- +Specifies which DNS-over-HTTPS (DOH) server to use to resolve hostnames, +instead of using the default name resolver mechanism. The URL must be HTTPS. + +If this option is used several times, the last one will be used. diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index 81e16c1c81..7d088ae0fb 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -102,6 +102,7 @@ static void free_config_fields(struct OperationConfig *config) config->url_get = NULL; config->url_out = NULL; + Curl_safefree(config->doh_url); Curl_safefree(config->cipher_list); Curl_safefree(config->proxy_cipher_list); Curl_safefree(config->cert); diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index a0363e9a7d..b719fa2191 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -115,6 +115,7 @@ struct OperationConfig { struct getout *url_get; /* point to the node to fill in URL */ struct getout *url_out; /* point to the node to fill in outfile */ struct getout *url_ul; /* point to the node to fill in upload */ + char *doh_url; char *cipher_list; char *proxy_cipher_list; char *cipher13_list; diff --git a/src/tool_getparam.c b/src/tool_getparam.c index aad147148c..58f3f58277 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -80,6 +80,7 @@ static const struct LongShort aliases[]= { {"*b", "egd-file", ARG_STRING}, {"*B", "oauth2-bearer", ARG_STRING}, {"*c", "connect-timeout", ARG_STRING}, + {"*C", "doh-url" , ARG_STRING}, {"*d", "ciphers", ARG_STRING}, {"*D", "dns-interface", ARG_STRING}, {"*e", "disable-epsv", ARG_BOOL}, @@ -619,6 +620,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ if(err) return err; break; + case 'C': /* doh-url */ + GetStr(&config->doh_url, nextarg); + break; case 'd': /* ciphers */ GetStr(&config->cipher_list, nextarg); break; diff --git a/src/tool_help.c b/src/tool_help.c index b829e76ef0..5b04ea203b 100644 --- a/src/tool_help.c +++ b/src/tool_help.c @@ -118,6 +118,8 @@ static const struct helptxt helptext[] = { "IPv6 address to use for DNS requests"}, {" --dns-servers ", "DNS server addrs to use"}, + {" --doh-url ", + "Resolve host names over DOH"}, {"-D, --dump-header ", "Write the received headers to "}, {" --egd-file ", diff --git a/src/tool_operate.c b/src/tool_operate.c index 2c3f6dd4ce..5a72b6a8c3 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1262,6 +1262,9 @@ static CURLcode operate_do(struct GlobalConfig *global, my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, (long)(config->connecttimeout * 1000)); + if(config->doh_url) + my_setopt_str(curl, CURLOPT_DOH_URL, config->doh_url); + if(config->cipher_list) my_setopt_str(curl, CURLOPT_SSL_CIPHER_LIST, config->cipher_list);