From 385d3560ad71d51ae961a52672f6136493d401d5 Mon Sep 17 00:00:00 2001 From: ElzorFox Date: Tue, 25 Feb 2025 11:07:59 +0500 Subject: VKontakte: making captcha more rare version bump --- protocols/VKontakte/src/misc.cpp | 50 +++++++++++++++++++++++++++++++++++- protocols/VKontakte/src/version.h | 2 +- protocols/VKontakte/src/vk_proto.cpp | 2 ++ protocols/VKontakte/src/vk_proto.h | 2 ++ 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index b312bdd9ae..690acebff8 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -655,6 +655,8 @@ void CVkProto::GrabCookies(MHttpResponse *nhr, CMStringA szDefDomain) m_cookies.insert(new CVkCookie(szCookieName, szCookieVal, szDomain)); } } + + SaveCookies(); } void CVkProto::ApplyCookies(AsyncHttpRequest *pReq) @@ -673,10 +675,56 @@ void CVkProto::ApplyCookies(AsyncHttpRequest *pReq) szCookie.Append(it->m_value); } - if (!szCookie.IsEmpty()) + if (!szCookie.IsEmpty()) { pReq->AddHeader("Cookie", szCookie); + } } +void CVkProto::SaveCookies() +{ + debugLogA("CVkProto::SaveCookies"); + CMStringA szCookie; + + for (auto& it : m_cookies) { + if (!szCookie.IsEmpty()) + szCookie.Append("; "); + szCookie.Append(it->m_name); + szCookie.AppendChar('='); + szCookie.Append(it->m_value); + szCookie.AppendChar('='); + szCookie.Append(it->m_domain); + } + + if (!szCookie.IsEmpty()) + setString("Cookie", szCookie); +} + +void CVkProto::LoadCookies() +{ + debugLogA("CVkProto::LoadCookies"); + CMStringA szCookies = getStringA("Cookie"); + if (szCookies.IsEmpty()) + return; + + CMStringA szCookieName, szCookieDomain, szCookieValue; + szCookies.AppendChar(';'); + + int iStart = 0; + while (true) { + CMStringA szToken = szCookies.Tokenize(";", iStart).Trim(); + if (iStart == -1) + break; + + int iStart2 = 0; + + szCookieName = szToken.Tokenize("=", iStart2); + szCookieValue = szToken.Tokenize("=", iStart2); + szCookieDomain = szToken.Tokenize("=", iStart2); + + m_cookies.insert(new CVkCookie(szCookieName, szCookieValue, szCookieDomain)); + } + +} ///////////////////////////////////////////////////////////////////////////////////////// bool CVkProto::IsAuthContactLater(MCONTACT hContact) diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h index 93f8f02f7b..4c64e10578 100644 --- a/protocols/VKontakte/src/version.h +++ b/protocols/VKontakte/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 1 #define __RELEASE_NUM 18 -#define __BUILD_NUM 2 +#define __BUILD_NUM 3 #include diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index dbd86e8aaf..0a6dd5525a 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -88,6 +88,8 @@ CVkProto::CVkProto(const char *szModuleName, const wchar_t *pwszUserName) : CreateProtoService(PS_JOINCHAT, &CVkProto::OnJoinChat); HookProtoEvent(ME_GC_EVENT, &CVkProto::OnChatEvent); HookProtoEvent(ME_GC_BUILDMENU, &CVkProto::OnGcMenuHook); + + LoadCookies(); } CVkProto::~CVkProto() diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index 3f14df6525..6feaa2685a 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -381,6 +381,8 @@ private: CMStringW RunRenameNick(LPCWSTR pwszOldName); void GrabCookies(MHttpResponse *nhr, CMStringA szDefDomain = ""); void ApplyCookies(AsyncHttpRequest*); + void SaveCookies(); + void LoadCookies(); bool IsAuthContactLater(MCONTACT hContact); bool AddAuthContactLater(MCONTACT hContact); void __cdecl DBAddAuthRequestThread(void *p); -- cgit v1.2.3