From dc2a9c66749ef4c8c6a748218bf80b80d0bbe0d6 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 24 Jun 2013 12:29:37 +0000 Subject: - custom base64 encoder removed; - warning fixes git-svn-id: http://svn.miranda-ng.org/main/trunk@5117 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/WhatsApp/src/WASocketConnection.h | 1 - .../WhatsApp/src/WhatsAPI++/BinTreeNodeReader.cpp | 3 +- .../WhatsApp/src/WhatsAPI++/BinTreeNodeWriter.cpp | 2 + protocols/WhatsApp/src/WhatsAPI++/ByteArray.cpp | 3 +- protocols/WhatsApp/src/WhatsAPI++/FMessage.cpp | 1 + .../WhatsApp/src/WhatsAPI++/ProtocolTreeNode.cpp | 1 + protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp | 20 ++-- protocols/WhatsApp/src/WhatsAPI++/WAConnection.h | 6 +- protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp | 1 + protocols/WhatsApp/src/WhatsAPI++/base64.cpp | 102 --------------------- protocols/WhatsApp/src/WhatsAPI++/base64.h | 16 ---- protocols/WhatsApp/src/WhatsAPI++/utilities.cpp | 2 + protocols/WhatsApp/src/connection.cpp | 5 +- protocols/WhatsApp/src/proto.h | 2 +- 14 files changed, 28 insertions(+), 137 deletions(-) delete mode 100644 protocols/WhatsApp/src/WhatsAPI++/base64.cpp delete mode 100644 protocols/WhatsApp/src/WhatsAPI++/base64.h (limited to 'protocols/WhatsApp/src') diff --git a/protocols/WhatsApp/src/WASocketConnection.h b/protocols/WhatsApp/src/WASocketConnection.h index f2d46415bc..53d16fd419 100644 --- a/protocols/WhatsApp/src/WASocketConnection.h +++ b/protocols/WhatsApp/src/WASocketConnection.h @@ -6,7 +6,6 @@ #include #include "WhatsAPI++/WAException.h" #include "WhatsAPI++/WALogin.h" -#include "WhatsAPI++/base64.h" #include class WASocketConnection : public ISocketConnection diff --git a/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.cpp b/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.cpp index 6a09feee64..0cb8dd512b 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeReader.cpp @@ -4,11 +4,12 @@ * Created on: 26/06/2012 * Author: Antonio */ + +#include "../common.h" #include "BinTreeNodeReader.h" #include "WAException.h" #include "ProtocolTreeNode.h" #include "utilities.h" -#include BinTreeNodeReader::BinTreeNodeReader(WAConnection* conn, ISocketConnection* connection, const char** dictionary, const int dictionarysize) { this->conn = conn; diff --git a/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeWriter.cpp b/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeWriter.cpp index e2d38cf891..d50a4a91e5 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeWriter.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/BinTreeNodeWriter.cpp @@ -4,6 +4,8 @@ * Created on: 26/06/2012 * Author: Antonio */ + +#include "../common.h" #include "BinTreeNodeWriter.h" #include #include "utilities.h" diff --git a/protocols/WhatsApp/src/WhatsAPI++/ByteArray.cpp b/protocols/WhatsApp/src/WhatsAPI++/ByteArray.cpp index f379a2061a..5c7d16042e 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/ByteArray.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/ByteArray.cpp @@ -5,6 +5,7 @@ * Author: Antonio */ +#include "../common.h" #include "ByteArray.h" #include "WAException.h" #include @@ -116,7 +117,7 @@ int ByteArrayInputStream::read(std::vector& b, size_t off, size_ } } catch (std::exception& ) { } - return i; + return (int)i; } ByteArrayInputStream::~ByteArrayInputStream() { diff --git a/protocols/WhatsApp/src/WhatsAPI++/FMessage.cpp b/protocols/WhatsApp/src/WhatsAPI++/FMessage.cpp index b8586eb538..03015e8e11 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/FMessage.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/FMessage.cpp @@ -5,6 +5,7 @@ * Author: Antonio */ +#include "../common.h" #include #include #include diff --git a/protocols/WhatsApp/src/WhatsAPI++/ProtocolTreeNode.cpp b/protocols/WhatsApp/src/WhatsAPI++/ProtocolTreeNode.cpp index be6a658acb..c3c75cbd3e 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/ProtocolTreeNode.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/ProtocolTreeNode.cpp @@ -5,6 +5,7 @@ * Author: Antonio */ +#include "../common.h" #include "WAException.h" #include "ProtocolTreeNode.h" diff --git a/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp b/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp index 0e6fa62c74..d1b4bf6a80 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp @@ -5,12 +5,12 @@ * Author: Antonio */ +#include "../common.h" #include "WAConnection.h" #include "ProtocolTreeNode.h" #include #include #include "utilities.h" -#include "base64.h" const char* WAConnection::dictionary[] = { "", @@ -566,11 +566,11 @@ void WAConnection::sendMessageWithMedia(FMessage* message) throw (WAException) } else { if (message->media_wa_type != FMessage::WA_TYPE_CONTACT && !message->media_name.empty() && !message->media_url.empty() && message->media_size > 0L) { (*attribs)["file"] = message->media_name; - (*attribs)["size"] = Utilities::intToStr(message->media_size); + (*attribs)["size"] = Utilities::intToStr((int)message->media_size); (*attribs)["url"] = message->media_url; } else { (*attribs)["file"] = message->media_name; - (*attribs)["size"] = Utilities::intToStr(message->media_size); + (*attribs)["size"] = Utilities::intToStr((int)message->media_size); (*attribs)["url"] = message->media_url; (*attribs)["seconds"] = Utilities::intToStr(message->media_duration_seconds); } @@ -986,11 +986,11 @@ std::vector* WAConnection::processGroupSettings(const std::ve std::vector* result = new std::vector(groups.size()); if (!groups.empty()) { time_t now = time(NULL); - for (int i = 0; i < groups.size(); i++) { + for (size_t i = 0; i < groups.size(); i++) { std::map* attribs = new std::map(); (*attribs)["jid"] = groups[i].jid; (*attribs)["notify"] = (groups[i].enabled? "1": "0"); - (*attribs)["mute"] = Utilities::intToStr(groups[i].muteExpiry > now? (groups[i].muteExpiry - now): 0); + (*attribs)["mute"] = Utilities::intToStr( int(groups[i].muteExpiry > now ? (groups[i].muteExpiry - now) : 0)); _LOGDATA("mute group %s, %s", (*attribs)["jid"].c_str(), (*attribs)["mute"].c_str()); (*result)[i] = new ProtocolTreeNode("item", attribs); @@ -1156,7 +1156,7 @@ void WAConnection::parseMessageInitialTagAlreadyChecked(ProtocolTreeNode* messag data = childNode->getDataAsString(); } else { _LOGDATA("Media data encoding type '%s'", (encoding == NULL? "text":encoding->c_str())); - data = (childNode->data == NULL? NULL : new std::string(base64_encode(childNode->data->data(), childNode->data->size()))); + data = (childNode->data == NULL? NULL : new std::string(mir_base64_encode((BYTE*)childNode->data->data(), (unsigned)childNode->data->size()))); } fmessage->data = (data == NULL? "": *data); if (data != NULL) @@ -1228,14 +1228,14 @@ void WAConnection::parseMessageInitialTagAlreadyChecked(ProtocolTreeNode* messag bool flag = false; std::vector myVector(0); std::vector* children = messageNode->children == NULL? &myVector: messageNode->getAllChildren(); - for (int i = 0; i < children->size(); i++) { + for (size_t i = 0; i < children->size(); i++) { ProtocolTreeNode* child = (*children)[i]; if (ProtocolTreeNode::tagEquals(child, "notification")) { std::string* type = child->getAttributeValue("type"); if ((type != NULL) && (type->compare("picture") == 0) && (this->event_handler != NULL)) { std::vector myVector2(0); std::vector* children2 = child->children == NULL? &myVector2: child->getAllChildren(); - for (int j = 0; j < children2->size(); j++) { + for (unsigned j = 0; j < children2->size(); j++) { ProtocolTreeNode* child2 = (*children2)[j]; if (ProtocolTreeNode::tagEquals(child2, "set")) { std::string* id = child2->getAttributeValue("id"); @@ -1544,7 +1544,7 @@ void WAConnection::sendRemoveParticipants(const std::string& gjid, const std::ve void WAConnection::sendVerbParticipants(const std::string& gjid, const std::vector& participants, const std::string& id, const std::string& inner_tag) throw (WAException) { size_t size = participants.size(); std::vector* children = new std::vector(size); - for (int i = 0; i < size; i++) { + for (size_t i = 0; i < size; i++) { std::map* attribs1 = new std::map(); (*attribs1)["jid"] = participants[i]; (*children)[i] = new ProtocolTreeNode("participant", attribs1); @@ -1645,7 +1645,7 @@ void WAConnection::sendGetPictureIds(const std::vector& jids) throw this->pending_server_requests[id] = new IqResultGetPictureIdsHandler(this); std::vector* children = new std::vector(); - for (int i = 0; i < jids.size(); i++) { + for (size_t i = 0; i < jids.size(); i++) { std::map* attribs = new std::map(); (*attribs)["jid"] = jids[i]; ProtocolTreeNode* child = new ProtocolTreeNode("user", attribs); diff --git a/protocols/WhatsApp/src/WhatsAPI++/WAConnection.h b/protocols/WhatsApp/src/WhatsAPI++/WAConnection.h index 286a0eacca..9ee5d3e48f 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/WAConnection.h +++ b/protocols/WhatsApp/src/WhatsAPI++/WAConnection.h @@ -38,7 +38,7 @@ public: virtual void onClientConfigReceived(const std::string& paramString)=0; virtual void onLastSeen(const std::string& paramString1, int paramInt, std::string* paramString2)=0; virtual void onIsTyping(const std::string& paramString, bool paramBoolean)=0; - virtual void onAccountChange(int paramInt, long paramLong)=0; + virtual void onAccountChange(int paramInt, time_t paramLong)=0; virtual void onPrivacyBlockListAdd(const std::string& paramString)=0; virtual void onPrivacyBlockListClear()=0; virtual void onDirty(const std::map& paramHashtable)=0; @@ -269,7 +269,7 @@ class WAConnection { if ((attributeValue != NULL) && (attributeValue->compare("result") == 0) && (this->con->event_handler != NULL)) { std::vector* children = node->getAllChildren("picture"); - for (int i = 0; i < children->size(); i++) { + for (size_t i = 0; i < children->size(); i++) { ProtocolTreeNode* current = (*children)[i]; std::string* id = current->getAttributeValue("id"); if ((id != NULL) && (current->data != NULL) && (current->data->size() > 0)) { @@ -317,7 +317,7 @@ class WAConnection { ProtocolTreeNode* groupNode = node->getChild("list"); std::vector* children = groupNode->getAllChildren("user"); std::map ids; - for (int i = 0; i < children->size(); i++) { + for (size_t i = 0; i < children->size(); i++) { std::string* jid = (*children)[i]->getAttributeValue("jid"); std::string* id = (*children)[i]->getAttributeValue("id"); if (jid != NULL) { diff --git a/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp b/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp index 37d5fe0378..0a351300a9 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp @@ -5,6 +5,7 @@ * Author: Antonio */ +#include "../common.h" #include "WALogin.h" #include "ByteArray.h" //#include "ApplicationData.h" diff --git a/protocols/WhatsApp/src/WhatsAPI++/base64.cpp b/protocols/WhatsApp/src/WhatsAPI++/base64.cpp deleted file mode 100644 index 03c4c827d4..0000000000 --- a/protocols/WhatsApp/src/WhatsAPI++/base64.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Base64.cpp - * - * Created on: 26/06/2012 - * Author: Antonio - */ -#include "base64.h" -#include - -static const std::string base64_chars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; - - -static inline bool is_base64(unsigned char c) { - return (isalnum(c) || (c == '+') || (c == '/')); -} - -std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { - std::string ret; - int i = 0; - int j = 0; - unsigned char char_array_3[3]; - unsigned char char_array_4[4]; - - while (in_len--) { - char_array_3[i++] = *(bytes_to_encode++); - if (i == 3) { - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for(i = 0; (i <4) ; i++) - ret += base64_chars[char_array_4[i]]; - i = 0; - } - } - - if (i) - { - for(j = i; j < 3; j++) - char_array_3[j] = '\0'; - - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for (j = 0; (j < i + 1); j++) - ret += base64_chars[char_array_4[j]]; - - while((i++ < 3)) - ret += '='; - - } - - return ret; - -} - -std::string base64_decode(std::string const& encoded_string) { - int in_len = encoded_string.size(); - int i = 0; - int j = 0; - int in_ = 0; - unsigned char char_array_4[4], char_array_3[3]; - std::string ret; - - while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { - char_array_4[i++] = encoded_string[in_]; in_++; - if (i ==4) { - for (i = 0; i <4; i++) - char_array_4[i] = base64_chars.find(char_array_4[i]); - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (i = 0; (i < 3); i++) - ret += char_array_3[i]; - i = 0; - } - } - - if (i) { - for (j = i; j <4; j++) - char_array_4[j] = 0; - - for (j = 0; j <4; j++) - char_array_4[j] = base64_chars.find(char_array_4[j]); - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; - } - - return ret; -} diff --git a/protocols/WhatsApp/src/WhatsAPI++/base64.h b/protocols/WhatsApp/src/WhatsAPI++/base64.h deleted file mode 100644 index 2ece162b89..0000000000 --- a/protocols/WhatsApp/src/WhatsAPI++/base64.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Base64.h - * - * Created on: 26/06/2012 - * Author: Antonio - */ - -#ifndef BASE64_H_ -#define BASE64_H_ - -#include - -std::string base64_encode(unsigned char const* , unsigned int len); -std::string base64_decode(std::string const& s); - -#endif /* BASE64_H_ */ diff --git a/protocols/WhatsApp/src/WhatsAPI++/utilities.cpp b/protocols/WhatsApp/src/WhatsAPI++/utilities.cpp index 90d03dbdaa..ca87822a74 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/utilities.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/utilities.cpp @@ -1,3 +1,5 @@ + +#include "../common.h" #include "utilities.h" //#include "ApplicationData.h" #include diff --git a/protocols/WhatsApp/src/connection.cpp b/protocols/WhatsApp/src/connection.cpp index 76c2808d12..2b87830046 100644 --- a/protocols/WhatsApp/src/connection.cpp +++ b/protocols/WhatsApp/src/connection.cpp @@ -143,6 +143,7 @@ void WhatsAppProto::stayConnectedLoop(void*) CODE_BLOCK_TRY + std::string password = ptrA((char*)mir_base64_decode(pass.c_str(),0)); BYTE UseSSL = db_get_b(NULL, this->ModuleName(), WHATSAPP_KEY_SSL, 0); if (UseSSL) { this->conn = new WASocketConnection("c.whatsapp.net", 443); @@ -150,14 +151,14 @@ void WhatsAppProto::stayConnectedLoop(void*) connection = new WAConnection(&this->connMutex, this, this); login = new WALogin(connection, new BinTreeNodeReader(connection, conn, WAConnection::dictionary, WAConnection::DICTIONARY_LEN), new BinTreeNodeWriter(connection, conn, WAConnection::dictionary, WAConnection::DICTIONARY_LEN, &writerMutex), - "s.whatsapp.net", this->phoneNumber, std::string(ACCOUNT_RESOURCE) +"-443", base64_decode(pass), nick); + "s.whatsapp.net", this->phoneNumber, std::string(ACCOUNT_RESOURCE) +"-443", password, nick); } else { this->conn = new WASocketConnection("c.whatsapp.net", 5222); connection = new WAConnection(&this->connMutex, this, this); login = new WALogin(connection, new BinTreeNodeReader(connection, conn, WAConnection::dictionary, WAConnection::DICTIONARY_LEN), new BinTreeNodeWriter(connection, conn, WAConnection::dictionary, WAConnection::DICTIONARY_LEN, &writerMutex), - "s.whatsapp.net", this->phoneNumber, std::string(ACCOUNT_RESOURCE) +"-5222", base64_decode(pass), nick); + "s.whatsapp.net", this->phoneNumber, std::string(ACCOUNT_RESOURCE) +"-5222", password, nick); } std::vector* nextChallenge = login->login(*this->challenge); diff --git a/protocols/WhatsApp/src/proto.h b/protocols/WhatsApp/src/proto.h index 524b429dae..65430567fb 100644 --- a/protocols/WhatsApp/src/proto.h +++ b/protocols/WhatsApp/src/proto.h @@ -178,7 +178,7 @@ public: virtual void onClientConfigReceived(const std::string& paramString) { LOG(""); } virtual void onLastSeen(const std::string& paramString1, int paramInt, std::string* paramString2); virtual void onIsTyping(const std::string& paramString, bool paramBoolean); - virtual void onAccountChange(int paramInt, long paramLong) { LOG(""); } + virtual void onAccountChange(int paramInt, time_t expire_date) { LOG(""); } virtual void onPrivacyBlockListAdd(const std::string& paramString) { LOG(""); } virtual void onPrivacyBlockListClear() { LOG(""); } virtual void onDirty(const std::map& paramHashtable) { LOG(""); } -- cgit v1.2.3