From 1144c13b3ced478e35f5e56ba0564887eacf54f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Tue, 17 Feb 2015 16:17:08 +0000 Subject: Facebook: Completely remove option to use https and always use it; version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@12165 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/FacebookRM/src/client.h | 5 +- protocols/FacebookRM/src/communication.cpp | 75 ++---------------------------- protocols/FacebookRM/src/connection.cpp | 3 -- protocols/FacebookRM/src/constants.h | 2 - protocols/FacebookRM/src/db.h | 2 - protocols/FacebookRM/src/dialogs.cpp | 17 ------- protocols/FacebookRM/src/http.h | 14 ++---- protocols/FacebookRM/src/json.cpp | 10 ++-- protocols/FacebookRM/src/proto.cpp | 3 +- protocols/FacebookRM/src/resource.h | 6 +-- protocols/FacebookRM/src/version.h | 2 +- 11 files changed, 14 insertions(+), 125 deletions(-) (limited to 'protocols/FacebookRM/src') diff --git a/protocols/FacebookRM/src/client.h b/protocols/FacebookRM/src/client.h index 55b06a24be..df7822ba32 100644 --- a/protocols/FacebookRM/src/client.h +++ b/protocols/FacebookRM/src/client.h @@ -39,7 +39,7 @@ public: { msgid_ = error_count_ = last_feeds_update_ = last_notification_time_ = random_ = 0; - https_ = is_typing_ = false; + is_typing_ = false; buddies_lock_ = send_message_lock_ = notifications_lock_ = cookies_lock_ = NULL; hMsgCon = NULL; @@ -82,7 +82,6 @@ public: std::string chat_clientid_; std::string chat_traceid_; bool is_typing_; - bool https_; time_t last_feeds_update_; time_t last_notification_time_; int msgid_; @@ -206,10 +205,8 @@ public: http::response flap(RequestType request_type, std::string* request_data = NULL, std::string* request_get_data = NULL, int method = 0); bool save_url(const std::string &url,const std::tstring &filename, HANDLE &nlc); - DWORD choose_security_level(RequestType); int choose_method(RequestType); bool notify_errors(RequestType); - std::string choose_proto(RequestType); std::string choose_server(RequestType); std::string choose_action(RequestType, std::string *get_data = NULL); diff --git a/protocols/FacebookRM/src/communication.cpp b/protocols/FacebookRM/src/communication.cpp index d0cee49e4b..38ed4c41ec 100644 --- a/protocols/FacebookRM/src/communication.cpp +++ b/protocols/FacebookRM/src/communication.cpp @@ -39,15 +39,13 @@ http::response facebook_client::flap(RequestType request_type, std::string* requ NETLIBHTTPREQUEST nlhr = { sizeof(NETLIBHTTPREQUEST) }; nlhr.requestType = !method ? choose_method(request_type) : method; - std::string url = choose_proto(request_type); - url.append(choose_server(request_type)); - url.append(choose_action(request_type, request_get_data)); + std::string url = HTTP_PROTO_SECURE + choose_server(request_type) + choose_action(request_type, request_get_data); if (!parent->m_locale.empty()) url += "&locale=" + parent->m_locale; nlhr.szUrl = (char*)url.c_str(); - nlhr.flags = NLHRF_HTTP11 | choose_security_level(request_type); + nlhr.flags = NLHRF_HTTP11 | NLHRF_SSL; nlhr.headers = get_request_headers(nlhr.requestType, &nlhr.headersCount); #ifdef _DEBUG @@ -203,57 +201,6 @@ bool facebook_client::handle_error(const std::string &method, int action) ////////////////////////////////////////////////////////////////////////////// -DWORD facebook_client::choose_security_level(RequestType request_type) -{ - if (this->https_) - if ((request_type != REQUEST_MESSAGES_RECEIVE && request_type != REQUEST_ACTIVE_PING) || parent->getByte(FACEBOOK_KEY_FORCE_HTTPS_CHANNEL, DEFAULT_FORCE_HTTPS_CHANNEL)) - return NLHRF_SSL; - - switch (request_type) { - case REQUEST_LOGIN: - case REQUEST_SETUP_MACHINE: - return NLHRF_SSL; - - // case REQUEST_LOGOUT: - // case REQUEST_HOME: - // case REQUEST_DTSG: - // case REQUEST_BUDDY_LIST: - // case REQUEST_USER_INFO: - // case REQUEST_USER_INFO_ALL: - // case REQUEST_USER_INFO_MOBILE: - // case REQUEST_LOAD_FRIENDSHIPS: - // case REQUEST_SEARCH: - // case REQUEST_DELETE_FRIEND: - // case REQUEST_ADD_FRIEND: - // case REQUEST_APPROVE_FRIEND: - // case REQUEST_CANCEL_FRIENDSHIP: - // case REQUEST_FRIENDSHIP: - // case REQUEST_FEEDS: - // case REQUEST_PAGES: - // case REQUEST_NOTIFICATIONS: - // case REQUEST_RECONNECT: - // case REQUEST_POST_STATUS: - // case REQUEST_IDENTITY_SWITCH: - // case REQUEST_CAPTCHA_REFRESH: - // case REQUEST_LINK_SCRAPER: - // case REQUEST_MESSAGE_SEND_CHAT: - // case REQUEST_MESSAGE_SEND_INBOX: - // case REQUEST_THREAD_INFO: - // case REQUEST_THREAD_SYNC: - // case REQUEST_MESSAGES_RECEIVE: - // case REQUEST_ACTIVE_PING: - // case REQUEST_VISIBILITY: - // case REQUEST_POKE: - // case REQUEST_ASYNC: - // case REQUEST_MARK_READ: - // case REQUEST_NOTIFICATIONS_READ: - // case REQUEST_UNREAD_THREADS: - // case REQUEST_TYPING_SEND: - default: - return (DWORD)0; - } -} - int facebook_client::choose_method(RequestType request_type) { switch (request_type) @@ -301,14 +248,6 @@ int facebook_client::choose_method(RequestType request_type) } } -std::string facebook_client::choose_proto(RequestType request_type) -{ - if (choose_security_level(request_type) == NLHRF_SSL) - return HTTP_PROTO_SECURE; - else - return HTTP_PROTO_REGULAR; -} - std::string facebook_client::choose_server(RequestType request_type) { switch (request_type) @@ -952,7 +891,7 @@ bool facebook_client::login(const char *username, const char *password) { if (resp.headers.find("Location") != resp.headers.end()) { std::string redirectUrl = resp.headers["Location"]; - std::string expectedUrl = (this->https_ ? "https://"FACEBOOK_SERVER_REGULAR"/" : "http://"FACEBOOK_SERVER_REGULAR"/"); + std::string expectedUrl = HTTP_PROTO_SECURE FACEBOOK_SERVER_REGULAR "/"; // Remove eventual parameters std::string::size_type pos = redirectUrl.rfind("?"); @@ -1012,14 +951,6 @@ bool facebook_client::home() // get fb_dtsg http::response resp = flap(REQUEST_DTSG); - // Check whether HTTPS connection is required and we don't have it enabled - if (!this->https_ && resp.headers["Location"].find("https://") != std::string::npos) { - client_notify(TranslateT("Your account requires HTTPS connection. Activating.")); - parent->setByte(FACEBOOK_KEY_FORCE_HTTPS, 1); - this->https_ = true; - return home(); - } - this->dtsg_ = utils::url::encode(utils::text::source_get_value(&resp.data, 3, "name=\"fb_dtsg\"", "value=\"", "\"")); { // Compute csrf_ from dtsg_ diff --git a/protocols/FacebookRM/src/connection.cpp b/protocols/FacebookRM/src/connection.cpp index 8eaec5044a..38f5c1b3ce 100644 --- a/protocols/FacebookRM/src/connection.cpp +++ b/protocols/FacebookRM/src/connection.cpp @@ -186,9 +186,6 @@ bool FacebookProto::NegotiateConnection() // Refresh last time of feeds update facy.last_feeds_update_ = ::time(NULL); - // Get info about secured connection - facy.https_ = getByte(FACEBOOK_KEY_FORCE_HTTPS, DEFAULT_FORCE_HTTPS) != 0; - // Generate random clientid for this connection facy.chat_clientid_ = utils::text::rand_string(8, "0123456789abcdef", &facy.random_); diff --git a/protocols/FacebookRM/src/constants.h b/protocols/FacebookRM/src/constants.h index ac2db6aa35..f57d665e09 100644 --- a/protocols/FacebookRM/src/constants.h +++ b/protocols/FacebookRM/src/constants.h @@ -69,8 +69,6 @@ along with this program. If not, see . #define FACEBOOK_DEFAULT_POLL_RATE 24 // in seconds #define FACEBOOK_MAXIMAL_POLL_RATE 60 -#define DEFAULT_FORCE_HTTPS 0 -#define DEFAULT_FORCE_HTTPS_CHANNEL 0 #define DEFAULT_SET_MIRANDA_STATUS 0 #define DEFAULT_LOGGING_ENABLE 0 #define DEFAULT_SYSTRAY_NOTIFY 0 diff --git a/protocols/FacebookRM/src/db.h b/protocols/FacebookRM/src/db.h index 544483d4da..d1c565e6a1 100644 --- a/protocols/FacebookRM/src/db.h +++ b/protocols/FacebookRM/src/db.h @@ -44,8 +44,6 @@ along with this program. If not, see . // Account DB keys #define FACEBOOK_KEY_DEF_GROUP "DefaultGroup" -#define FACEBOOK_KEY_FORCE_HTTPS "ForceHTTPS" -#define FACEBOOK_KEY_FORCE_HTTPS_CHANNEL "ForceHTTPSChannel" #define FACEBOOK_KEY_SET_MIRANDA_STATUS "SetMirandaStatus" #define FACEBOOK_KEY_SYSTRAY_NOTIFY "UseSystrayNotify" #define FACEBOOK_KEY_DISABLE_STATUS_NOTIFY "DisableStatusNotify" diff --git a/protocols/FacebookRM/src/dialogs.cpp b/protocols/FacebookRM/src/dialogs.cpp index 77749ec265..bda685b08a 100644 --- a/protocols/FacebookRM/src/dialogs.cpp +++ b/protocols/FacebookRM/src/dialogs.cpp @@ -363,11 +363,6 @@ INT_PTR CALLBACK FBOptionsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp SendDlgItemMessage(hwnd, IDC_PW, EM_SETREADONLY, TRUE, 0); } - LoadDBCheckState(proto, hwnd, IDC_SECURE, FACEBOOK_KEY_FORCE_HTTPS, DEFAULT_FORCE_HTTPS); - LoadDBCheckState(proto, hwnd, IDC_SECURE_CHANNEL, FACEBOOK_KEY_FORCE_HTTPS_CHANNEL, DEFAULT_FORCE_HTTPS_CHANNEL); - - EnableWindow(GetDlgItem(hwnd, IDC_SECURE_CHANNEL), IsDlgButtonChecked(hwnd, IDC_SECURE)); - SendDlgItemMessage(hwnd, IDC_GROUP, EM_LIMITTEXT, FACEBOOK_GROUP_NAME_LIMIT, 0); if (proto->m_tszDefaultGroup != NULL) @@ -390,15 +385,6 @@ INT_PTR CALLBACK FBOptionsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp if (HIWORD(wparam) == EN_CHANGE && (HWND)lparam == GetFocus()) SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); break; - case IDC_SECURE: - EnableWindow(GetDlgItem(hwnd, IDC_SECURE_CHANNEL), IsDlgButtonChecked(hwnd, IDC_SECURE)); - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - break; - case IDC_SECURE_CHANNEL: - if (IsDlgButtonChecked(hwnd, IDC_SECURE_CHANNEL)) - MessageBox(hwnd, TranslateT("Note: Make sure you have disabled 'Validate SSL certificates' option in Network options to work properly."), proto->m_tszUserName, MB_OK); - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - break; default: SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } @@ -430,9 +416,6 @@ INT_PTR CALLBACK FBOptionsProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp StoreDBCheckState(proto, hwnd, IDC_SET_IGNORE_STATUS, FACEBOOK_KEY_DISABLE_STATUS_NOTIFY); StoreDBCheckState(proto, hwnd, IDC_BIGGER_AVATARS, FACEBOOK_KEY_BIG_AVATARS); - StoreDBCheckState(proto, hwnd, IDC_SECURE, FACEBOOK_KEY_FORCE_HTTPS); - StoreDBCheckState(proto, hwnd, IDC_SECURE_CHANNEL, FACEBOOK_KEY_FORCE_HTTPS_CHANNEL); - return TRUE; } break; diff --git a/protocols/FacebookRM/src/http.h b/protocols/FacebookRM/src/http.h index 0aac1c7df0..943ebb1a56 100644 --- a/protocols/FacebookRM/src/http.h +++ b/protocols/FacebookRM/src/http.h @@ -3,7 +3,7 @@ Facebook plugin for Miranda Instant Messenger _____________________________________________ -Copyright © 2009-11 Michal Zelinka, 2011-15 Robert Pösel +Copyright � 2009-11 Michal Zelinka, 2011-15 Robert P�sel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,7 +22,6 @@ along with this program. If not, see . #pragma once -#define HTTP_PROTO_REGULAR "http://" #define HTTP_PROTO_SECURE "https://" #define HTTP_CODE_CONTINUE 100 @@ -85,23 +84,18 @@ along with this program. If not, see . namespace http { - enum method - { - get, - post - }; - struct response { response() : code(0), error_number(0) {} + int code; - std::map< std::string, std::string > headers; + std::map headers; std::string data; // Facebook's error data unsigned int error_number; - std::string error_text; std::string error_title; + std::string error_text; bool isValid() { return (code == HTTP_CODE_OK && error_number == 0); diff --git a/protocols/FacebookRM/src/json.cpp b/protocols/FacebookRM/src/json.cpp index 5597baebff..cd954ed1af 100644 --- a/protocols/FacebookRM/src/json.cpp +++ b/protocols/FacebookRM/src/json.cpp @@ -316,13 +316,9 @@ void parseAttachments(FacebookProto *proto, std::string *message_text, JSONNODE std::string link = json_as_pstring(url); if (link.find("/ajax/mercury/attachments/photo/view/") != std::string::npos) - // fix photo url - link = utils::url::decode(utils::text::source_get_value(&link, 2, "?uri=", "&")); - else if (link.find("/") == 0) { - // make absolute url - bool useHttps = proto->getByte(FACEBOOK_KEY_FORCE_HTTPS, 1) > 0; - link = (useHttps ? HTTP_PROTO_SECURE : HTTP_PROTO_REGULAR) + std::string(FACEBOOK_SERVER_REGULAR) + link; - } + link = utils::url::decode(utils::text::source_get_value(&link, 2, "?uri=", "&")); // fix photo url + else if (link.find("/") == 0) + link = HTTP_PROTO_SECURE FACEBOOK_SERVER_REGULAR + link; // make absolute url if (!link.empty()) { std::string filename; diff --git a/protocols/FacebookRM/src/proto.cpp b/protocols/FacebookRM/src/proto.cpp index f37a6f1fc0..b28a465de1 100644 --- a/protocols/FacebookRM/src/proto.cpp +++ b/protocols/FacebookRM/src/proto.cpp @@ -888,8 +888,7 @@ std::string FacebookProto::PrepareUrl(std::string url) { } // Make absolute url - bool useHttps = getByte(FACEBOOK_KEY_FORCE_HTTPS, 1) > 0; - url = (useHttps ? HTTP_PROTO_SECURE : HTTP_PROTO_REGULAR) + facy.get_server_type() + url; + url = HTTP_PROTO_SECURE + facy.get_server_type() + url; } return url; diff --git a/protocols/FacebookRM/src/resource.h b/protocols/FacebookRM/src/resource.h index 48423b6a5b..bb897960a2 100644 --- a/protocols/FacebookRM/src/resource.h +++ b/protocols/FacebookRM/src/resource.h @@ -24,10 +24,7 @@ #define IDC_NEWACCOUNTLINK 1003 #define IDC_MINDMSG 1012 #define IDC_GROUP 1021 -#define IDC_SECURE 1024 #define IDC_SET_IGNORE_STATUS 1025 -#define IDC_SECURE_CHANNEL 1026 -#define IDC_LOGGING 1027 #define IDC_DISCONNECT_CHAT 1028 #define IDC_BIGGER_AVATARS 1030 #define IDC_MAP_STATUSES 1032 @@ -65,7 +62,6 @@ #define IDC_INSTRUCTION 1214 #define IDC_FRAME1 1215 #define IDC_FRAME2 1216 -#define IDC_SUBMIT 1217 // Next default values for new objects // @@ -74,6 +70,6 @@ #define _APS_NEXT_RESOURCE_VALUE 134 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1218 -#define _APS_NEXT_SYMED_VALUE 132 +#define _APS_NEXT_SYMED_VALUE 134 #endif #endif diff --git a/protocols/FacebookRM/src/version.h b/protocols/FacebookRM/src/version.h index e7d50238ad..29f93c408a 100644 --- a/protocols/FacebookRM/src/version.h +++ b/protocols/FacebookRM/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 2 #define __RELEASE_NUM 10 -#define __BUILD_NUM 2 +#define __BUILD_NUM 3 #include -- cgit v1.2.3