int CardDAV::HTTPErrorCode;\r
wxString CardDAV::ErrorMessage;\r
SSLCertCollection CardDAV::VerifyCertCollection;\r
+bool CardDAV::AllowSelfSign;\r
\r
CardDAV::CardDAV(){\r
ServerPort = 8080;\r
ValidResponse = FALSE;\r
HasCalDAVSupport = FALSE;\r
SSLCertCol.SuccessCode = 0;\r
+ AllowSelfSign = FALSE;\r
\r
AbortConnection = FALSE;\r
UploadMode = FALSE;\r
\r
}\r
\r
+bool CardDAV::IsSelfSigned(){\r
+\r
+ return AllowSelfSign;\r
+\r
+}\r
+\r
/*\r
\r
size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *stream){\r
curl_easy_setopt(connssldata, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
curl_easy_setopt(connssldata, CURLOPT_CERTINFO, 1);\r
curl_easy_setopt(connssldata, CURLOPT_VERBOSE, 1L);\r
- //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, FALSE);\r
- //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, FALSE);\r
curl_easy_setopt(connssldata, CURLOPT_ERRORBUFFER, curlerrbuffer);\r
curl_easy_setopt(connssldata, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
curl_easy_setopt(connssldata, CURLOPT_WRITEDATA, &PageData);\r
curl_easy_setopt(connssldata, CURLOPT_WRITEHEADER, &PageHeader);\r
- //curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYPEER, FALSE);\r
- //curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYHOST, FALSE);\r
+ curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYPEER, 0L);\r
+ curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYHOST, 0L);\r
\r
CURLcode certfetchcode;\r
\r
return VerifyCertCollection;\r
}\r
\r
+void CardDAV::AllowSelfSignTest(bool AllowSelfSignIn){\r
+ AllowSelfSign = AllowSelfSignIn;\r
+}\r
+\r
bool CardDAV::Connect(){\r
\r
PageData.Clear();\r
AuthPassed = TRUE;\r
AbortConnection = FALSE;\r
\r
- CURL *conn;\r
- CURLcode conncode;\r
+ CURL *conn;\r
+ CURLcode conncode;\r
wxString ServerAddressURL;\r
wxString ServerAuth;\r
wxString ServerAddressSSL;\r
\r
} else if (conncode == CURLE_SSL_CACERT){\r
\r
- // Post message saying SSL certificate is invalid and \r
-\r
+ // Post message saying SSL certificate is invalid. \r
\r
curl_easy_getinfo(conn, CURLINFO_CERTINFO, &ptr.certdata);\r
\r
curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+ \r
+ if (AllowSelfSign == TRUE){\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0L);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0L);\r
+ }\r
\r
conncode = (curl_easy_perform(conn));\r
\r
}\r
\r
*ServerResult = TRUE;\r
+ ValidResponse = TRUE;\r
AuthPassed = TRUE;\r
SSLStatus = TRUE;\r
return TRUE;\r
AuthPassed = TRUE;\r
AbortConnection = FALSE;\r
\r
- CURL *conn;\r
- CURLcode conncode;\r
+ CURL *conn;\r
+ CURLcode conncode;\r
wxString ServerAddressURL;\r
wxString ServerAuth;\r
wxString ServerAddressSSL;\r
\r
ServerAuth = ServerUser + wxT(":") + ServerPass;\r
\r
- wxString SAURLPrincipals = ServerAddressURL + wxT("principals/");\r
- wxString SAURLPrincipalURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
- wxString SAURLAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+ wxString SAURLPrincipals;\r
+ wxString SAURLPrincipalURL;\r
+ wxString SAURLAddressURL;\r
+ \r
+ if (ServerSSL){\r
+ \r
+ SAURLPrincipals = ServerAddressSSL + wxT("principals/");\r
+ SAURLPrincipalURL = ServerAddressSSL;\r
+ SAURLAddressURL = ServerAddressSSL;\r
+ \r
+ } else {\r
+ \r
+ SAURLPrincipals = ServerAddressNormal + wxT("principals/");\r
+ SAURLPrincipalURL = ServerAddressNormal;\r
+ SAURLAddressURL = ServerAddressNormal;\r
+ \r
+ }\r
+ \r
wxString FinalPrefix;\r
\r
struct UploadDataStruc UploadData;\r
curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
-\r
- if (UploadMode == TRUE){\r
-\r
- UploadData.readptr = &ServerUploadData;\r
- UploadData.sizeleft = ServerUploadData.Len();\r
- curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
- curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
- curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd);\r
\r
+ if (AllowSelfSign == TRUE){\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0L);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0L);\r
}\r
\r
conncode = (curl_easy_perform(conn));\r
\r
*ServerResult = TRUE;\r
AuthPassed = TRUE;\r
+ ValidResponse = TRUE;\r
SSLStatus = TRUE;\r
- return wxT("");\r
\r
} else {\r
\r
\r
if (ServerSSL){\r
\r
- curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipalURL.mb_str(wxConvUTF8));\r
curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query2);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query2));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd2);\r
\r
- if (UploadMode == TRUE){\r
-\r
- UploadData.readptr = &ServerUploadData;\r
- UploadData.sizeleft = ServerUploadData.Len();\r
- curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
- curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
- curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
- \r
+ if (AllowSelfSign == TRUE){\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0L);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0L);\r
}\r
\r
conncode = (curl_easy_perform(conn));\r
*ServerResult = TRUE;\r
AuthPassed = TRUE;\r
SSLStatus = TRUE;\r
- return wxT("");\r
\r
} else {\r
\r
curl_easy_strerror(conncode)); \r
\r
*ServerResult = FALSE;\r
+ ValidResponse = FALSE;\r
\r
curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
\r
\r
fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
GetHTTPCode());\r
+ \r
+ ValidResponse = FALSE;\r
+ \r
return wxT("");\r
\r
} else {\r
\r
fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
curl_easy_strerror(conncode));\r
+ \r
+ ValidResponse = FALSE;\r
+ \r
return wxT("");\r
\r
}\r
\r
if (ServerSSL){\r
\r
- curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLAddressURL.mb_str(wxConvUTF8));\r
curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query3);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query3));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd3);\r
\r
- if (UploadMode == TRUE){\r
-\r
- UploadData.readptr = &ServerUploadData;\r
- UploadData.sizeleft = ServerUploadData.Len();\r
- curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
- curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
- curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
- \r
+ if (AllowSelfSign == TRUE){\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0L);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0L);\r
}\r
\r
conncode = (curl_easy_perform(conn));\r
*ServerResult = TRUE;\r
AuthPassed = TRUE;\r
SSLStatus = TRUE;\r
- return wxT("");\r
\r
} else {\r
\r
curl_easy_strerror(conncode)); \r
\r
*ServerResult = FALSE;\r
+ ValidResponse = FALSE;\r
\r
curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
\r
\r
fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
GetHTTPCode());\r
+ \r
+ ValidResponse = FALSE;\r
+ \r
return wxT("");\r
\r
} else {\r
\r
fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
curl_easy_strerror(conncode));\r
+ \r
+ ValidResponse = FALSE;\r
+ \r
return wxT("");\r
\r
}\r