dav/config.c

changeset 73
41e88442ad4e
parent 43
03076907b58a
child 74
da079dc0724c
--- 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");

mercurial