X-Git-Url: http://Server1/repobrowser/?p=xestiaab%2F.git;a=blobdiff_plain;f=source%2FfrmNewAccount.cpp;h=9d0873e0da908139a2ff52cd4e0cb3ee7c83da1a;hp=e3202234695699a425e5154626cc923d2de76078;hb=ce32889b3a42670bfbc3bbb87a689ae79e889e68;hpb=a73019906500e3a0fc306a61e4b7975f79725866 diff --git a/source/frmNewAccount.cpp b/source/frmNewAccount.cpp index e320223..9d0873e 100644 --- a/source/frmNewAccount.cpp +++ b/source/frmNewAccount.cpp @@ -22,588 +22,544 @@ #include #include -#include "carddav/carddav.h" +#if defined(__WIN32__) +#include +#include "common/win32ssl.h" +#endif + #include "common/dirs.h" +#include "common/svrdlist.h" #include "frmInvalidSSLCertificate.h" +DEFINE_EVENT_TYPE(UPDATERESULTS); +DEFINE_EVENT_TYPE(RUNCARDDAV2TEST); + +BEGIN_EVENT_TABLE(frmNewAccount, wxDialog) +EVT_COMMAND(wxID_ANY, UPDATERESULTS, frmNewAccount::UpdateResults) +EVT_COMMAND(wxID_ANY, RUNCARDDAV2TEST, frmNewAccount::RunCardDAV2Test) +END_EVENT_TABLE() + frmNewAccount::frmNewAccount( wxWindow* parent ) : frmNewAccountADT( parent ) { - btnPrevious->Disable(); + + // Disable the previous button upon form creation. + + btnPrevious->Disable(); + } void frmNewAccount::CheckAccountName( wxCommandEvent& event ) { - wxString CheckAccName = txtAccountName->GetValue(); + // Check that the account name is valid. + + wxString CheckAccName = txtAccountName->GetValue(); - if ((txtAccountName->IsEmpty() && PageSeek == 2) || CheckAccName.Len() < 4){ + if ((txtAccountName->IsEmpty() && PageSeek == 2) || CheckAccName.Len() < 4){ - btnNext->Disable(); + btnNext->Disable(); - } else { + } else { - btnNext->Enable(); + btnNext->Enable(); - } + } } void frmNewAccount::ProcessPrevious( wxCommandEvent& event ) { - PageSeek--; + + // Go to the previous page. + + PageSeek--; - if (PageSeek == 0){ + if (PageSeek == 0){ - // Currently at the Connection test screen. + // Currently at the Connection test screen. - //tbkAccount->ChangeSelection(0); - tabConn->Hide(); - tabFinish->Hide(); - tabType->Show(); - szrNewAccount->RecalcSizes(); + tabConn->Hide(); + tabFinish->Hide(); + tabType->Show(); + szrNewAccount->RecalcSizes(); - btnPrevious->Disable(); - btnNext->Enable(); + btnPrevious->Disable(); + btnNext->Enable(); - } else if (PageSeek == 1){ + } else if (PageSeek == 1){ - if (cmbServerType->GetCurrentSelection() == 0){ + if (cmbServerType->GetCurrentSelection() == 0){ - tabConn->Hide(); - tabFinish->Hide(); - tabType->Show(); - PageSeek = 0; - btnPrevious->Disable(); - btnNext->Enable(); - btnNext->SetLabel(_("Next >")); - return; + tabConn->Hide(); + tabFinish->Hide(); + tabType->Show(); + PageSeek = 0; + btnPrevious->Disable(); + btnNext->Enable(); + btnNext->SetLabel(_("Next >")); + return; - } - - // Currently at the Finish screen. + } + + // Currently at the Finish screen. - tabType->Hide(); - tabConn->Show(); - tabFinish->Hide(); - szrNewAccount->RecalcSizes(); + tabType->Hide(); + tabConn->Show(); + tabFinish->Hide(); + szrNewAccount->RecalcSizes(); - btnNext->SetLabel(_("Next >")); - btnNext->Enable(); + btnNext->SetLabel(_("Next >")); + btnNext->Enable(); - } + } } void frmNewAccount::ProcessNext( wxCommandEvent& event ) { - PageSeek++; + + // Go to the next page or setup the new account. + + PageSeek++; - if (PageSeek == 1){ + if (PageSeek == 1){ - if (cmbServerType->GetCurrentSelection() == 0){ + if (cmbServerType->GetCurrentSelection() == 0){ - tabType->Hide(); - tabConn->Hide(); - tabFinish->Show(); - PageSeek = 2; - btnPrevious->Enable(); - szrNewAccount->RecalcSizes(); - btnNext->Disable(); - btnNext->SetLabel(_("Finish")); - return; + tabType->Hide(); + tabConn->Hide(); + tabFinish->Show(); + PageSeek = 2; + btnPrevious->Enable(); + szrNewAccount->RecalcSizes(); + btnNext->Disable(); + btnNext->SetLabel(_("Finish")); + return; - } - - btnNext->Disable(); - - bool ServerResult = FALSE; - bool ServerAction = FALSE; - bool UseSSL = TRUE; - wxString ServerMessage; - - // Connection test screen. - - tabType->Hide(); - tabConn->Show(); - tabFinish->Hide(); - szrNewAccount->RecalcSizes(); - btnPrevious->Enable(); - - // Reset screen. - - lblServerConnResult->SetLabel(wxT("")); - lblServerResponse->SetLabel(wxT("")); - lblServerSSLResult->SetLabel(wxT("")); - lblServerSSLValid->SetLabel(wxT("")); - lblAbleToLoginResult->SetLabel(wxT("")); - lblCardDAVSupportResult->SetLabel(wxT("")); - - // Spawn a thread and check if server supports CardDAV. - - CardDAV CardDAVConn; - - lblServerConnResult->SetLabel(_("Testing...")); - - UseSSL = chkUseSSL->GetValue(); - CardDAVConn.SetupConnection(txtServerAddress->GetValue(), - wxAtoi(txtServerPort->GetValue()), - txtUsername->GetValue(), - txtPassword->GetValue(), - UseSSL); - CardDAVConn.SetupResultBools(&ServerResult, &ServerAction); + } - // Verify SSL trust first before doing anything. - - if (UseSSL == TRUE){ - - CURLcode sslcode = CardDAVConn.SSLVerifyTest(); - - if (sslcode == CURLE_OK){ - - - - } else if (sslcode == CURLE_SSL_CACERT || sslcode == CURLE_SSL_CONNECT_ERROR){ - - // Certificate is more than likely a self-signed or - // expired certificate so display the invalid - // SSL certificate message. - - // Setup the data to be sent in the wxPostEvent command. - - //SSLInvalidCertNotifObj SSLICNProcData; - - //bool *PauseMode = new bool; - int SSLResult; - //QRNotif qrn; - - //*PauseMode = TRUE; - //qrn.QResponse = &SSLResult; - //qrn.PausePtr = PauseMode; - - //SSLICNProcData.CertCollection = CardDAVConn.GetSSLVerifyResults(); - //SSLICNProcData.QRNotifData = &qrn; - //SSLICNProcData.AccountName = _("New account"); - - frmInvalidSSLCertificate *frmICPtr = new frmInvalidSSLCertificate(this); - - frmICPtr->LoadDataNew(CardDAVConn.GetSSLVerifyResults(), txtServerAddress->GetValue()); - frmICPtr->ShowModal(); - - //wxCommandEvent event(INVALIDSSLCERT); - //event.SetClientData(&SSLICNProcData); - //wxPostEvent(this->GetParent(), event); - - /*timespec n1, n2; + // Check if server address matches against the dangerous list. + // Bring up warning message if it does. - // Fall asleep until we get an response. + if (CheckDangerousList(txtServerAddress->GetValue())){ - n1.tv_sec = 0; - n1.tv_nsec = 250000000L;*/ - - SSLResult = frmICPtr->GetResult(); - - // Clean up before processing response. - - delete frmICPtr; - frmICPtr = NULL; - - // Process the response from the user. - - if (SSLResult == 1){ - - // Accept the Certificate. - - CardDAVConn.AllowSelfSignTest(TRUE); - - } else if (SSLResult == 2){ - - // Reject the certificate, abort the task and mark as failed. - - lblServerConnResult->SetLabel(_("Failed")); - lblConnectionResultText->SetLabel(_("An error occured whilst connnecting: ") + CardDAVConn.GetErrorMessage() + wxString::Format(wxT(" (%i)\n%s"), sslcode, CardDAVConn.GetErrorBuffer().mb_str())); - return; - - } - - //frmInvalidSSLCertificate *frmICPtr = new frmInvalidSSLCertificate(this); - - //frmICPtr->LoadDataNew(CardDAVConn.GetSSLVerifyResults(), txtServerAddress->GetValue()); - //frmICPtr->ShowModal(); - - - } else { - - // Something else happened. Stop the process and - // display an error message instead. - - lblServerConnResult->SetLabel(_("Failed")); - lblConnectionResultText->SetLabel(_("An error occured whilst connnecting: ") + CardDAVConn.GetErrorMessage() + wxString::Format(wxT(" (%i)\n%s"), sslcode, CardDAVConn.GetErrorBuffer().mb_str())); + int MessageBoxResult = wxMessageBox(_("The server with the address given does not support the CardDAV protocol properly and shouldn't be used.\n\nData loss is very likely.\n\nDo you still want to continue using this server?"), _("Server warning"), wxYES_NO, this); + + if (MessageBoxResult == wxNO){ + PageSeek--; return; - } - + } - - std::thread ConnTest(&CardDAV::Connect, &CardDAVConn); - - ConnTest.join(); - - if (ServerResult == FALSE){ - - lblServerConnResult->SetLabel(_("Failed")); - return; - - } else { - - lblServerConnResult->SetLabel(_("Connected")); - - } - - if (CardDAVConn.CanDoSSL() == TRUE){ - - lblServerSSLResult->SetLabel(_("Used")); - - } else { - - lblServerSSLResult->SetLabel(_("Not Used")); - lblServerSSLValid->SetLabel(_("Not Applicable")); - - } - - if (CardDAVConn.SSLVerify() == TRUE && CardDAVConn.CanDoSSL() == TRUE){ - - lblServerSSLValid->SetLabel(_("Verified")); - - } else if (CardDAVConn.SSLVerify() == FALSE && CardDAVConn.CanDoSSL() == TRUE && CardDAVConn.IsSelfSigned() == TRUE){ - - lblServerSSLValid->SetLabel(_("Verified (user)")); - - } else if (CardDAVConn.SSLVerify() == FALSE && CardDAVConn.CanDoSSL() == TRUE) { - - lblServerSSLValid->SetLabel(_("Unable to verify")); - - } + + btnNext->Disable(); - if (CardDAVConn.CanDoCardDAV() == TRUE){ - - lblCardDAVSupportResult->SetLabel(_("Supported")); - - } else { - - lblCardDAVSupportResult->SetLabel(_("Unsupported")); - - } + bool ServerResult = FALSE; + bool ServerAction = FALSE; + bool UseSSL = TRUE; + wxString ServerMessage; - if (CardDAVConn.AbleToLogin() == TRUE){ - - lblAbleToLoginResult->SetLabel(_("Yes")); - - } else { - - lblAbleToLoginResult->SetLabel(_("No")); - - } + // Connection test screen. - // Get the address to process CardDAV requests. + tabType->Hide(); + tabConn->Show(); + tabFinish->Hide(); + szrNewAccount->RecalcSizes(); + btnPrevious->Disable(); - ServerPrefix = CardDAVConn.GetDefaultAddressBookURL(); + // Reset screen. - if (CardDAVConn.HasValidResponse() == TRUE){ - - lblServerResponse->SetLabel(_("Yes")); - - } else { - - lblServerResponse->SetLabel(_("No")); - - } + lblServerConnResult->SetLabel(wxT("")); + lblServerResponse->SetLabel(wxT("")); + lblServerSSLResult->SetLabel(wxT("")); + lblServerSSLValid->SetLabel(wxT("")); + lblAbleToLoginResult->SetLabel(wxT("")); + lblCardDAVSupportResult->SetLabel(wxT("")); + + // Depending on account type, run the test. - if (ServerResult == TRUE && CardDAVConn.HasValidResponse() == TRUE && - //CardDAVConn.CanDoSSL() == TRUE && CardDAVConn.SSLVerify() == TRUE && - CardDAVConn.CanDoCardDAV() == TRUE && CardDAVConn.AbleToLogin() == TRUE){ - - btnNext->Enable(); - - lblConnectionResultText->SetLabel(_("Click on Next to set the account name.")); - - } else { - - lblConnectionResultText->SetLabel(_("A problem has occured whilst connecting to the CardDAV server.\nPlease review the above information and change the server details if needed.\nIf there are still problems, please speak to your system administrator(s).")); - - } + if (cmbServerType->GetCurrentSelection() == 1){ + wxCommandEvent RunTest(RUNCARDDAV2TEST); + wxPostEvent(this, RunTest); + } - } else if (PageSeek == 2){ + } else if (PageSeek == 2){ - // Finish screen. + // Finish screen. - tabType->Hide(); - tabConn->Hide(); - tabFinish->Show(); - szrNewAccount->RecalcSizes(); + tabType->Hide(); + tabConn->Hide(); + tabFinish->Show(); + szrNewAccount->RecalcSizes(); - btnNext->Disable(); - btnNext->SetLabel(_("Finish")); - if (txtAccountName->IsEmpty() && PageSeek == 2){ - btnNext->Disable(); - } else { - btnNext->Enable(); - } + btnNext->Disable(); + btnNext->SetLabel(_("Finish")); + + if (txtAccountName->IsEmpty() && PageSeek == 2){ + + btnNext->Disable(); + + } else { + + btnNext->Enable(); + + } - } else if (PageSeek == 3){ + } else if (PageSeek == 3){ - // Finished. + // Finished. - wxString XestiaABPrefDirectory; - wxString XestiaABDirectory; - wxString AccountSettingsFile; - //wxFile ASFile; - wxString RandomNumberSuffix = wxString::Format(wxT("%i"), rand() % 32767); - bool DirectoryCreated = FALSE; + wxString XestiaABPrefDirectory; + wxString XestiaABDirectory; + wxString AccountSettingsFile; + //wxFile ASFile; + + srand(time(0)); + int RandomNumber = rand() % 32767; + wxString RandomNumberSuffix = wxString::Format(wxT("%i"), RandomNumber); + bool DirectoryCreated = FALSE; #if defined(__HAIKU__) - //preffilename = wxT("noo"); + //preffilename = wxT("noo"); #elif defined(__WIN32__) - XestiaABPrefDirectory = GetUserPrefDir(); - XestiaABDirectory = GetUserDir(); + XestiaABPrefDirectory = GetUserPrefDir(); + XestiaABDirectory = GetUserDir(); - AccountSettingsFile = XestiaABPrefDirectory + wxT("accounts"); + AccountSettingsFile = XestiaABPrefDirectory + wxT("accounts"); - // Open the file for writing. + // Open the file for writing. - wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile); + wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile); - // Check if account name already exists and return an error message - // if this is the case. + // Check if account name already exists and return an error message + // if this is the case. - wxString AccountName; - long itemindex = 0; - bool ContinueAcc; - ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); + wxString AccountName; + long itemindex = 0; + bool ContinueAcc; + ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); - while (ContinueAcc){ + while (ContinueAcc){ - if (txtAccountName->GetValue() == AccountName){ + if (txtAccountName->GetValue() == AccountName){ - wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR); - return; + wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR); + return; - } + } - cfgfile->SetPath(wxT("/")); - ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); - } + } - if (cmbServerType->GetCurrentSelection() == 1){ + if (cmbServerType->GetCurrentSelection() == 1){ - // Create the account directory. + // Create the account directory. - wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; - if (wxMkdir(XestiaABDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ + if (wxMkdir(XestiaABDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ - DirectoryCreated = TRUE; + DirectoryCreated = TRUE; - } + } - if (DirectoryCreated == TRUE){ + if (DirectoryCreated == TRUE){ - WriteAccountDetails(cfgfile, wxT("CardDAV"), DirectoryName); + WriteAccountDetails(cfgfile, wxT("CardDAV"), DirectoryName); - } else { + } else { - wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); - return; + wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); + return; - } + } - } else if (cmbServerType->GetCurrentSelection() == 0){ + } else if (cmbServerType->GetCurrentSelection() == 0){ - // Create the account directory. + // Create the account directory. - wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; - if (wxMkdir(XestiaABDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".local"), 0740) == TRUE){ + if (wxMkdir(XestiaABDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".local"), 0740) == TRUE){ - DirectoryCreated = TRUE; + DirectoryCreated = TRUE; - } + } - if (DirectoryCreated == TRUE){ + if (DirectoryCreated == TRUE){ - WriteAccountDetails(cfgfile, wxT("Local"), DirectoryName); + WriteAccountDetails(cfgfile, wxT("Local"), DirectoryName); - } else { + } else { - wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); - return; + wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); + return; - } + } - } + } - delete cfgfile; - cfgfile = NULL; + delete cfgfile; + cfgfile = NULL; - ReloadAccountConfig = TRUE; + *ReloadAccountConfig = TRUE; #else - XestiaABPrefDirectory = GetUserPrefDir(); - XestiaABDirectory = GetUserDir(); + XestiaABPrefDirectory = GetUserPrefDir(); + XestiaABDirectory = GetUserDir(); - AccountSettingsFile = XestiaABPrefDirectory + wxT("accounts"); + AccountSettingsFile = XestiaABPrefDirectory + wxT("accounts"); - // Open the file for writing. + // Open the file for writing. - wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile); + wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile); - // Check if account name already exists and return an error message - // if this is the case. + // Check if account name already exists and return an error message + // if this is the case. - wxString AccountName; - long itemindex = 0; - bool ContinueAcc; - ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); + wxString AccountName; + long itemindex = 0; + bool ContinueAcc; + ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); - while (ContinueAcc){ + while (ContinueAcc){ - if (txtAccountName->GetValue() == AccountName){ + if (txtAccountName->GetValue() == AccountName){ - wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR); - return; + wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR); + return; - } + } - cfgfile->SetPath(wxT("/")); - ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); - } + } - if (cmbServerType->GetCurrentSelection() == 1){ + if (cmbServerType->GetCurrentSelection() == 1){ - // Create the account directory. + // Create the account directory. - wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; - if (wxMkdir(XestiaABDirectory + wxT("/accounts/") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ + if (wxMkdir(XestiaABDirectory + wxT("/accounts/") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ - DirectoryCreated = TRUE; + DirectoryCreated = TRUE; - } + } - if (DirectoryCreated == TRUE){ + if (DirectoryCreated == TRUE){ - WriteAccountDetails(cfgfile, wxT("CardDAV"), DirectoryName); + WriteAccountDetails(cfgfile, wxT("CardDAV"), DirectoryName); - } else { + } else { - wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); - return; + wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); + return; - } + } - } else if (cmbServerType->GetCurrentSelection() == 0){ + } else if (cmbServerType->GetCurrentSelection() == 0){ - // Create the account directory. + // Create the account directory. - wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; - if (wxMkdir(XestiaABDirectory + wxT("/accounts/") + DirectoryName + wxT(".local"), 0740) == TRUE){ + if (wxMkdir(XestiaABDirectory + wxT("/accounts/") + DirectoryName + wxT(".local"), 0740) == TRUE){ - DirectoryCreated = TRUE; + DirectoryCreated = TRUE; - } + } - if (DirectoryCreated == TRUE){ + if (DirectoryCreated == TRUE){ - WriteAccountDetails(cfgfile, wxT("Local"), DirectoryName); + WriteAccountDetails(cfgfile, wxT("Local"), DirectoryName); - } else { + } else { - wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); - return; + wxMessageBox(_("An error occured whilst creating the account directory."), _("Cannot create account directory")); + return; - } + } - } + } - delete cfgfile; - cfgfile = NULL; + delete cfgfile; + cfgfile = NULL; - ReloadAccountConfig = TRUE; + *ReloadAccountConfig = TRUE; #endif - this->Close(); + this->Close(); - } + } } void frmNewAccount::WriteAccountDetails(wxFileConfig *cfgfilein, wxString AccountType, wxString DirectoryName){ - cfgfilein->SetPath(txtAccountName->GetValue()); - cfgfilein->Write(wxT("address"), txtServerAddress->GetValue()); - cfgfilein->Write(wxT("port"), txtServerPort->GetValue()); - cfgfilein->Write(wxT("username"), txtUsername->GetValue()); - cfgfilein->Write(wxT("password"), txtPassword->GetValue()); - cfgfilein->Write(wxT("prefix"), ServerPrefix); - cfgfilein->Write(wxT("accountdir"), DirectoryName); + // Write the new account details. + + cfgfilein->SetPath(txtAccountName->GetValue()); + cfgfilein->Write(wxT("address"), txtServerAddress->GetValue()); + cfgfilein->Write(wxT("port"), txtServerPort->GetValue()); + cfgfilein->Write(wxT("username"), txtUsername->GetValue()); + cfgfilein->Write(wxT("password"), txtPassword->GetValue()); + cfgfilein->Write(wxT("prefix"), ServerPrefix); + cfgfilein->Write(wxT("accountdir"), DirectoryName); - if (chkUseSSL->GetValue() == TRUE){ + if (chkUseSSL->GetValue() == TRUE){ - cfgfilein->Write(wxT("ssl"), wxT("true")); + cfgfilein->Write(wxT("ssl"), wxT("true")); - } else { + } else { - cfgfilein->Write(wxT("ssl"), wxT("false")); + cfgfilein->Write(wxT("ssl"), wxT("false")); - } + } - cfgfilein->Write(wxT("refresh"), wxT("1800")); - cfgfilein->Write(wxT("type"), AccountType); + cfgfilein->Write(wxT("refresh"), wxT("1800")); + cfgfilein->Write(wxT("type"), AccountType); } void frmNewAccount::CloseWindow( wxCommandEvent& event ) { - ReloadAccountConfig = FALSE; - this->Close(); + + // Close the window. + + *ReloadAccountConfig = FALSE; + this->Close(); + } void frmNewAccount::UpdateRequirements( wxCommandEvent& event ) { - // Update the options. + // Update the options. - if (cmbServerType->GetCurrentSelection() == 1){ + if (cmbServerType->GetCurrentSelection() == 1){ - txtServerAddress->Enable(); - txtServerPort->Enable(); - txtUsername->Enable(); - txtPassword->Enable(); - chkUseSSL->Enable(); + txtServerAddress->Enable(); + txtServerPort->Enable(); + txtUsername->Enable(); + txtPassword->Enable(); + chkUseSSL->Enable(); - } else if (cmbServerType->GetCurrentSelection() == 0){ + } else if (cmbServerType->GetCurrentSelection() == 0){ - txtServerAddress->Disable(); - txtServerPort->Disable(); - txtUsername->Disable(); - txtPassword->Disable(); - chkUseSSL->Disable(); + txtServerAddress->Disable(); + txtServerPort->Disable(); + txtUsername->Disable(); + txtPassword->Disable(); + chkUseSSL->Disable(); - } + } } +void frmNewAccount::UpdateResults( wxCommandEvent& event ) +{ + + NewAccountResult *ResultDataPointer = static_cast(event.GetClientData()); + NewAccountResult ResultData = (*ResultDataPointer); + + delete(ResultDataPointer); + ResultDataPointer = nullptr; + bool ServerResult = true; + + // Process the result if the server connected. + + if (ResultData.Connected == false){ + lblServerConnResult->SetLabel(_("Failed")); + ServerResult = false; + } else { + lblServerConnResult->SetLabel(_("Success")); + } + + // Check the result if the server gave a valid response. + + if (ResultData.ValidResponse == false){ + lblServerResponse->SetLabel(_("No")); + ServerResult = false; + } else { + lblServerResponse->SetLabel(_("Yes")); + } + + // Check the result if the server uses SSL. + + if (ResultData.SSLStatus == false){ + lblServerSSLResult->SetLabel(_("No")); + } else { + lblServerSSLResult->SetLabel(_("Yes")); + } + + // Check the server has a valid SSL certificate. + + switch(ResultData.SSLVerified){ + case COSSL_VERIFIED: + lblServerSSLValid->SetLabel(_("Verified")); + break; + case COSSL_VERIFIED_USER: + lblServerSSLValid->SetLabel(_("Verified (User)")); + break; + case COSSL_UNABLETOVERIFY: + lblServerSSLValid->SetLabel(_("Unable to verify")); + ServerResult = false; + break; + case COSSL_NOTAPPLICABLE: + lblServerSSLValid->SetLabel(_("Not applicable")); + break; + } + + // Check if able to log into the server. + + if (ResultData.AuthPassed == false){ + lblAbleToLoginResult->SetLabel(_("No")); + ServerResult = false; + } else { + lblAbleToLoginResult->SetLabel(_("Yes")); + } + + // Check if server has CardDAV support. + + if (ResultData.CanProcess == false){ + lblCardDAVSupportResult->SetLabel(_("No")); + ServerResult = false; + } else { + lblCardDAVSupportResult->SetLabel(_("Yes")); + } + + if (ServerResult == false){ + lblConnectionResultText->SetLabel(wxString::Format(_("An error occured whilst connecting: %s"), ResultData.ErrorMessage)); + } else { + btnNext->Enable(); + lblConnectionResultText->SetLabel(_("Click on Next to set the account name.")); + } + + btnPrevious->Enable(); + +} + void frmNewAccount::SetupPointers(bool *ReloadAccountInc){ + + // Setup the pointers for the new account window. + + ReloadAccountConfig = ReloadAccountInc; - ReloadAccountConfig = ReloadAccountInc; - +} + +void frmNewAccount::SetErrorMessageLabel(){ + + lblConnectionResultText->SetLabel(_("A problem has occured whilst connecting to the CardDAV server.\nPlease review the above information and change the server details if needed.\nIf there are still problems, please speak to your system administrator(s).")); + } \ No newline at end of file