diff options
author | Colin Walters <walters@verbum.org> | 2017-09-26 22:02:25 -0400 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2019-12-02 22:48:33 +0000 |
commit | 36039759e2fbcadfb7841a035e98879e478ff8fb (patch) | |
tree | 4f7f081f873ee71405a3dbaa6a91ffd74c6b61fe /src/libostree/ostree-fetcher-curl.c | |
parent | 437d2183a434d8f7c71ae73f60e2ab00f7f14f24 (diff) | |
download | ostree-36039759e2fbcadfb7841a035e98879e478ff8fb.tar.gz |
pull: Add support for basic auth
This has been requested a few times for people delivering
OSTree content and wanting to do access control.
Diffstat (limited to 'src/libostree/ostree-fetcher-curl.c')
-rw-r--r-- | src/libostree/ostree-fetcher-curl.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/libostree/ostree-fetcher-curl.c b/src/libostree/ostree-fetcher-curl.c index 294b2078..fdf8a2ef 100644 --- a/src/libostree/ostree-fetcher-curl.c +++ b/src/libostree/ostree-fetcher-curl.c @@ -261,9 +261,8 @@ destroy_and_unref_source (GSource *source) } static char * -request_get_uri (FetcherRequest *req, guint idx) +request_get_uri (FetcherRequest *req, SoupURI *baseuri) { - SoupURI *baseuri = req->mirrorlist->pdata[idx]; if (!req->filename) return soup_uri_to_string (baseuri, FALSE); { g_autofree char *uristr = soup_uri_to_string (baseuri, FALSE); @@ -715,7 +714,8 @@ initiate_next_curl_request (FetcherRequest *req, g_assert_cmpint (req->idx, <, req->mirrorlist->len); - { g_autofree char *uri = request_get_uri (req, req->idx); + SoupURI *baseuri = req->mirrorlist->pdata[req->idx]; + { g_autofree char *uri = request_get_uri (req, baseuri); curl_easy_setopt (req->easy, CURLOPT_URL, uri); } @@ -771,6 +771,12 @@ initiate_next_curl_request (FetcherRequest *req, if ((self->config_flags & OSTREE_FETCHER_FLAGS_TRANSFER_GZIP) > 0) curl_easy_setopt (req->easy, CURLOPT_ACCEPT_ENCODING, ""); + /* If we have e.g. basic auth in the URL string, let's honor that */ + const char *username = soup_uri_get_user (baseuri); + curl_easy_setopt (req->easy, CURLOPT_USERNAME, username); + const char *password = soup_uri_get_password (baseuri); + curl_easy_setopt (req->easy, CURLOPT_PASSWORD, password); + /* We should only speak HTTP; TODO: only enable file if specified */ curl_easy_setopt (req->easy, CURLOPT_PROTOCOLS, (long)(CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FILE)); /* Picked the current version in F25 as of 20170127, since |