HTTP: allow CAINFO to be set

Env var is SIMGEAR_TLS_CERT_PATH
This commit is contained in:
James Turner 2020-06-25 16:12:40 +01:00
parent 7fc82a26bf
commit 3fccee6e38

View File

@ -105,6 +105,8 @@ public:
unsigned int bytesTransferred; unsigned int bytesTransferred;
unsigned int lastTransferRate; unsigned int lastTransferRate;
uint64_t totalBytesDownloaded; uint64_t totalBytesDownloaded;
SGPath tlsCertificatePath;
}; };
Client::Client() : Client::Client() :
@ -120,6 +122,8 @@ Client::Client() :
d->maxPipelineDepth = 5; d->maxPipelineDepth = 5;
setUserAgent("SimGear-" SG_STRINGIZE(SIMGEAR_VERSION)); setUserAgent("SimGear-" SG_STRINGIZE(SIMGEAR_VERSION));
d->tlsCertificatePath = SGPath::fromEnv("SIMGEAR_TLS_CERT_PATH");
static bool didInitCurlGlobal = false; static bool didInitCurlGlobal = false;
static std::mutex initMutex; static std::mutex initMutex;
@ -285,6 +289,11 @@ void Client::makeRequest(const Request_ptr& r)
curl_easy_setopt(curlRequest, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curlRequest, CURLOPT_FOLLOWLOCATION, 1);
if (!d->tlsCertificatePath.isNull()) {
const auto utf8 = d->tlsCertificatePath.utf8Str();
curl_easy_setopt(curlRequest, CURLOPT_CAINFO, utf8.c_str());
}
if (!d->proxy.empty()) { if (!d->proxy.empty()) {
curl_easy_setopt(curlRequest, CURLOPT_PROXY, d->proxy.c_str()); curl_easy_setopt(curlRequest, CURLOPT_PROXY, d->proxy.c_str());
curl_easy_setopt(curlRequest, CURLOPT_PROXYPORT, d->proxyPort); curl_easy_setopt(curlRequest, CURLOPT_PROXYPORT, d->proxyPort);