Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added LANG to the SaveString function of ContactDataObject
[xestiaab/.git] / source / carddav / carddav-sslverify.cpp
index dd0a749..c082a90 100644 (file)
@@ -30,6 +30,8 @@
 
 CURLcode CardDAV::SSLVerifyTest(){
 
+       // Verify the SSL information.
+       
        PageData.Clear();
        PageHeader.Clear();
 
@@ -39,7 +41,7 @@ CURLcode CardDAV::SSLVerifyTest(){
 
        CURL *conn;
        CURL *connssldata;
-       CURLcode conncode;
+       CURLcode conncode = CURLE_OK;
        wxString ServerAddressURL;
        wxString ServerAuth;
        wxString ServerAddressSSL;
@@ -47,19 +49,6 @@ CURLcode CardDAV::SSLVerifyTest(){
 
        conn = curl_easy_init();
 
-       /*struct CardDAVCURLPasser {
-
-               CardDAV *Data;
-               bool HeaderMode = TRUE;
-
-       } CardDAVHeader, CardDAVFooter;
-
-       CardDAVHeader.Data = this;
-       CardDAVHeader.HeaderMode = TRUE;
-
-       CardDAVFooter.Data = this;
-       CardDAVFooter.HeaderMode = FALSE;*/
-
        wxString Data1;
        wxString Data2;
 
@@ -80,13 +69,33 @@ CURLcode CardDAV::SSLVerifyTest(){
                curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));
                curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);
                curl_easy_setopt(conn, CURLOPT_VERBOSE, 1L);
-               //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, FALSE);
-               //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, FALSE);
                curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, curlerrbuffer);
                curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);
                curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);
                curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);
 
+#if defined(__APPLE__) || defined(__WIN32__)
+               
+               SetConnectionObject(conn);
+       
+#else
+               
+               if (ServerAccount != ""){
+               
+                       wxString ServerCertFilename = GetAccountDir(ServerAccount, TRUE);
+
+                       if (wxFile::Exists(ServerCertFilename) == TRUE){
+               
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);
+                               curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));
+               
+                       }
+               
+               }
+
+#endif
+               
                conncode = (curl_easy_perform(conn));
 
                // Check if the SSL certificate is valid or self-signed or some other
@@ -97,8 +106,16 @@ CURLcode CardDAV::SSLVerifyTest(){
                        // Connection is OK. Do nothing.
 
                        *ServerResult = TRUE;
+                       
+#if !defined(__APPLE__) && !defined(__WIN32__)
+                       
+                       VerifyCertCollection = BuildSSLCollection(conn);
 
-               } else if (conncode == CURLE_SSL_CACERT || conncode == CURLE_SSL_CONNECT_ERROR){
+#endif
+                       
+               } else if (conncode == CURLE_SSL_CACERT || 
+                               conncode == CURLE_SSL_CONNECT_ERROR ||
+                               conncode == CURLE_PEER_FAILED_VERIFICATION){
 
                        connssldata = curl_easy_init();
 
@@ -114,10 +131,18 @@ CURLcode CardDAV::SSLVerifyTest(){
                        curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYPEER, 0L);
                        curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYHOST, 0L);
 
+#if defined(__APPLE__) || defined(__WIN32__)
+                       
+                        SetConnectionObject(connssldata);
+                       
+#endif
+                       
                        CURLcode certfetchcode;
 
                        certfetchcode = (curl_easy_perform(connssldata));
 
+#if !defined(__APPLE__) && !defined(__WIN32__) 
+
                        VerifyCertCollection = BuildSSLCollection(connssldata);
 
                        if (certfetchcode == CURLE_OK){
@@ -132,6 +157,8 @@ CURLcode CardDAV::SSLVerifyTest(){
 
                        }
 
+#endif
+
                        *ServerResult = FALSE;
 
                } else {
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy