X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Factmgr%2FfrmActivityMgr.cpp;h=9c1e2a41514dbc8b96eba05e340529daf88ddacd;hb=ff65774611d82f2bdbb6cb5c34829cc2e922cf68;hp=ebb425c8d1a57d584a5811b14a7efbe881715202;hpb=049b4010cd6ff8663503ab22f1c51f72a3c3af8f;p=xestiaab%2F.git diff --git a/source/actmgr/frmActivityMgr.cpp b/source/actmgr/frmActivityMgr.cpp index ebb425c..9c1e2a4 100644 --- a/source/actmgr/frmActivityMgr.cpp +++ b/source/actmgr/frmActivityMgr.cpp @@ -38,9 +38,6 @@ #include "../vcard/vcard34conv.h" #include "../vcard/vcard.h" -#ifndef FRMACTIVITYMGR_H -#define FRMACTIVITYMGR_H - DEFINE_EVENT_TYPE(ACTMGR_RESUMEPROC); DEFINE_EVENT_TYPE(ACTMGR_TOGGLECONN); DEFINE_EVENT_TYPE(ACTMGR_STARTTIMER); @@ -326,16 +323,15 @@ void frmActivityMgr::ProcessTasksThread() while (ExitLoop == FALSE){ - ConnHandle.SetUploadMode(TRUE); - ConnHandle.SetupData(wxT("PUT"), StringURLIter->second, StringDataIter->second); - ConnHandle.SetEditMode(EditMode); - ConnHandle.ProcessData(); - - int ErrorCode = ConnHandle.GetResultCode(); + // Verify that we have a trusted SSL connection first. - if (ErrorCode != 0){ + int ErrorCode = ConnHandle.SSLVerifyTest(); + + if (ErrorCode != CURLE_OK){ - if (ErrorCode == 60 || ErrorCode == 51){ + if (ErrorCode == CURLE_SSL_CACERT || + ErrorCode == CURLE_PEER_FAILED_VERIFICATION || + ErrorCode == CURLE_SSL_CONNECT_ERROR){ // Invalid SSL certificate so bring up a dialog to the user // explaining what has happened and the options available. @@ -364,13 +360,38 @@ void frmActivityMgr::ProcessTasksThread() frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); + + } + +#elif defined(__WIN32__) + + BOOL ModifiedCertificateData; + CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(&ConnHandle, (HWND)frmMainPtrGet->GetHandle()); + + if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){ + wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog")); + } + + if (ModifiedCertificateData == FALSE){ + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateContextPointer()); + iter->second = 2; + break; + + } else { + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + } + #else // Setup the data to be sent in the wxPostEvent command. SSLInvalidCertNotifObj SSLICNProcData; + SSLCertCollection certcol = ConnHandle.GetSSLVerifyResults(); + bool *PauseMode = new bool; QRNotif qrn; @@ -447,13 +468,31 @@ void frmActivityMgr::ProcessTasksThread() #if defined(__APPLE__) frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); - + +#elif defined(__WIN32__) + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + #else frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); #endif + ConnHandle.SetUploadMode(TRUE); + ConnHandle.SetupData(wxT("PUT"), StringURLIter->second, StringDataIter->second); + ConnHandle.SetEditMode(EditMode); + ConnHandle.ProcessData(); + + int ErrorCode = ConnHandle.GetResultCode(); + + if (ErrorCode != CURLE_OK){ + + iter->second = 4; + break; + + } + // Add contact to the ETag DB. ConnHandle.GetServerETagValueThread(); @@ -461,7 +500,6 @@ void frmActivityMgr::ProcessTasksThread() ETagDBPtr->AddETag(ContactFilename, ETagServer, ETagServer); iter->second = 4; - CardDAVIter->second = NULL; break; } @@ -511,18 +549,14 @@ void frmActivityMgr::ProcessTasksThread() bool ExitLoop = FALSE; while (ExitLoop == FALSE){ + + int ErrorCode = ConnHandle.SSLVerifyTest(); - ConnHandle.SetUploadMode(TRUE); - ConnHandle.SetupData(wxT("PUT"), StringURLIter->second, StringDataIter->second); - ConnHandle.SetEditMode(EditMode); - ConnHandle.GetServerETagValueThread(); - ETagServer = ConnHandle.ETagValueResult(); - - int ErrorCode = ConnHandle.GetResultCode(); - - if (ErrorCode != 0){ + if (ErrorCode != CURLE_OK){ - if (ErrorCode == 60 || ErrorCode == 51){ + if (ErrorCode == CURLE_SSL_CACERT || + ErrorCode == CURLE_PEER_FAILED_VERIFICATION || + ErrorCode == CURLE_SSL_CONNECT_ERROR){ // Invalid SSL certificate so bring up a dialog to the user // explaining what has happened and the options available. @@ -552,12 +586,36 @@ void frmActivityMgr::ProcessTasksThread() frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); } + +#elif defined(__WIN32__) + + BOOL ModifiedCertificateData; + CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(&ConnHandle, (HWND)frmMainPtrGet->GetHandle()); + + if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){ + wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog")); + } + + if (ModifiedCertificateData == FALSE){ + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateContextPointer()); + iter->second = 2; + break; + + } else { + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + + } + #else // Setup the data to be sent in the wxPostEvent command. SSLInvalidCertNotifObj SSLICNProcData; + SSLCertCollection certcol = ConnHandle.GetSSLVerifyResults(); + bool *PauseMode = new bool; QRNotif qrn; @@ -585,14 +643,14 @@ void frmActivityMgr::ProcessTasksThread() // Accept the certificate. Write the certificate into the account // directory (as server.crt) - will overwrite old certificate. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); - WriteServerCertificate(AccountDir, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); + WriteServerCertificate(AccountDir, ConnHandle.GetSSLVerifyResults()); } else if (SSLResult == 2){ // Reject the certificate, abort the task and mark as failed. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetSSLVerifyResults()); iter->second = 2; break; @@ -627,13 +685,30 @@ void frmActivityMgr::ProcessTasksThread() #if defined(__APPLE__) frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); - + +#elif defined(__WIN32__) + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + #else - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); #endif + ConnHandle.SetUploadMode(TRUE); + ConnHandle.SetupData(wxT("PUT"), StringURLIter->second, StringDataIter->second); + ConnHandle.SetEditMode(EditMode); + ConnHandle.GetServerETagValueThread(); + ETagServer = ConnHandle.ETagValueResult(); + + int ErrorCode = ConnHandle.GetResultCode(); + + if (ErrorCode != CURLE_OK){ + iter->second = 2; + break; + } + // Compare the ETag with the Server ETag. if (ETagOriginal != ETagServer){ @@ -779,18 +854,13 @@ void frmActivityMgr::ProcessTasksThread() while (ExitLoop == FALSE){ - ConnHandle.SetUploadMode(FALSE); - ConnHandle.SetupData(wxT("DELETE"), ContactFilename, wxT("")); - ConnHandle.ProcessData(); - SSLCertCollection certcol = ConnHandle.GetCertificateData(); - - // Check if any errors have occured whilst getting the data. - - int ErrorCode = ConnHandle.GetResultCode(); - - if (ErrorCode != 0){ + int ErrorCode = ConnHandle.SSLVerifyTest(); + + if (ErrorCode != CURLE_OK){ - if (ErrorCode == 60 || ErrorCode == 51){ + if (ErrorCode == CURLE_SSL_CACERT || + ErrorCode == CURLE_PEER_FAILED_VERIFICATION || + ErrorCode == CURLE_SSL_CONNECT_ERROR){ // Invalid SSL certificate so bring up a dialog to the user // explaining what has happened and the options available. @@ -820,12 +890,36 @@ void frmActivityMgr::ProcessTasksThread() frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); } + +#elif defined(__WIN32__) + + BOOL ModifiedCertificateData; + CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(&ConnHandle, (HWND)frmMainPtrGet->GetHandle()); + + if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){ + wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog")); + } + + if (ModifiedCertificateData == FALSE){ + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateContextPointer()); + iter->second = 2; + break; + + } else { + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + + } + #else // Setup the data to be sent in the wxPostEvent command. SSLInvalidCertNotifObj SSLICNProcData; + SSLCertCollection certcol = ConnHandle.GetSSLVerifyResults(); + bool *PauseMode = new bool; QRNotif qrn; @@ -860,14 +954,14 @@ void frmActivityMgr::ProcessTasksThread() // Accept the certificate. Write the certificate into the account // directory (as server.crt) - will overwrite old certificate. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); - WriteServerCertificate(AccountDir, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); + WriteServerCertificate(AccountDir, ConnHandle.GetSSLVerifyResults()); } else if (SSLResult == 2){ // Reject the certificate, abort the task and mark as failed. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetSSLVerifyResults()); iter->second = 2; break; @@ -902,13 +996,31 @@ void frmActivityMgr::ProcessTasksThread() #if defined(__APPLE__) frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); - + +#elif defined(__WIN32__) + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + #else - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); #endif + ConnHandle.SetUploadMode(FALSE); + ConnHandle.SetupData(wxT("DELETE"), ContactFilename, wxT("")); + ConnHandle.ProcessData(); + + SSLCertCollection certcol = ConnHandle.GetCertificateData(); + + // Check if any errors have occured whilst getting the data. + + int ErrorCode = ConnHandle.GetResultCode(); + + if (ErrorCode != CURLE_OK){ + iter->second = 2; + break; + } ETagDBPtr->RemoveETag(ContactFilename); @@ -1012,21 +1124,16 @@ void frmActivityMgr::ProcessTasksThread() std::map *SCListData = NULL; while (ExitLoop == FALSE){ - - ServerContactList = ConnHandle.GetContactList(SyncTokenLoad.ToUTF8()); - SSLCertCollection certcol = ConnHandle.GetCertificateData(); - - // Create a pointer for the std::map. - - SCListData = &ServerContactList.ListData; // Check if any errors have occured whilst getting the data. - int ErrorCode = ConnHandle.GetResultCode(); + int ErrorCode = ConnHandle.SSLVerifyTest(); - if (ErrorCode != 0){ + if (ErrorCode != CURLE_OK){ - if (ErrorCode == 60 || ErrorCode == 51){ + if (ErrorCode == CURLE_SSL_CACERT || + ErrorCode == CURLE_PEER_FAILED_VERIFICATION || + ErrorCode == CURLE_SSL_CONNECT_ERROR){ // Invalid SSL certificate so bring up a dialog to the user // explaining what has happened and the options available. @@ -1056,12 +1163,35 @@ void frmActivityMgr::ProcessTasksThread() frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); } + +#elif defined(__WIN32__) + + BOOL ModifiedCertificateData; + CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(&ConnHandle, (HWND)frmMainPtrGet->GetHandle()); + + if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){ + wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog")); + } + + if (ModifiedCertificateData == FALSE){ + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateContextPointer()); + iter->second = 2; + break; + + } else { + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + + } #else // Setup the data to be sent in the wxPostEvent command. SSLInvalidCertNotifObj SSLICNProcData; + SSLCertCollection certcol = ConnHandle.GetSSLVerifyResults(); + bool *PauseMode = new bool; QRNotif qrn; @@ -1096,14 +1226,14 @@ void frmActivityMgr::ProcessTasksThread() // Accept the certificate. Write the certificate into the account // directory (as server.crt) - will overwrite old certificate. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); - WriteServerCertificate(AccountDir, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); + WriteServerCertificate(AccountDir, ConnHandle.GetSSLVerifyResults()); } else if (SSLResult == 2){ // Reject the certificate, abort the task and mark as failed. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetSSLVerifyResults()); iter->second = 2; break; @@ -1138,10 +1268,14 @@ void frmActivityMgr::ProcessTasksThread() #if defined(__APPLE__) frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); - + +#elif defined(__WIN32__) + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); + #else - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); #endif @@ -1158,6 +1292,23 @@ void frmActivityMgr::ProcessTasksThread() bool ContinueProcess = AccDir.GetFirst(&AccDirFilename, wxEmptyString, wxDIR_DEFAULT); + ServerContactList = ConnHandle.GetContactList(SyncTokenLoad.ToUTF8()); + + int ErrorCode = ConnHandle.GetResultCode(); + + if (ErrorCode != CURLE_OK){ + + iter->second = 4; + break; + + } + + SSLCertCollection certcol = ConnHandle.GetCertificateData(); + + // Create a pointer for the std::map. + + SCListData = &ServerContactList.ListData; + // Process the server data. if (SCListData != NULL){ @@ -2076,6 +2227,4 @@ void frmActivityMgr::UpdateStatusLabel(wxCommandEvent& event){ } -} - -#endif \ No newline at end of file +} \ No newline at end of file