Use this to set additional options for CURL that may be required for particular circumstances.
static int curloptfunction(void *curl) {
CURLcode rc = CURLE_OK;
if (curl == NULL) { return rc; }
if (arg_sslversion != NULL) {
char *urlp = NULL;
rc = curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &urlp);
if (rc != CURLE_OK) { return rc; }
if (urlp != NULL && strstr(urlp, "authentication.business.gov.au") != NULL) {
printf("Setting CURLOPT_SSLVERSION to '%s'\n", arg_sslversion);
if (_streqi(arg_sslversion, "default")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT);
} else if (_streqi(arg_sslversion, "tlsv1")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
} else if (_streqi(arg_sslversion, "sslv2")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv2);
} else if (_streqi(arg_sslversion, "sslv3")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3);
} else if (_streqi(arg_sslversion, "tlsv1_0")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0);
} else if (_streqi(arg_sslversion, "tlsv1_1")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);
} else if (_streqi(arg_sslversion, "tlsv1_2")) {
rc = curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
} else {
printf("***Setting CURLOPT_SSLVERSION FAILED (ignoring)***");
}
}
}
if (arg_sslcainfo != NULL) {
struct stat sb;
if (stat(arg_sslcainfo, &sb) == 0) {
rc = curl_easy_setopt(curl, CURLOPT_CAINFO, arg_sslcainfo);
}
}
return rc;
}