--- a/dav/config.c Tue Dec 30 13:24:03 2014 +0100 +++ b/dav/config.c Thu Jan 29 11:43:41 2015 +0100 @@ -38,6 +38,7 @@ #include <libidav/utils.h> #define xstreq(a,b) xmlStrEqual(BAD_CAST a, BAD_CAST b) +#define xstrEQ(a,b) !xmlStrcasecmp(BAD_CAST a, BAD_CAST b) #ifdef _WIN32 #define ENV_HOME getenv("USERPROFILE") @@ -115,6 +116,7 @@ repo->encrypt_content = false; repo->decrypt_name = false; repo->decrypt_content = true; + repo->ssl_version = CURL_SSLVERSION_DEFAULT; while(node) { if(node->type == XML_ELEMENT_NODE) { char *value = util_xml_get_text(node); @@ -148,6 +150,28 @@ repo->decrypt_content = util_getboolean(value); } else if(xstreq(node->name, "decrypt-name")) { repo->decrypt_name = util_getboolean(value); + } else if(xstreq(node->name, "ssl-version")) { + if(xstrEQ(value, "TLSv1")) { + repo->ssl_version = CURL_SSLVERSION_TLSv1; + } else if(xstrEQ(value, "SSLv2")) { + repo->ssl_version = CURL_SSLVERSION_SSLv2; + } else if(xstrEQ(value, "SSLv3")) { + repo->ssl_version = CURL_SSLVERSION_SSLv3; + } +#if LIBCURL_VERSION_MAJOR >= 7 +#if LIBCURL_VERSION_MINOR >= 34 + else if(xstrEQ(value, "TLSv1.0")) { + repo->ssl_version = CURL_SSLVERSION_TLSv1_0; + } else if(xstrEQ(value, "TLSv1.1")) { + repo->ssl_version = CURL_SSLVERSION_TLSv1_1; + } else if(xstrEQ(value, "TLSv1.2")) { + repo->ssl_version = CURL_SSLVERSION_TLSv1_2; + } +#endif +#endif + else { + fprintf(stderr, "Unknown ssl version: %s\n", value); + } } else if(xstreq(node->name, "encrypt") || xstreq(node->name, "store-key-property") || xstreq(node->name, "decrypt")) { fprintf(stderr, "Error: config.xml contains deprecated elements\n"); fprintf(stderr, "The elements <encrypt>, <decrypt> and <store-key-property> are removed\n");