char baseurl[PATH_MAX];
struct pakfire_mirrorlist* mirrors;
struct pakfire_mirror* mirror;
+
+ // Authentication
+ unsigned int auth;
};
struct pakfire_downloader {
return pakfire_string_set(transfer->path, path);
}
+int pakfire_downloader_transfer_auth(struct pakfire_transfer* transfer) {
+ // Enable authentication
+ transfer->auth = 1;
+
+ return 0;
+}
+
static int pakfire_transfer_select_mirror(struct pakfire_downloader* downloader,
struct pakfire_transfer* transfer) {
// Choose the next mirror
}
}
+ // Authentication
+ if (transfer->auth) {
+ // Request SPNEGO
+ r = curl_easy_setopt(transfer->handle, CURLOPT_HTTPAUTH, CURLAUTH_NEGOTIATE|CURLAUTH_ONLY);
+ if (r) {
+ CTX_ERROR(downloader->ctx, "Could not enable SPNEGO\n");
+ return r;
+ }
+
+ // Set an empty username
+ r = curl_easy_setopt(transfer->handle, CURLOPT_USERPWD, ":");
+ if (r) {
+ CTX_ERROR(downloader->ctx, "Could not set username\n");
+ return r;
+ }
+ }
+
// Drop any previously used EVP contexts
if (transfer->evp) {
EVP_MD_CTX_free(transfer->evp);