X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;ds=sidebyside;f=source%2Factmgr%2FfrmActivityMgr.cpp;h=40ab583d8debcbc3d12f9fa5847961f35e4cd153;hb=700c6a4c98319bc09eeb5c0905a5dafac8aa61cc;hp=e60ce73d37a8932a6d51c91332bb2bcfdc91e98a;hpb=261a51c4b9015d677580aa5346b21c35e4df6283;p=xestiaab%2F.git diff --git a/source/actmgr/frmActivityMgr.cpp b/source/actmgr/frmActivityMgr.cpp index e60ce73..40ab583 100644 --- a/source/actmgr/frmActivityMgr.cpp +++ b/source/actmgr/frmActivityMgr.cpp @@ -213,7 +213,6 @@ void frmActivityMgr::ProcessTasksThread() std::map::iterator StringTaskDetailIter; std::map::iterator StringETagIter; std::map::iterator StringETagOrigIter; - std::map::iterator CardDAVIter; std::map::iterator ConnObjectIter; std::map::iterator AccountSettingsIter; std::map::iterator LongIter; @@ -235,7 +234,6 @@ void frmActivityMgr::ProcessTasksThread() // Start the animation timer if it hasn't started. - CardDAVIter = ActivityListConn.find(iter->first); ConnObjectIter = ActivityListConnObject.find(iter->first); TypeIter = ActivityListType.find(iter->first); StringETagIter = ActivityListETag.find(iter->first); @@ -247,18 +245,6 @@ void frmActivityMgr::ProcessTasksThread() // Setup the CardDAV object. - CardDAV ConnHandle; - - ConnHandle.SetupConnection(AccountSettingsIter->second.Address, - AccountSettingsIter->second.Port, - AccountSettingsIter->second.Username, - AccountSettingsIter->second.Password, - AccountSettingsIter->second.SSL, - AccountSettingsIter->second.Prefix, - AccountSettingsIter->second.Dir); - ConnHandle.SetupVariables(&ActivityList, iter->first); - ConnHandle.SetupResultBools(&BlankBool, &BlankBool); - // 0 = Queued. // 1 = Processing. // 2 = Failed. @@ -273,8 +259,6 @@ void frmActivityMgr::ProcessTasksThread() XABPreferences PrefData(GetUserPrefDir()); if (iter->second == 0){ - - //CardDAVIter->second. // Wait for process to finish. @@ -460,7 +444,7 @@ void frmActivityMgr::ProcessTasksThread() #else - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateData()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnObjectIter->second->BuildSSLCollection()); #endif @@ -472,177 +456,7 @@ void frmActivityMgr::ProcessTasksThread() break; } - /*while (ExitLoop == FALSE){ - - // Verify that we have a trusted SSL connection first. - - int ErrorCode = ConnHandle.SSLVerifyTest(); - - if (ErrorCode != CURLE_OK){ - - 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. - - // Stop all the timers. - - frmMainPtrGet->PauseAllTimers(); - - int SSLResult; - -#if defined(__APPLE__) - - // Bring up the trust panel and display the SSL certificate dialog. - - SSLResult = DisplayTrustPanel(ConnHandle.GetTrustObject(), AccountNameFriendly); - - // Update the SSL account with the trust object. - - if (SSLResult != NSOKButton){ - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetTrustObject()); - iter->second = 2; - break; - - } else { - - 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; - - *PauseMode = TRUE; - qrn.QResponse = &SSLResult; - qrn.PausePtr = PauseMode; - - SSLICNProcData.CertCollection = certcol; - SSLICNProcData.QRNotifData = &qrn; - SSLICNProcData.AccountName = AccountNameFriendly; - - wxCommandEvent event(INVALIDSSLCERT); - event.SetClientData(&SSLICNProcData); - wxPostEvent(frmMainPtrGet, event); - - while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); - SleepFor(250000000); - } - - // Process the response from the user. - - if (SSLResult == 1){ - - // 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()); - - } else if (SSLResult == 2){ - - // Reject the certificate, abort the task and mark as failed. - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetCertificateData()); - iter->second = 2; - break; - - } - -#endif - - // Resume all the timers. - - frmMainPtrGet->ResumeAllTimers(); - ExitLoop = TRUE; - - } else { - - iter->second = 2; - break; - - } - - } else { - - ExitLoop = TRUE; - - } - - } - - if (iter->second == 2 || iter->second == 3 || iter->second == 4){ - break; - } - -#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(); - ETagServer = ConnHandle.ETagValueResult();*/ - - // TODO: Get the entity tag for the new contact. + // Get the entity tag for the new contact. COServerResponse ETagGetResponse = ConnObjectIter->second->GetServerEntityTagValue(StringURLIter->second.ToStdString()); @@ -747,7 +561,6 @@ void frmActivityMgr::ProcessTasksThread() wxPostEvent(frmMainPtrGet, event); while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); SleepFor(250000000); } @@ -845,9 +658,6 @@ void frmActivityMgr::ProcessTasksThread() // Load the client data from the filename given. - //ConnHandle.GetServerContactData(); - //ServerContactData = ConnHandle.GetPageData(); - COServerResponse GetContactResponse = ConnObjectIter->second->GetContact(StringURLIter->second.ToStdString(), &ServerContactData); @@ -928,270 +738,6 @@ void frmActivityMgr::ProcessTasksThread() } - /*while (ExitLoop == FALSE){ - - int ErrorCode = ConnHandle.SSLVerifyTest(); - - if (ErrorCode != CURLE_OK){ - - 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. - - // Stop all the timers. - - frmMainPtrGet->PauseAllTimers(); - - int SSLResult; - -#if defined(__APPLE__) - - // Bring up the trust panel and display the SSL certificate dialog. - - SSLResult = DisplayTrustPanel(ConnHandle.GetTrustObject(), AccountNameFriendly); - - // Update the SSL account with the trust object. - - if (SSLResult != NSOKButton){ - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetTrustObject()); - iter->second = 2; - break; - - } else { - - 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; - - *PauseMode = TRUE; - qrn.QResponse = &SSLResult; - qrn.PausePtr = PauseMode; - - SSLICNProcData.CertCollection = certcol; - SSLICNProcData.QRNotifData = &qrn; - SSLICNProcData.AccountName = AccountNameFriendly; - - wxCommandEvent event(INVALIDSSLCERT); - event.SetClientData(&SSLICNProcData); - wxPostEvent(frmMainPtrGet, event); - - while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); - SleepFor(250000000); - } - - // Process the response from the user. - - if (SSLResult == 1){ - - // Accept the certificate. Write the certificate into the account - // directory (as server.crt) - will overwrite old certificate. - - 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.GetSSLVerifyResults()); - iter->second = 2; - break; - - } - -#endif - - // Resume all the timers. - - frmMainPtrGet->ResumeAllTimers(); - ExitLoop = TRUE; - - } else { - - iter->second = 2; - break; - - } - - } else { - - ExitLoop = TRUE; - - } - - } - - if (iter->second == 2 || iter->second == 3 || iter->second == 4){ - break; - } - -#if defined(__APPLE__) - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetTrustObject()); - -#elif defined(__WIN32__) - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetCertificateContextPointer()); - -#else - - 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){ - - // Server ETag is different from original ETag. - // This is a conflict which the user will now - // need to resolve. - - vCard Moo1; - vCard Moo2; - - frmMain *frmMainPtrGet = static_cast(frmMainPtr); - - vCard34Conv vCard34Obj; - - wxString ServerContactData; - vCard ClientData; - vCard ConvertedV4Data; - - // Load the client data from the filename given. - - ConnHandle.GetServerContactData(); - ServerContactData = ConnHandle.GetPageData(); - - // Process v3 version into v4 version. - - vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data); - - vCardConflictObj vCardProcData; - - vCardProcData.vCardLocalData = &ClientData; - vCardProcData.vCardServerData = &ConvertedV4Data; - ClientData.LoadFile(FullFilename); - - //ContactConflictEvent event(ContactConflictCmdEnv); - //event.SetData(ContactFilename, Moo1, Moo2); - - //wxPostEvent(frmMainPtrGet, event); - - // Setup Conflict Resolution Dialog. - - // Fetch Data from Server and convert. - - bool *PauseMode = new bool; - int ConflictResult; - QRNotif qrn; - - *PauseMode = TRUE; - qrn.QResponse = &ConflictResult; - qrn.PausePtr = PauseMode; - - vCardProcData.QRNotifData = &qrn; - - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); - event.SetClientData(&vCardProcData); - wxPostEvent(frmMainPtrGet, event); - - while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); - SleepFor(250000000); - } - - delete PauseMode; - PauseMode = NULL; - - //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); - - if (ConflictResult == 0){ - - // Decide Later. - - iter->second = 4; - break; - - } else if (ConflictResult == 1){ - - // Decided to use client version. - - //ConnHandle.ProcessData(); - - } else if (ConflictResult == 2){ - - // Decided to use server version. - - // Download server version. - - ConvertedV4Data.WriteFile(FullFilename); - - } - - } else { - - // Update the data to the server. - - ConnHandle.ProcessData(); - - }*/ - - // Update the ETag DB. - - //ConnHandle.GetServerETagValueThread(); - //ETagServer = ConnHandle.ETagValueResult(); - ETagGetResponse = ConnObjectIter->second->GetServerEntityTagValue(StringURLIter->second.ToStdString()); if (ETagGetResponse.RequestResult != COREQUEST_OK){ @@ -1342,136 +888,10 @@ void frmActivityMgr::ProcessTasksThread() } else { ExitLoop = true; - iter->second = 2; - break; - - } - - /*int ErrorCode = ConnHandle.SSLVerifyTest(); - - if (ErrorCode != CURLE_OK){ - - 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. - - // Stop all the timers. - - frmMainPtrGet->PauseAllTimers(); - - int SSLResult; - -#if defined(__APPLE__) - - // Bring up the trust panel and display the SSL certificate dialog. - - SSLResult = DisplayTrustPanel(ConnHandle.GetTrustObject(), AccountNameFriendly); - - // Update the SSL account with the trust object. - - if (SSLResult != NSOKButton){ - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetTrustObject()); - iter->second = 2; - break; - - } else { - - 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; - - *PauseMode = TRUE; - qrn.QResponse = &SSLResult; - qrn.PausePtr = PauseMode; - - SSLICNProcData.CertCollection = certcol; - SSLICNProcData.QRNotifData = &qrn; - SSLICNProcData.AccountName = AccountNameFriendly; - - wxCommandEvent event(INVALIDSSLCERT); - event.SetClientData(&SSLICNProcData); - wxPostEvent(frmMainPtrGet, event); - - while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); - SleepFor(250000000); - } - - // Process the response from the user. - - if (SSLResult == 1){ - - // Accept the certificate. Write the certificate into the account - // directory (as server.crt) - will overwrite old certificate. - - 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.GetSSLVerifyResults()); - iter->second = 2; - break; - - } - -#endif - - // Resume all the timers. - - frmMainPtrGet->ResumeAllTimers(); - ExitLoop = TRUE; - - } else { - - iter->second = 4; - break; - - } - - } else { - - ExitLoop = TRUE; - - }*/ + iter->second = 2; + break; + + } } @@ -1489,24 +909,9 @@ void frmActivityMgr::ProcessTasksThread() #else - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnObjectIter->second->BuildSSLCollection()); #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; - }*/ COServerResponse DeleteContactResponse = ConnObjectIter->second->DeleteContact(ContactFilename.ToStdString()); @@ -1518,7 +923,6 @@ void frmActivityMgr::ProcessTasksThread() ETagDBPtr->RemoveETag(ContactFilename); iter->second = 4; - //CardDAVIter->second = NULL; break; } @@ -1565,8 +969,6 @@ void frmActivityMgr::ProcessTasksThread() ContactListData ServerContactList; std::map vCardDownloadData; - //wxArrayString vCardDownload; - //std::map vCardDownloadData; // Get the list of vCard files locally. @@ -1612,151 +1014,118 @@ void frmActivityMgr::ProcessTasksThread() std::map ETagDBData = ETagDBPtr->GetETagData(); + COConnectResult ConnectResponse = ConnObjectIter->second->Connect(false); + bool ExitLoop = FALSE; std::map *SCListData = NULL; - while (ExitLoop == FALSE){ - - // Check if any errors have occured whilst getting the data. - - int ErrorCode = ConnHandle.SSLVerifyTest(); - - if (ErrorCode != CURLE_OK){ - - if (ErrorCode == CURLE_SSL_CACERT || - ErrorCode == CURLE_PEER_FAILED_VERIFICATION || - ErrorCode == CURLE_SSL_CONNECT_ERROR){ + while (ExitLoop == FALSE){ - // Invalid SSL certificate so bring up a dialog to the user - // explaining what has happened and the options available. + if (ConnObjectIter->second->SSLVerify() == COSSL_UNABLETOVERIFY){ - // Stop all the timers. - - frmMainPtrGet->PauseAllTimers(); + frmMainPtrGet->PauseAllTimers(); - int SSLResult; - #if defined(__APPLE__) - - // Bring up the trust panel and display the SSL certificate dialog. - - SSLResult = DisplayTrustPanel(ConnHandle.GetTrustObject(), AccountNameFriendly); - - // Update the SSL account with the trust object. - - if (SSLResult != NSOKButton){ - - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetTrustObject()); - iter->second = 2; - break; - - } else { - - 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 UsingSSLBypass = false; + int SSLResult = 0; + + // Connect again and fetch SSL certificate information. + + ConnObjectIter->second->BypassSSLVerification(true); + + COConnectResult ConnectionSSLResult = ConnObjectIter->second->Connect(false); - bool *PauseMode = new bool; - QRNotif qrn; + ConnObjectIter->second->BypassSSLVerification(false); - *PauseMode = TRUE; - qrn.QResponse = &SSLResult; - qrn.PausePtr = PauseMode; - - SSLICNProcData.CertCollection = certcol; - SSLICNProcData.QRNotifData = &qrn; - SSLICNProcData.AccountName = AccountNameFriendly; + SSLInvalidCertNotifObjString SSLICNProcData; - wxCommandEvent event(INVALIDSSLCERT); - event.SetClientData(&SSLICNProcData); - wxPostEvent(frmMainPtrGet, event); - - /*timespec n1, n2; - - // Fall asleep until we get an response. - - n1.tv_sec = 0; - n1.tv_nsec = 250000000L;*/ - - while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); - SleepFor(250000000); - } + SSLCertCollectionString certcol = ConnObjectIter->second->BuildSSLCollection(); + + bool *PauseMode = new bool; + QRNotif qrn; + + *PauseMode = TRUE; + qrn.QResponse = &SSLResult; + qrn.PausePtr = PauseMode; + + SSLICNProcData.CertCollection = certcol; + SSLICNProcData.QRNotifData = &qrn; + SSLICNProcData.AccountName = AccountNameFriendly; + + wxCommandEvent event(INVALIDSSLCERTSTRING); + event.SetClientData(&SSLICNProcData); + wxPostEvent(frmMainPtrGet, event); + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } - // Process the response from the user. + // Process the response from the user. - if (SSLResult == 1){ + if (SSLResult == 1){ - // Accept the certificate. Write the certificate into the account - // directory (as server.crt) - will overwrite old certificate. + // Accept the Certificate. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); - WriteServerCertificate(AccountDir, ConnHandle.GetSSLVerifyResults()); + UsingSSLBypass = true; + ConnObjectIter->second->BypassSSLVerification(true); + + COConnectResult TestConnectionResult = ConnObjectIter->second->Connect(true); + WriteServerCertificate(AccountDir, certcol); - } else if (SSLResult == 2){ + ConnObjectIter->second->BypassSSLVerification(false); - // Reject the certificate, abort the task and mark as failed. + } else if (SSLResult == 2){ + + // Reject the certificate, abort the task and mark as failed. - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, ConnHandle.GetSSLVerifyResults()); - iter->second = 2; - break; + iter->second = 2; + break; - } - + } + #endif - // Resume all the timers. + frmMainPtrGet->ResumeAllTimers(); + ExitLoop = true; + + } else if (ConnectResponse == COCONNECT_AUTHFAIL){ + + ConnectResponse = ConnObjectIter->second->Connect(true); + + if (ConnectResponse == COCONNECT_OK){ + + ExitLoop = true; + break; - frmMainPtrGet->ResumeAllTimers(); - ExitLoop = TRUE; - } else { - - iter->second = 4; + + ExitLoop = true; + iter->second = 2; break; - + } - + + } else if (ConnectResponse == COCONNECT_OK){ + + ConnectResponse = ConnObjectIter->second->Connect(true); + + ExitLoop = true; + break; + } else { - - ExitLoop = TRUE; - + + ExitLoop = true; + iter->second = 2; + break; + } } - - if (iter->second == 2 || iter->second == 3 || iter->second == 4){ - break; - } #if defined(__APPLE__) @@ -1768,9 +1137,13 @@ void frmActivityMgr::ProcessTasksThread() #else - frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnHandle.GetSSLVerifyResults()); + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, ConnObjectIter->second->BuildSSLCollection()); #endif + + if (iter->second == 2 || iter->second == 3 || iter->second == 4){ + break; + } // Look in directory and see which vCards to add and delete @@ -1785,63 +1158,25 @@ 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; + COContactList ServerContactList2 = ConnObjectIter->second->GetContactList(SyncTokenLoad.ToStdString()); // Process the server data. - if (SCListData != NULL){ - - for (std::map::iterator fsiter = SCListData->begin(); - fsiter != SCListData->end(); fsiter++){ - - // Check the mode of the file before adding. - - // Get the HTTP status of the file from the list. - - FileSyncData fsd = fsiter->second; - - if (fsd.DataFlag == 1){ - - // Added or modified contact. - - //vCardAdd.Add(fsiter->first, 1); - - vCardDownloadDataFileClass vCardNewData; - vCardNewData.DataType = 0; - vCardDownloadData.insert(std::make_pair(fsiter->first, vCardNewData)); - - //} else if (fsd.DataFlag == 1){ - - // Contact has been modified on the server. - - // vCardUpdateLocal.Add(fsiter->first, 1); - - } - else if (fsd.DataFlag == 2){ - - // Contact has been deleted. - - vCardDelete.Add(fsiter->first, 1); - - } - + for (std::vector::iterator ContactInfo = ServerContactList2.ListData.begin(); + ContactInfo != ServerContactList2.ListData.end(); ContactInfo++){ + + if (ContactInfo->Status == COCS_UPDATED){ + + vCardDownloadDataFileClass vCardNewData; + vCardNewData.DataType = 0; + vCardDownloadData.insert(std::make_pair(ContactInfo->Location, vCardNewData)); + + } else if (ContactInfo->Status == COCS_DELETED){ + + vCardDelete.Add(ContactInfo->Location, 1); + } - + } // Look for vCards that are missing but in the ETagDB. @@ -1865,19 +1200,18 @@ void frmActivityMgr::ProcessTasksThread() // needs to updated remotely and which needs to be // updated locally. - for (std::map::iterator srviter = SCListData->begin(); - srviter != SCListData->end(); srviter++){ - - if (ETagDBData.find(srviter->first) == ETagDBData.end()){ + for (std::vector::iterator ContactInfo = ServerContactList2.ListData.begin(); + ContactInfo != ServerContactList2.ListData.end(); ContactInfo++){ + + if (ETagDBData.find(ContactInfo->Location) == ETagDBData.end()){ continue; } - - std::map::iterator lociter = ETagDBData.find(srviter->first); - + + std::map::iterator lociter = ETagDBData.find(ContactInfo->Location); + ETagData etd = lociter->second; - FileSyncData fsd = srviter->second; - - wxString ETagSrv = fsd.ETagData; + + wxString ETagSrv = ContactInfo->Data; // Check if the local ETag value has 'DELETED' set and skip // checking this file if it does. @@ -1900,20 +1234,21 @@ void frmActivityMgr::ProcessTasksThread() vCard34Conv vCard34Obj; - wxString ServerContactData; wxString FullFilename; vCard ClientData; vCard ConvertedV4Data; + std::string ServerContactDataString; + wxString ServerContactData; + // Conflict. Bring up conflict resolution dialog. // Get the server contact data for comparison. - ConnHandle.SetServerFilename(srviter->first); - ConnHandle.GetServerContactData(); - ServerContactData = ConnHandle.GetPageData(); + ConnObjectIter->second->GetContact(ContactInfo->Location, &ServerContactDataString); + ServerContactData = wxString::FromUTF8(ServerContactDataString.c_str()); - FullFilename = CreateFilenamePath(AccountDirFinal, srviter->first); + FullFilename = CreateFilenamePath(AccountDirFinal, ContactInfo->Location); // Convert it to v4. @@ -1945,11 +1280,6 @@ void frmActivityMgr::ProcessTasksThread() event.SetClientData(&vCardProcData); wxPostEvent(frmMainPtrGet, event); - /*timespec n1, n2; - - n1.tv_sec = 0; - n1.tv_nsec = 250000000L;*/ - while (*PauseMode == TRUE){ //nanosleep(&n1, &n2); SleepFor(250000000); @@ -1971,8 +1301,8 @@ void frmActivityMgr::ProcessTasksThread() // Decided to use client version. - vCardUpdateLocal.Remove(srviter->first); - vCardUpdateRemote.Add(srviter->first, 1); + vCardUpdateLocal.Remove(ContactInfo->Location); + vCardUpdateRemote.Add(ContactInfo->Location, 1); } else if (ConflictResult == 2){ @@ -1988,7 +1318,7 @@ void frmActivityMgr::ProcessTasksThread() ConvertedV4Data.WriteFile(FullFilename); - vCardDownloadData.insert(std::make_pair(srviter->first, vCardNewData)); + vCardDownloadData.insert(std::make_pair(ContactInfo->Location, vCardNewData)); @@ -1998,7 +1328,7 @@ void frmActivityMgr::ProcessTasksThread() // Send vCard to the server. - vCardUpdateRemote.Add(srviter->first, 1); + vCardUpdateRemote.Add(ContactInfo->Location, 1); } @@ -2009,12 +1339,12 @@ void frmActivityMgr::ProcessTasksThread() if (etd.ETagOrigValue != ETagSrv){ - vCardUpdateLocal.Add(srviter->first, 1); + vCardUpdateLocal.Add(ContactInfo->Location, 1); } } - + } // Process the vCards that need to be downloaded and added/overwritten. @@ -2044,32 +1374,29 @@ void frmActivityMgr::ProcessTasksThread() // Grab the file from the server and write the contact out. vCard34Conv vCard34Obj; - - ConnHandle.SetServerFilename(additer->first); - ConnHandle.GetServerContactData(); - vCardInputData = ConnHandle.GetPageData(); + + wxString ServerContactData; + std::string ServerContactDataString; + + // Conflict. Bring up conflict resolution dialog. + + // Get the server contact data for comparison. + + ConnObjectIter->second->GetContact(additer->first.ToStdString(), &ServerContactDataString); + vCardInputData = wxString::FromUTF8(ServerContactDataString.c_str()); vCard34Obj.ConvertToV4(&vCardInputData, &ConvertedV4Data); ConvertedV4Data.WriteFile(vCardFilenameFinal); - // Update the ETagDB. - - //vCardFile.Open(vCardFilenameFinal, wxT("w")); - - //if (vCardFile.IsOpened()){ - - // vCardFile.Write(vCardOutputData, wxConvAuto()); - // vCardFile.Close(); - - //} - // Get the server ETag. wxString ServerETag; - ConnHandle.GetServerETagValueThread(); - ServerETag = ConnHandle.ETagValueResult(); - + + COServerResponse ServerEntityTag = ConnObjectIter->second->GetServerEntityTagValue(additer->first.ToStdString()); + + ServerETag = wxString::FromUTF8(ServerEntityTag.EntityTag.c_str()); + // Add to the ETag Database. ETagDBPtr->AddETag(additer->first, ServerETag, ServerETag); @@ -2093,8 +1420,10 @@ void frmActivityMgr::ProcessTasksThread() // Update the ETagDB. wxString ServerETag; - ConnHandle.GetServerETagValueThread(); - ServerETag = ConnHandle.ETagValueResult(); + + COServerResponse ServerEntityTag = ConnObjectIter->second->GetServerEntityTagValue(additer->first.ToStdString()); + + ServerETag = wxString::FromUTF8(ServerEntityTag.EntityTag.c_str()); // Add to the ETag Database. @@ -2157,10 +1486,10 @@ void frmActivityMgr::ProcessTasksThread() if (ETag == ETagOriginal && ETagDBPtr->ETagExists(vCardAdd[vi])){ // Compare the ETag with the Server ETag. - - ConnHandle.SetServerFilename(vCardAdd[vi]); - ConnHandle.GetServerETagValueThread(); - ETagServer = ConnHandle.ETagValueResult(); + + COServerResponse ServerEntityTag = ConnObjectIter->second->GetServerEntityTagValue(vCardAdd[vi].ToStdString()); + + ETagServer = wxString::FromUTF8(ServerEntityTag.EntityTag.c_str()); if (ETagOriginal != ETagServer){ @@ -2173,13 +1502,15 @@ void frmActivityMgr::ProcessTasksThread() vCard34Conv vCard34Obj; wxString ServerContactData; + std::string ServerContactDataString; vCard ClientData; vCard ConvertedV4Data; // Load the client data from the filename given. - - ConnHandle.GetServerContactData(); - ServerContactData = ConnHandle.GetPageData(); + + COServerResponse GetContactResponse = ConnObjectIter->second->GetContact(vCardAdd[vi].ToStdString(), &ServerContactDataString); + + ServerContactData = wxString::FromUTF8(ServerContactDataString.c_str()); // Process v3 version into v4 version. @@ -2191,11 +1522,6 @@ void frmActivityMgr::ProcessTasksThread() vCardProcData.vCardServerData = &ConvertedV4Data; ClientData.LoadFile(FullFilename); - //ContactConflictEvent event(ContactConflictCmdEnv); - //event.SetData(ContactFilename, Moo1, Moo2); - - //wxPostEvent(frmMainPtrGet, event); - // Setup Conflict Resolution Dialog. // Fetch Data from Server and convert. @@ -2214,11 +1540,6 @@ void frmActivityMgr::ProcessTasksThread() event.SetClientData(&vCardProcData); wxPostEvent(frmMainPtrGet, event); - /*timespec n1, n2; - - n1.tv_sec = 0; - n1.tv_nsec = 250000000L;*/ - while (*PauseMode == TRUE){ //nanosleep(&n1, &n2); SleepFor(250000000); @@ -2227,8 +1548,6 @@ void frmActivityMgr::ProcessTasksThread() delete PauseMode; PauseMode = NULL; - //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); - if (ConflictResult == 0){ // Decide Later. @@ -2240,7 +1559,7 @@ void frmActivityMgr::ProcessTasksThread() // Decided to use client version. - ConnHandle.ProcessData(); + COServerResponse EditContactResponse = ConnObjectIter->second->EditContact(vCardAdd[vi].ToStdString(), ClientData.WriteString().ToStdString()); iter->second = 4; @@ -2263,7 +1582,6 @@ void frmActivityMgr::ProcessTasksThread() wxString wxSFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]); wxString wxSCardData; wxString TaskData; - //wxString TaskURL; // Load the data from the file. @@ -2282,22 +1600,16 @@ void frmActivityMgr::ProcessTasksThread() vCard34Conv vCard34Obj; vCard34Obj.ConvertToV3(wxSFilename, &TaskData); - - // Setup the URL address. - - //TaskURL = StringTaskDetailIter->second + wxT("/") + vCardAdd[vi]; // Upload the data to the server. - - ConnHandle.SetUploadMode(TRUE); - ConnHandle.SetupData(wxT("PUT"), vCardAdd[vi], TaskData); - ConnHandle.ProcessData(); + + COServerResponse AddContactResponse = ConnObjectIter->second->AddContact(vCardAdd[vi].ToStdString(), TaskData.ToStdString()); // Get the Server ETag and put it in the ETag database. - - ConnHandle.SetServerFilename(vCardAdd[vi]); - ConnHandle.GetServerETagValueThread(); - ETagServer = ConnHandle.ETagValueResult(); + + COServerResponse EntityTagResponse = ConnObjectIter->second->GetServerEntityTagValue(vCardAdd[vi].ToStdString()); + + ETagServer = wxString::FromUTF8(EntityTagResponse.EntityTag.c_str()); ETagDBPtr->AddETag(vCardAdd[vi], ETagServer, ETagServer); @@ -2313,19 +1625,19 @@ void frmActivityMgr::ProcessTasksThread() frmMain *frmMainPtrGet = (frmMain *)frmMainPtr; - //ContactConflictEvent event(ContactConflictCmdEnv); - //event.SetData(ContactFilename, Moo1, Moo2); - vCard34Conv vCard34Obj; + std::string ServerContactDataString; wxString ServerContactData; vCard ClientData; vCard ConvertedV4Data; // Load the client data from the filename given. - ConnHandle.GetServerContactData(); - ServerContactData = ConnHandle.GetPageData(); + COServerResponse GetContactResponse = ConnObjectIter->second->GetContact(vCardAdd[vi].ToStdString(), &ServerContactDataString); + + ServerContactData = wxString::FromUTF8(ServerContactDataString.c_str()); + ClientData.LoadFile(FullFilename); // Process v3 version into v4 version. @@ -2350,22 +1662,14 @@ void frmActivityMgr::ProcessTasksThread() wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); event.SetClientData(&vCardProcData); wxPostEvent(frmMainPtrGet, event); - - /*timespec n1, n2; - - n1.tv_sec = 0; - n1.tv_nsec = 250000000L;*/ - + while (*PauseMode == TRUE){ - //nanosleep(&n1, &n2); SleepFor(250000000); } delete PauseMode; PauseMode = NULL; - //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); - if (ConflictResult == 0){ // Decide Later. @@ -2377,9 +1681,7 @@ void frmActivityMgr::ProcessTasksThread() // Decided to use client version. - ConnHandle.ProcessData(); - //ETagServer = CardDAVIter->second.GetServerETagValueThread(); - //ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); + COServerResponse EditContactResponse = ConnObjectIter->second->EditContact(vCardAdd[vi].ToStdString(), ClientData.WriteString().ToStdString()); iter->second = 4; @@ -2402,7 +1704,6 @@ void frmActivityMgr::ProcessTasksThread() wxString wxSFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]); wxString wxSCardData; wxString TaskData; - //wxString TaskURL; // Load the data from the file. @@ -2421,23 +1722,14 @@ void frmActivityMgr::ProcessTasksThread() vCard34Conv vCard34Obj; vCard34Obj.ConvertToV3(wxSFilename, &TaskData); - - // Setup the URL address. - - //TaskURL = StringTaskDetailIter->second + wxT("/") + vCardAdd[vi]; // Upload the data to the server. - - ConnHandle.SetUploadMode(TRUE); - ConnHandle.SetupData(wxT("PUT"), vCardAdd[vi], TaskData); - ConnHandle.ProcessData(); + + COServerResponse AddContactResponse = ConnObjectIter->second->AddContact(vCardAdd[vi].ToStdString(), TaskData.ToStdString()); // Get the Server ETag and put it in the ETag database. - ConnHandle.SetServerFilename(vCardAdd[vi]); - ConnHandle.GetServerETagValueThread(); - ETagServer = ConnHandle.ETagValueResult(); - + COServerResponse EntityTagResponse = ConnObjectIter->second->GetServerEntityTagValue(vCardAdd[vi].ToStdString()); ETagDBPtr->AddETag(vCardAdd[vi], ETagServer, ETagServer); @@ -2473,9 +1765,7 @@ void frmActivityMgr::ProcessTasksThread() if (deliter->second == wxT("DELETED")){ - ConnHandle.SetUploadMode(FALSE); - ConnHandle.SetupData(wxT("DELETE"), deliter->first, wxT("")); - ConnHandle.ProcessDataThread(); + ConnObjectIter->second->DeleteContact(deliter->first.ToStdString()); // Delete the ETag as the file has now been deleted. @@ -2486,7 +1776,7 @@ void frmActivityMgr::ProcessTasksThread() } for (std::list::iterator removeetagiter = DeleteList.begin(); - removeetagiter != DeleteList.end(); removeetagiter++){ + removeetagiter != DeleteList.end(); removeetagiter++){ ETagDBPtr->RemoveETag(*removeetagiter); @@ -2494,7 +1784,7 @@ void frmActivityMgr::ProcessTasksThread() // Write out the update server sync token. - wxString ServerSyncToken = ServerContactList.SyncToken; + wxString ServerSyncToken = wxString::FromUTF8(ServerContactList2.SyncToken.c_str()); ServerSyncToken.Trim(); @@ -2539,49 +1829,18 @@ void frmActivityMgr::ProcessTasksThread() } else { // Update the data to the server. - - ConnHandle.ProcessData(); + iter->second = 4; continue; } - /*timespec n1, n2; - - n1.tv_sec = 0; - n1.tv_nsec = 250000000L;*/ - while (iter->second == 1){ SleepFor(125000000); - //nanosleep(&n1, &n2); } - /*if ((iter->second == 4 && TypeIter->second == 0) || - (iter->second == 8 && TypeIter->second == 0)){ - - AccountDir = StringAccountIter->second; - ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); - - ConnHandle.GetServerETagValueThread(); - ETagServer = ConnHandle.ETagValueResult(); - ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); - - } - - if ((iter->second == 4 && TypeIter->second == 1) || - (iter->second == 8 && TypeIter->second == 1)){ - - AccountDir = StringAccountIter->second; - ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); - - ConnHandle.GetServerETagValueThread(); - ETagServer = ConnHandle.ETagValueResult(); - ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); - - }*/ - break; } @@ -2597,17 +1856,12 @@ void frmActivityMgr::ProcessTasksThread() wxCommandEvent eventp(ACTMGR_STARTTIMER); wxPostEvent(this, eventp); - - //AnimationTimer.StartAnimation(); - //ActListProcTimer.Start(); } wxCommandEvent event(ACTMGR_STARTPROCESSTIMER); wxPostEvent(this, event); - //ActProcessTimer.Start(); - } void frmActivityMgr::ProcessTasks() @@ -2753,10 +2007,6 @@ void frmActivityMgr::UpdateStatusLabel(wxCommandEvent& event){ lstActivity->SetItem(actmgrudata->ItemIndex, 2, actmgrudata->ItemLabel); - /*if (!actmgrudata->ItemDes.IsEmpty()){ - lstActivity->SetItem(actmgrudata->ItemIndex, 0, actmgrudata->ItemDes); - }*/ - delete actmgrudata; actmgrudata = NULL;