From 9842d3db5d09d5b3fe560962f4a294f0edb57141 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 29 Dec 2019 14:17:52 +0300 Subject: Facebook: simple MirVer detector --- protocols/Facebook/src/server.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'protocols/Facebook/src') diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp index 036652e978..930ac9c2b1 100644 --- a/protocols/Facebook/src/server.cpp +++ b/protocols/Facebook/src/server.cpp @@ -411,6 +411,16 @@ void FacebookProto::OnPublishMessage(FbThriftReader &rdr) } // new message arrived +struct +{ + const char *szTag, *szClientVersion; +} +static facebookClients[] = +{ + { "source:titan:web", "Facebook (website)" }, + { "app_id:256002347743983", "Facebook (Facebook Messenger)" } +}; + void FacebookProto::OnPublishPrivateMessage(const JSONNode &root) { auto &metadata = root["messageMetadata"]; @@ -433,6 +443,16 @@ void FacebookProto::OnPublishPrivateMessage(const JSONNode &root) return; } + for (auto &it : metadata["tags"]) { + auto *szTagName = it.name(); + for (auto &cli : facebookClients) { + if (!mir_strcmp(szTagName, cli.szTag)) { + setString(pUser->hContact, "MirVer", cli.szClientVersion); + break; + } + } + } + __int64 actorFbId = _wtoi64(metadata["actorFbId"].as_mstring()); std::string szBody(root["body"].as_string()); @@ -442,10 +462,9 @@ void FacebookProto::OnPublishPrivateMessage(const JSONNode &root) pre.timestamp = DWORD(_wtoi64(metadata["timestamp"].as_mstring()) / 1000); pre.szMessage = (char *)szBody.c_str(); pre.szMsgId = (char *)szId.c_str(); - - if (m_uid == actorFbId) { + + if (m_uid == actorFbId) pre.flags |= PREF_SENT; - } ProtoChainRecvMsg(pUser->hContact, &pre); } -- cgit v1.2.3