X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcarddav%2Fcarddav-sslverify.cpp;h=c082a90066dfb13855bf0d581094b802fe84dd4e;hb=274f4cd4b1b656e0ad4119e3969c9ccf59a2f209;hp=beac074208d479bbb6cfacf00f72c38950311ffe;hpb=f91028f262f047c01376a51eec8138647f5abd3d;p=xestiaab%2F.git diff --git a/source/carddav/carddav-sslverify.cpp b/source/carddav/carddav-sslverify.cpp index beac074..c082a90 100644 --- a/source/carddav/carddav-sslverify.cpp +++ b/source/carddav/carddav-sslverify.cpp @@ -41,7 +41,7 @@ CURLcode CardDAV::SSLVerifyTest(){ CURL *conn; CURL *connssldata; - CURLcode conncode; + CURLcode conncode = CURLE_OK; wxString ServerAddressURL; wxString ServerAuth; wxString ServerAddressSSL; @@ -49,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; @@ -82,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 @@ -99,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(); @@ -116,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){ @@ -134,6 +157,8 @@ CURLcode CardDAV::SSLVerifyTest(){ } +#endif + *ServerResult = FALSE; } else {