X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fconnobject%2FConnectionObject.h;h=d2ccf5c5231ec6e1f30e1ded4841c9d0754174e4;hb=547ab1fe605cdb4884179ab011dabba4d0bd7bc2;hp=c668814a8cbe28328550f43e3b21e3c7430bb6e2;hpb=1a9e2a6862684d5bbd4a250019e72ec831429fe6;p=xestiaab%2F.git diff --git a/source/connobject/ConnectionObject.h b/source/connobject/ConnectionObject.h index c668814..d2ccf5c 100644 --- a/source/connobject/ConnectionObject.h +++ b/source/connobject/ConnectionObject.h @@ -16,20 +16,127 @@ // 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 (__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_NOCONNECTION, +}; + +enum CORequestResult { + COREQUEST_UNITTESTFAIL = -1, + COREQUEST_OK, + COREQUEST_ERROR_NOTCONNECTED, + 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 = COREQUEST_NOCONNECTION; + std::string EntityTag = ""; + int SessionCode = 0; + int ResultCode = 0; + std::string ResultMessage = ""; +}; + +struct COContactData { + std::string Location = ""; + std::string Data = ""; + COContactStatus Status = COCS_UNKNOWN; +}; + +struct COContactList { + COServerResponse ServerResponse; + std::vector ListData; + std::string SyncToken; +}; 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); - + //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 bool IsTaskCompleted() { return false; }; + + virtual COConnectResult Connect(bool DoAuthentication) { COConnectResult x; return x; }; + virtual void BypassSSLVerification(bool EnableBypass) {}; + + virtual COServerResponse GetDefaultPrefix(std::string *ServerPrefix) { COServerResponse x; return x; }; + virtual COServerResponse AddContact(std::string Location, std::string Data) { COServerResponse x; return x; }; + virtual COServerResponse EditContact(std::string Location, std::string Data) { COServerResponse x; return x; }; + virtual COServerResponse DeleteContact(std::string Location) { COServerResponse x; return x; }; + virtual COServerResponse GetServerEntityTagValue(std::string Location) { COServerResponse x; return x; }; + virtual COServerResponse GetContact(std::string Location, std::string *PageData) { COServerResponse x; return x; }; + virtual COContactList GetContactList(std::string SyncToken) { COContactList x; return x; }; + + virtual bool CanDoProcessing() { return false; }; + virtual bool CanDoSSL() { return false; }; + virtual COSSLVerified SSLVerify() { COSSLVerified x; return x; }; + virtual bool AbleToLogin() { return false; }; + virtual bool HasValidResponse() { return false; }; + virtual bool IsSelfSigned() { return false; }; + virtual std::string GetErrorMessage() { return ""; }; + + // OS specific functions. + +#if defined(__APPLE__) +#elif defined(__WIN32__) + + virtual PCCERT_CONTEXT BuildSSLCollection() { return nullptr; }; + +#else + virtual SSLCertCollectionString BuildSSLCollection() {}; + +#endif protected: + // Test Mode. + + bool TestMode = false; + + // Server variables. + std::string ServerAddress = ""; unsigned int ServerPort = 8080; std::string ServerUser = ""; @@ -38,8 +145,19 @@ class ConnectionObject{ std::string ServerAccount = ""; bool ServerSSL = true; std::string ErrorMessage = ""; - std::string ErrorBufferMessage = ""; - bool TestMode = false; + + // Connect results. + + bool SSLStatus = 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 \ No newline at end of file