X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcarddav2%2Fcarddav2.h;h=143b61f872eaa10523d9f2a176e897c2cb7ac100;hb=547ab1fe605cdb4884179ab011dabba4d0bd7bc2;hp=0c41fdb8c8a50c6855e4123e3a423198dfa8f9e2;hpb=daa33d641181d15710614cad752187a87263bcc9;p=xestiaab%2F.git diff --git a/source/carddav2/carddav2.h b/source/carddav2/carddav2.h index 0c41fdb..143b61f 100644 --- a/source/carddav2/carddav2.h +++ b/source/carddav2/carddav2.h @@ -22,9 +22,11 @@ #include "../connobject/ConnectionObject.h" #include "../version.h" #include "../common/sslcertstructs.h" +#include "../common/dirs.h" #include #include +#include #include #include @@ -35,8 +37,9 @@ class CardDAV2 : public ConnectionObject { public: - using ConnectionObject::ConnectionObject; - + CardDAV2(std::string ServerAddress, int ServerPort, std::string ServerUser, std::string ServerPass, bool ServerSSL); + CardDAV2(std::string ServerAddress, int ServerPort, std::string ServerUser, std::string ServerPass, bool ServerSSL, std::string ServerPrefix, std::string ServerAccount); + // Destructor. ~CardDAV2(); @@ -52,9 +55,9 @@ class CardDAV2 : public ConnectionObject { COServerResponse GetDefaultPrefix(std::string *ServerPrefix); COServerResponse AddContact(std::string Location, std::string Data); COServerResponse EditContact(std::string Location, std::string Data); - COServerResponse DeleteContact(std::string Location, std::string EntityTag); + COServerResponse DeleteContact(std::string Location); COServerResponse GetServerEntityTagValue(std::string Location); - COServerResponse GetContact(std::string Location); + COServerResponse GetContact(std::string Location, std::string *ContactData); COContactList GetContactList(std::string SyncToken); bool CanDoProcessing(); @@ -65,15 +68,29 @@ class CardDAV2 : public ConnectionObject { bool IsSelfSigned(); std::string GetErrorMessage(); - void BypassSSLVerification(bool EnableBypass); - #if defined(__APPLE__) #elif defined(__WIN32__) + + PCCERT_CONTEXT BuildSSLCollection(); + #else SSLCertCollectionString BuildSSLCollection(); #endif + + void BypassSSLVerification(bool EnableBypass); + struct CardDAV2PassObject { + CardDAV2 *CardDAV2Object = nullptr; + std::string *DataSetting = nullptr; + bool ServerUsingSSL = false; + CURL *ConnectionSessionObject = nullptr; +#if defined(__APPLE__) +#elif defined(__WIN32__) + PCCERT_CONTEXT SSLContext = nullptr; +#endif + }; + protected: private: @@ -81,6 +98,7 @@ class CardDAV2 : public ConnectionObject { CURL *ConnectionSession = nullptr; CURLcode SessionResult = CURLE_OK; + struct curl_slist *HeaderList = nullptr; void SetupDefaultParametersNonSSL(bool DoAuthentication); void SetupDefaultParametersSSL(bool DoAuthentication); @@ -89,23 +107,35 @@ class CardDAV2 : public ConnectionObject { std::string PageHeader; char SessionErrorBuffer[CURL_ERROR_SIZE]; + CardDAV2PassObject PageDataObject; + CardDAV2PassObject PageHeaderObject; + static size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, void *stream); size_t WritebackFuncImplementation(char *ptr, size_t size, size_t nmemb, void *stream); std::string BuildURL(std::string URI); void ResetResults(); std::vector GetDAVHeader(); + std::string GetETagHeader(); + std::string GetETagValue(); std::string GetUserPrincipalURI(); std::string GetAddressBookHomeURI(); std::string GetDefaultAddressBookURI(); - + void ProcessContactData(COContactList *ContactList); + #if defined(__APPLE__) #elif defined(__WIN32__) + + PCCERT_CONTEXT CertificateData = nullptr; + #else - bool EnableSSLBypass = false; #endif + void SetCertificateData(); + + bool EnableSSLBypass = false; + }; #endif \ No newline at end of file