#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);
DEFINE_EVENT_TYPE(ACTMGR_STARTPROCESSTIMER);
DEFINE_EVENT_TYPE(ACTMGR_STOPPROCESSTIMER);
DEFINE_EVENT_TYPE(ACTMGR_UPDATESTATUSLABEL);
+DEFINE_EVENT_TYPE(ACTMGR_STARTANIMATIONTIMER);
BEGIN_EVENT_TABLE(frmActivityMgr, wxWindow)
EVT_COMMAND(wxID_ANY, ACTMGR_RESUMEPROC, frmActivityMgr::ResumeProcessing)
EVT_COMMAND(wxID_ANY, ACTMGR_STARTPROCESSTIMER, frmActivityMgr::StartProcessTimer)
EVT_COMMAND(wxID_ANY, ACTMGR_STOPPROCESSTIMER, frmActivityMgr::StopProcessTimer)
EVT_COMMAND(wxID_ANY, ACTMGR_UPDATESTATUSLABEL, frmActivityMgr::UpdateStatusLabel)
+ EVT_COMMAND(wxID_ANY, ACTMGR_STARTANIMATIONTIMER, frmActivityMgr::StartAnimationTimer)
END_EVENT_TABLE()
frmActivityMgr::frmActivityMgr( wxWindow* parent )
}
+ if (ApplicationSleepMode == TRUE){
+
+ return;
+
+ }
+
std::map<int,int>::iterator TypeIter;
std::map<int,wxString>::iterator StringIter;
std::map<int,wxString>::iterator StringDataIter;
continue;
}
+ wxCommandEvent StartAnimationEvent(ACTMGR_STARTANIMATIONTIMER);
+
+ wxPostEvent(this, StartAnimationEvent);
+
+ // Start the animation timer if it hasn't started.
+
CardDAVIter = ActivityListConn.find(iter->first);
TypeIter = ActivityListType.find(iter->first);
StringETagIter = ActivityListETag.find(iter->first);
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.
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.GetCertificateData();
+ SSLCertCollection certcol = ConnHandle.GetSSLVerifyResults();
bool *PauseMode = new bool;
QRNotif qrn;
#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();
ETagDBPtr->AddETag(ContactFilename, ETagServer, ETagServer);
iter->second = 4;
- CardDAVIter->second = NULL;
break;
}
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.
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.GetCertificateData();
+ SSLCertCollection certcol = ConnHandle.GetSSLVerifyResults();
bool *PauseMode = new bool;
QRNotif qrn;
// 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;
#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){
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.
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;
// 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;
#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);
std::map<wxString,FileSyncData> *SCListData = NULL;
while (ExitLoop == FALSE){
-
- ServerContactList = ConnHandle.GetContactList(SyncTokenLoad.ToUTF8());
- SSLCertCollection certcol = ConnHandle.GetCertificateData();
-
- // Create a pointer for the std::map<wxString,FileSyncData>.
-
- 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.
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;
// 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;
#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
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<wxString,FileSyncData>.
+
+ SCListData = &ServerContactList.ListData;
+
// Process the server data.
if (SCListData != NULL){
//ActListProcTimer.Start();
}
-
+
wxCommandEvent event(ACTMGR_STARTPROCESSTIMER);
wxPostEvent(this, event);
void frmActivityMgr::ProcessTasks()
{
-
+
std::thread ProcessThread(&frmActivityMgr::ProcessTasksThread, this);
ProcessThread.detach();
wxCommandEvent connevent(CONNSTAT_UPDATE);
- if (SleepMode == FALSE){
+ if (ApplicationSleepMode == FALSE){
connevent.SetInt(1);
- SleepMode = TRUE;
+ ApplicationSleepMode = TRUE;
+ mnuSleepMode->Check(true);
} else {
connevent.SetInt(0);
- SleepMode = FALSE;
+ ApplicationSleepMode = FALSE;
+ mnuSleepMode->Check(false);
+
+ wxCommandEvent event(ACTMGR_STARTTIMER);
+ wxPostEvent(this, event);
+
+ wxCommandEvent eventp(ACTMGR_STARTPROCESSTIMER);
+ wxPostEvent(this, eventp);
}
}
+void frmActivityMgr::SleepMode( wxCommandEvent &event ){
+
+ wxCommandEvent connevent(ACTMGR_TOGGLECONN);
+
+ wxPostEvent(this, connevent);
+
+}
+
void frmActivityMgr::WriteServerCertificate(wxString AccountName, SSLCertCollection SSLCertInc){
wxString ServerCertFinal;
}
+void frmActivityMgr::StartAnimationTimer(wxCommandEvent& event){
+
+ AnimationTimer.StartAnimation();
+
+}
+
void frmActivityMgr::UpdateStatusLabel(wxCommandEvent& event){
ActivityMgrLabelUpdate *actmgrudata = (ActivityMgrLabelUpdate*)event.GetClientData();
}
-}
-
-#endif
\ No newline at end of file
+}
\ No newline at end of file