X-Git-Url: http://Server1/repobrowser/?p=xestiaab%2F.git;a=blobdiff_plain;f=source%2Fconnobject%2FConnectionObject.h;h=b8d82d34ff6d9e6338f0a1ccb9be4717c903aef1;hp=90eb0cbee1132d749f76ffe1de71dd4950b52262;hb=f2f4ddfdf1b569af4578bda527d5329f6ccffa98;hpb=e86dce6341aec3d350835e18c3791a644a313030 diff --git a/source/connobject/ConnectionObject.h b/source/connobject/ConnectionObject.h index 90eb0cb..b8d82d3 100644 --- a/source/connobject/ConnectionObject.h +++ b/source/connobject/ConnectionObject.h @@ -1,6 +1,6 @@ // ConnectionObject.h - ConnectionObject interface header file. // -// (c) 2012-2015 Xestia Software Development. +// (c) 2012-2016 Xestia Software Development. // // This file is part of Xestia Address Book. // @@ -16,35 +16,74 @@ // You should have received a copy of the GNU General Public License along // with Xestia Address Book. If not, see +#ifndef __CONNOBJECT_CONNECTIONOBJECT_H__ +#define __CONNOBJECT_CONNECTIONOBJECT_H__ + #include #include +#include +#include "../common/sslcertstructs.h" + +#if defined (__APPLE__) +#import +#import +#endif + +#if defined (__WIN32__) +#include +#include +#include +#include +#include +#include +#include +#endif enum COConnectResult { COCONNECT_UNITTESTFAIL = -1, COCONNECT_OK, + COCONNECT_SSLFAIL, COCONNECT_INVALID, COCONNECT_TIMEOUT, - COCONNECT_AUTHFAIL + COCONNECT_AUTHFAIL, + COCONNECT_NOCONNECTION, }; enum CORequestResult { COREQUEST_UNITTESTFAIL = -1, COREQUEST_OK, COREQUEST_ERROR_NOTCONNECTED, - COREQUEST_ERROR_SERVER + COREQUEST_ERROR_SERVER, + COREQUEST_NOCONNECTION, +}; + +enum COSSLVerified { + COSSL_UNITTESTFAIL = -1, + COSSL_VERIFIED, + COSSL_VERIFIED_USER, + COSSL_UNABLETOVERIFY, + COSSL_NOTAPPLICABLE, + COSSL_NORESULT +}; + +enum COContactStatus { + COCS_UNKNOWN, + COCS_UPDATED, + COCS_DELETED }; struct COServerResponse { - CORequestResult RequestResult; - std::string EntityTag; - int SessionCode; - int ResultCode; - std::string ResultMessage; + CORequestResult RequestResult = COREQUEST_NOCONNECTION; + std::string EntityTag = ""; + int SessionCode = 0; + int ResultCode = 0; + std::string ResultMessage = ""; }; struct COContactData { - std::string Location; - std::string Data; + std::string Location = ""; + std::string Data = ""; + COContactStatus Status = COCS_UNKNOWN; }; struct COContactList { @@ -56,29 +95,46 @@ struct COContactList { class ConnectionObject{ public: - ConnectionObject(std::string ServerAddress, int ServerPort, std::string ServerUser, std::string ServerPass, bool ServerSSL); - ConnectionObject(std::string ServerAddress, int ServerPort, std::string ServerUser, std::string ServerPass, bool ServerSSL, std::string ServerPrefix, std::string ServerAccount); - + // Virtual functions to be setup by the inheriting classes. - virtual void SetupConnectionObject() {}; - virtual ~ConnectionObject() {}; + virtual void SetupConnectionObject() = 0; - virtual COConnectResult Connect() {}; + virtual bool IsTaskCompleted() = 0; - virtual std::string GetDefaultPrefix() {}; - virtual COServerResponse AddContact(std::string Location, std::string Data) {}; - virtual COServerResponse EditContact(std::string Location, std::string Data) {}; - virtual COServerResponse DeleteContact(std::string Location, std::string EntityTag) {}; - virtual COServerResponse GetServerEntityTagValue(std::string Location) {}; - virtual COServerResponse GetContact(std::string Location) {}; - virtual COContactList GetContactList(std::string SyncToken) {}; + virtual COConnectResult Connect(bool DoAuthentication) = 0; + virtual void BypassSSLVerification(bool EnableBypass) = 0; - virtual bool CanDoProcessing() {}; - virtual bool CanDoSSL() {}; - virtual bool SSLVerify() {}; - virtual bool AbleToLogin() {}; - virtual bool HasValidResponse() {}; + virtual COServerResponse GetDefaultPrefix(std::string *ServerPrefix) = 0; + virtual COServerResponse AddContact(std::string Location, std::string Data) = 0; + virtual COServerResponse EditContact(std::string Location, std::string Data) = 0; + virtual COServerResponse DeleteContact(std::string Location) = 0; + virtual COServerResponse GetServerEntityTagValue(std::string Location) = 0; + virtual COServerResponse GetContact(std::string Location, std::string *PageData) = 0; + virtual COContactList GetContactList(std::string SyncToken) = 0; + + virtual bool CanDoProcessing() = 0; + virtual bool CanDoSSL() = 0; + virtual COSSLVerified SSLVerify() = 0; + virtual bool AbleToLogin() = 0; + virtual bool HasValidResponse() = 0; + virtual bool IsSelfSigned() = 0; + virtual std::string GetErrorMessage() = 0; + + // OS specific functions. + +#if defined(__APPLE__) + + virtual SecTrustRef BuildSSLCollection() = 0; + +#elif defined(__WIN32__) + + virtual PCCERT_CONTEXT BuildSSLCollection() = 0; + +#else + virtual SSLCertCollectionString BuildSSLCollection() = 0; + +#endif protected: // Test Mode. @@ -95,17 +151,19 @@ class ConnectionObject{ std::string ServerAccount = ""; bool ServerSSL = true; std::string ErrorMessage = ""; - std::string ErrorBufferMessage = ""; // Connect results. bool SSLStatus = false; - bool SSLVerified = false; + COSSLVerified SSLVerified = COSSL_NORESULT; bool ValidResponse = false; bool AuthPassed = false; bool CanProcess = false; bool SSLSelfSigned = false; + bool TaskCompleted = false; private: -}; \ No newline at end of file +}; + +#endif