X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2FfrmEditAccount.cpp;h=488362589f5fc393029faa5296e255c989195240;hb=7463b9071a5aa395e59737cbdfd3445832ff016c;hp=6a718e7c985da77fb436036bfd43a1af7d026c87;hpb=f84a6f54c4acd0d84be4c4f9d0d7eb1cdb101b41;p=xestiaab%2F.git diff --git a/source/frmEditAccount.cpp b/source/frmEditAccount.cpp index 6a718e7..4883625 100644 --- a/source/frmEditAccount.cpp +++ b/source/frmEditAccount.cpp @@ -1,5 +1,25 @@ +// frmEditAccount.cpp - Edit Account form. +// +// (c) 2012-2015 Xestia Software Development. +// +// This file is part of Xestia Address Book. +// +// Xestia Address Book is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Address Book is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Address Book. If not, see + #include "frmEditAccount.h" +#include "frmInvalidSSLCertificate.h" #include "carddav/carddav.h" +#include "common/svrblist.h" frmEditAccount::frmEditAccount( wxWindow* parent ) : @@ -65,6 +85,68 @@ void frmEditAccount::DetectAddressBook( wxCommandEvent& event ) CDavObj.SetupConnection(txtAddress->GetValue(), (int)PortNum, txtUsername->GetValue(), txtPassword->GetValue(), UseSSL); + // Verify SSL trust first before doing anything. + + if (UseSSL == TRUE){ + + CURLcode sslcode = CDavObj.SSLVerifyTest(); + + if (sslcode == CURLE_OK){ + + // Certificate is okay. Do nothing. + + } 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. + + int SSLResult; + + frmInvalidSSLCertificate *frmICPtr = new frmInvalidSSLCertificate(this); + + frmICPtr->LoadDataNew(CDavObj.GetSSLVerifyResults(), txtAddress->GetValue()); + frmICPtr->ShowModal(); + + SSLResult = frmICPtr->GetResult(); + + // Clean up before processing response. + + delete frmICPtr; + frmICPtr = NULL; + + // Process the response from the user. + + if (SSLResult == 1){ + + // Accept the Certificate. + + CDavObj.AllowSelfSignTest(TRUE); + + } else if (SSLResult == 2){ + + // Reject the certificate, abort the task and mark as failed. + + wxMessageBox(_("An error occured whilst connnecting: ") + CDavObj.GetErrorMessage() + wxString::Format(wxT(" (%i)\n%s"), sslcode, CDavObj.GetErrorBuffer().mb_str()), _("Failed"), wxOK+wxICON_ERROR); + return; + + } + + + } else { + + // Something else happened. Stop the process and + // display an error message instead. + + wxMessageBox(_("An error occured whilst connnecting: ") + CDavObj.GetErrorMessage() + wxString::Format(wxT(" (%i)\n%s"), sslcode, CDavObj.GetErrorBuffer().mb_str()), _("Failed"), wxOK+wxICON_ERROR); + return; + + } + + } + // Attempt to extract the CardDAV address. wxString ABURL = CDavObj.GetDefaultAddressBookURL(); @@ -75,13 +157,16 @@ void frmEditAccount::DetectAddressBook( wxCommandEvent& event ) void frmEditAccount::LoadPointers( wxFileConfig* cfgin ){ + // Setup the account configuration file pointer. + cfgfile = cfgin; } void frmEditAccount::LoadSettings( wxString AccNameIn ){ - // Get the data from the accounts settings file. + // Get the data from the accounts settings file and + // fill in the account fields. AccName = AccNameIn; long itemindex = 0; @@ -137,6 +222,19 @@ void frmEditAccount::LoadSettings( wxString AccNameIn ){ void frmEditAccount::UpdateSettings( wxCommandEvent& event ) { + // Check if server address matches against the blacklist. + // Bring up warning message if it does. + + if (CheckBlacklist(txtAddress->GetValue())){ + + 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){ + return; + } + + } + // Update the settings for the account. long itemindex = 0; @@ -186,32 +284,6 @@ void frmEditAccount::UpdateSettings( wxCommandEvent& event ) cfgfile->DeleteEntry(wxT("refresh"), FALSE); cfgfile->Write(wxT("refresh"), txtRefresh->GetValue()); - /*cfgfile->Read("address", &AccountData); - //txtAddress->SetValue(AccountData); - - cfgfile->Read("port", &AccountData); - //txtPort->SetValue(AccountData); - - cfgfile->Read("username", &AccountData); - //txtUsername->SetValue(AccountData); - - cfgfile->Read("password", &AccountData); - //txtPassword->SetValue(AccountData); - - cfgfile->Read("prefix", &AccountData); - //txtPrefix->SetValue(AccountData); - - cfgfile->Read("ssl", &AccountData); - if (AccountData == wxT("true")){ - - chkSSL->SetValue(TRUE); - - } - - cfgfile->Read("refresh", &AccountData); - //txtRefresh->SetValue(AccountData);*/ - - break; } @@ -220,12 +292,28 @@ void frmEditAccount::UpdateSettings( wxCommandEvent& event ) ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); } + + // Set the dialog result to true and close the window. + DialogResult = true; this->Close(); } void frmEditAccount::CloseWindow( wxCommandEvent& event ) { + + // Set the dialog result to false and close the window. + + DialogResult = false; this->Close(); + } + +bool frmEditAccount::GetDialogResult(){ + + // Get the result of the dialog. + + return DialogResult; + +} \ No newline at end of file