[Libguestfs] [PATCH nbdkit] Add cainfo and capath options to curl plugin

Richard W.M. Jones rjones at redhat.com
Fri Jan 17 21:49:23 UTC 2020


On Fri, Jan 17, 2020 at 03:54:15PM +0100, Wiktor Gołgowski wrote:
> This change adds cainfo and capath options to the curl plugin.
> They refer directly to CURLOPT_CAINFO and CURLOPT_CAPATH, as documented
> in libcurl.
> 
> Signed-off-by: Wiktor Gołgowski <wiktor.golgowski at linux.intel.com>
> ---
>  plugins/curl/curl.c                 | 16 ++++++++++++++++
>  plugins/curl/nbdkit-curl-plugin.pod |  9 +++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/plugins/curl/curl.c b/plugins/curl/curl.c
> index 007449b..1381832 100644
> --- a/plugins/curl/curl.c
> +++ b/plugins/curl/curl.c
> @@ -66,6 +66,8 @@ static bool sslverify = true;
>  static uint32_t timeout = 0;
>  static const char *unix_socket_path = NULL;
>  static long protocols = CURLPROTO_ALL;
> +static const char *cainfo = NULL;
> +static const char *capath = NULL;
>  
>  /* Use '-D curl.verbose=1' to set. */
>  int curl_debug_verbose = 0;
> @@ -231,6 +233,14 @@ curl_config (const char *key, const char *value)
>        return -1;
>    }
>  
> +  else if (strcmp (key, "cainfo") == 0) {
> +    cainfo = value;
> +  }
> +
> +  else if (strcmp (key, "capath") == 0) {
> +    capath =  value;
> +  }
> +
>    else {
>      nbdkit_error ("unknown parameter '%s'", key);
>      return -1;
> @@ -253,6 +263,8 @@ curl_config_complete (void)
>  }
>  
>  #define curl_config_help \
> +  "cainfo=<CAINFO>            Path to Certificate Authority file.\n" \
> +  "capath=<CAPATH>            Path to directory with CA certificates.\n" \
>    "cookie=<COOKIE>            Set HTTP/HTTPS cookies.\n" \
>    "password=<PASSWORD>        The password for the user account.\n" \
>    "protocols=PROTO,PROTO,..   Limit protocols allowed.\n" \
> @@ -369,6 +381,10 @@ curl_open (int readonly)
>      curl_easy_setopt (h->c, CURLOPT_PROXYPASSWORD, proxy_password);
>    if (cookie)
>      curl_easy_setopt (h->c, CURLOPT_COOKIE, cookie);
> +  if (cainfo)
> +    curl_easy_setopt (h->c, CURLOPT_CAINFO, cainfo);
> +  if (capath)
> +    curl_easy_setopt (h->c, CURLOPT_CAPATH, capath);
>  
>    /* Get the file size and also whether the remote HTTP server
>     * supports byte ranges.
> diff --git a/plugins/curl/nbdkit-curl-plugin.pod b/plugins/curl/nbdkit-curl-plugin.pod
> index 827e0bd..f9156af 100644
> --- a/plugins/curl/nbdkit-curl-plugin.pod
> +++ b/plugins/curl/nbdkit-curl-plugin.pod
> @@ -34,6 +34,15 @@ ports and protocols used to serve NBD see L<nbdkit(1)>).
>  
>  =over 4
>  
> +=item B<cainfo=>FILENAME
> +
> +Configure CA bundle for libcurl. See L<CURLOPT_CAINFO> for details.
> +
> +=item B<capath=>PATH
> +
> +Set CA certificates directory location for libcurl. See
> +L<CURLOPT_CAPATH> for more information.
> +
>  =item B<cookie=>COOKIE
>  
>  =item B<cookie=+>FILENAME
> -- 
> 2.20.1

Thanks - added & pushed.  There was a tiny documentation
correction which I folded in.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top




More information about the Libguestfs mailing list