summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2019-06-14 12:57:54 +0300
committerGeorge Hazan <ghazan@miranda.im>2019-06-14 12:57:54 +0300
commit313ab14bd5e61167b871cfada90567c156fa65eb (patch)
treec105467871f138f3ab046db102d47557d75b4705
parent339c8817ecda334f3f7af41df07a6e7bdce8824a (diff)
new Facebook plugin: very first version
-rw-r--r--protocols/Facebook/CMakeLists.txt5
-rw-r--r--protocols/Facebook/facebook.vcxproj33
-rw-r--r--protocols/Facebook/facebook.vcxproj.filters4
-rw-r--r--protocols/Facebook/proto_facebook/CMakeLists.txt2
-rw-r--r--protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj28
-rw-r--r--protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj.filters4
-rw-r--r--protocols/Facebook/proto_facebook/res/Away.icobin0 -> 5430 bytes
-rw-r--r--protocols/Facebook/proto_facebook/res/Invisible.icobin0 -> 5430 bytes
-rw-r--r--protocols/Facebook/proto_facebook/res/Offline.icobin0 -> 5430 bytes
-rw-r--r--protocols/Facebook/proto_facebook/res/Online.icobin0 -> 5430 bytes
-rw-r--r--protocols/Facebook/proto_facebook/res/Proto_Facebook.rc73
-rw-r--r--protocols/Facebook/proto_facebook/src/resource.h19
-rw-r--r--protocols/Facebook/res/facebook.icobin0 -> 1150 bytes
-rw-r--r--protocols/Facebook/res/facebook.rc52
-rw-r--r--protocols/Facebook/res/version.rc9
-rw-r--r--protocols/Facebook/src/db.h97
-rw-r--r--protocols/Facebook/src/main.cpp72
-rw-r--r--protocols/Facebook/src/proto.cpp35
-rw-r--r--protocols/Facebook/src/proto.h41
-rw-r--r--protocols/Facebook/src/resource.h5
-rw-r--r--protocols/Facebook/src/stdafx.cxx18
-rw-r--r--protocols/Facebook/src/stdafx.h56
-rw-r--r--protocols/Facebook/src/version.h13
23 files changed, 566 insertions, 0 deletions
diff --git a/protocols/Facebook/CMakeLists.txt b/protocols/Facebook/CMakeLists.txt
new file mode 100644
index 0000000000..6441c53332
--- /dev/null
+++ b/protocols/Facebook/CMakeLists.txt
@@ -0,0 +1,5 @@
+file(GLOB SOURCES "src/*.h" "src/requests/*.h" "src/*.cpp" "res/*.rc" "${CMAKE_SOURCE_DIR}/utils/std_string_utils.cpp")
+set(TARGET Facebook)
+include(${CMAKE_SOURCE_DIR}/cmake/plugin.cmake)
+target_link_libraries(${TARGET} libjson)
+add_subdirectory(proto_facebook) \ No newline at end of file
diff --git a/protocols/Facebook/facebook.vcxproj b/protocols/Facebook/facebook.vcxproj
new file mode 100644
index 0000000000..9bf2597eb3
--- /dev/null
+++ b/protocols/Facebook/facebook.vcxproj
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>Facebook</ProjectName>
+ <ProjectGuid>{86033E58-A1E3-43AD-AE8E-305E15E72A91}</ProjectGuid>
+ </PropertyGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(ProjectDir)..\..\build\vc.common\plugin.props" />
+ </ImportGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\libs\libjson\libjson.vcxproj">
+ <Project>{f6a9340e-b8d9-4c75-be30-47dc66d0abc7}</Project>
+ </ProjectReference>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/protocols/Facebook/facebook.vcxproj.filters b/protocols/Facebook/facebook.vcxproj.filters
new file mode 100644
index 0000000000..fcae13a9d8
--- /dev/null
+++ b/protocols/Facebook/facebook.vcxproj.filters
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(ProjectDir)..\..\build\vc.common\common.filters" />
+</Project> \ No newline at end of file
diff --git a/protocols/Facebook/proto_facebook/CMakeLists.txt b/protocols/Facebook/proto_facebook/CMakeLists.txt
new file mode 100644
index 0000000000..be5f194172
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/CMakeLists.txt
@@ -0,0 +1,2 @@
+set(TARGET Proto_Facebook)
+include(${CMAKE_SOURCE_DIR}/cmake/icons.cmake) \ No newline at end of file
diff --git a/protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj b/protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj
new file mode 100644
index 0000000000..4365e2b2fc
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>Proto_Facebook</ProjectName>
+ <ProjectGuid>{44298314-7DD4-4EF7-B576-30E503257223}</ProjectGuid>
+ </PropertyGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(ProjectDir)..\..\..\build\vc.common\icons.props" />
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj.filters b/protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj.filters
new file mode 100644
index 0000000000..28f81e7f1b
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/Proto_Facebook.vcxproj.filters
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(ProjectDir)..\..\..\build\vc.common\common.filters" />
+</Project> \ No newline at end of file
diff --git a/protocols/Facebook/proto_facebook/res/Away.ico b/protocols/Facebook/proto_facebook/res/Away.ico
new file mode 100644
index 0000000000..4c3987b76c
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/res/Away.ico
Binary files differ
diff --git a/protocols/Facebook/proto_facebook/res/Invisible.ico b/protocols/Facebook/proto_facebook/res/Invisible.ico
new file mode 100644
index 0000000000..caff5b5e3d
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/res/Invisible.ico
Binary files differ
diff --git a/protocols/Facebook/proto_facebook/res/Offline.ico b/protocols/Facebook/proto_facebook/res/Offline.ico
new file mode 100644
index 0000000000..ec0c820259
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/res/Offline.ico
Binary files differ
diff --git a/protocols/Facebook/proto_facebook/res/Online.ico b/protocols/Facebook/proto_facebook/res/Online.ico
new file mode 100644
index 0000000000..07170ab5be
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/res/Online.ico
Binary files differ
diff --git a/protocols/Facebook/proto_facebook/res/Proto_Facebook.rc b/protocols/Facebook/proto_facebook/res/Proto_Facebook.rc
new file mode 100644
index 0000000000..41f561b8b3
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/res/Proto_Facebook.rc
@@ -0,0 +1,73 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "..\src\resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Russian (Russia) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "..\\src\\resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1 ICON "Offline.ico"
+IDI_ICON2 ICON "Online.ico"
+IDI_ICON3 ICON "Away.ico"
+IDI_ICON4 ICON "Invisible.ico"
+
+#endif // Russian (Russia) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/protocols/Facebook/proto_facebook/src/resource.h b/protocols/Facebook/proto_facebook/src/resource.h
new file mode 100644
index 0000000000..906c4991d6
--- /dev/null
+++ b/protocols/Facebook/proto_facebook/src/resource.h
@@ -0,0 +1,19 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by Proto_Facebook.rc
+//
+#define IDI_ICON1 105
+#define IDI_ICON2 104
+#define IDI_ICON3 128
+#define IDI_ICON4 130
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 106
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/protocols/Facebook/res/facebook.ico b/protocols/Facebook/res/facebook.ico
new file mode 100644
index 0000000000..5808707d59
--- /dev/null
+++ b/protocols/Facebook/res/facebook.ico
Binary files differ
diff --git a/protocols/Facebook/res/facebook.rc b/protocols/Facebook/res/facebook.rc
new file mode 100644
index 0000000000..d5669c116a
--- /dev/null
+++ b/protocols/Facebook/res/facebook.rc
@@ -0,0 +1,52 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "..\src\resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (United States) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "..\\src\\resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "winres.h\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+
+IDI_FACEBOOK ICON "facebook.ico"
+
+#endif // English (United States) resources
+/////////////////////////////////////////////////////////////////////////////
diff --git a/protocols/Facebook/res/version.rc b/protocols/Facebook/res/version.rc
new file mode 100644
index 0000000000..5a5ddd63ed
--- /dev/null
+++ b/protocols/Facebook/res/version.rc
@@ -0,0 +1,9 @@
+// Microsoft Visual C++ generated resource script.
+//
+#ifdef APSTUDIO_INVOKED
+#error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+#include "..\src\version.h"
+
+#include "..\..\build\Version.rc"
diff --git a/protocols/Facebook/src/db.h b/protocols/Facebook/src/db.h
new file mode 100644
index 0000000000..6c79ded525
--- /dev/null
+++ b/protocols/Facebook/src/db.h
@@ -0,0 +1,97 @@
+/*
+
+Facebook plugin for Miranda Instant Messenger
+_____________________________________________
+
+Copyright © 2009-11 Michal Zelinka, 2011-17 Robert Pösel, 2017-19 Miranda NG team
+
+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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#pragma once
+
+#define MODULENAME "Facebook"
+
+// Contact DB keys
+#define DBKEY_LOGIN "Email"
+#define DBKEY_ID "ID"
+#define DBKEY_TID "ThreadID"
+#define DBKEY_FIRST_NAME "FirstName"
+#define DBKEY_SECOND_NAME "SecondName"
+#define DBKEY_LAST_NAME "LastName"
+#define DBKEY_NICK "Nick"
+#define DBKEY_USERNAME "Username"
+#define DBKEY_PASS "Password"
+#define DBKEY_DEVICE_ID "DeviceID"
+#define DBKEY_AVATAR "Avatar"
+#define DBKEY_DELETED "DeletedTS"
+#define DBKEY_CONTACT_TYPE "ContactType"
+#define DBKEY_MESSAGE_ID "LastMessageId"
+#define DBKEY_MESSAGE_READ "LastMsgReadTime"
+#define DBKEY_MESSAGE_READERS "MessageReaders"
+
+// Thread specific DB keys
+#define DBKEY_CHAT_CAN_REPLY "CanReply"
+#define DBKEY_CHAT_READ_ONLY "ReadOnly"
+#define DBKEY_CHAT_IS_ARCHIVED "IsArchived"
+#define DBKEY_CHAT_IS_SUBSCRIBED "IsSubscribed"
+
+// Contact and account DB keys
+#define DBKEY_KEEP_UNREAD "KeepUnread" // (byte) 1 = don't mark messages as read on server (works globally or per contact)
+
+// Account DB keys
+#define DBKEY_DEF_GROUP "DefaultGroup"
+#define DBKEY_SET_MIRANDA_STATUS "SetMirandaStatus"
+#define DBKEY_SYSTRAY_NOTIFY "UseSystrayNotify"
+#define DBKEY_DISABLE_STATUS_NOTIFY "DisableStatusNotify"
+#define DBKEY_BIG_AVATARS "UseBigAvatars"
+#define DBKEY_DISCONNECT_CHAT "DisconnectChatEnable"
+#define DBKEY_MAP_STATUSES "MapStatuses"
+#define DBKEY_CUSTOM_SMILEYS "CustomSmileys"
+#define DBKEY_SERVER_TYPE "ServerType"
+#define DBKEY_PRIVACY_TYPE "PrivacyType"
+#define DBKEY_PLACE "Place"
+#define DBKEY_LAST_WALL "LastWall"
+#define DBKEY_LOAD_PAGES "LoadPages"
+#define DBKEY_FILTER_ADS "FilterAds"
+#define DBKEY_LOGON_TS "LogonTS"
+#define DBKEY_LAST_ACTION_TS "LastActionTS"
+#define DBKEY_MESSAGES_ON_OPEN "MessagesOnOpen"
+#define DBKEY_MESSAGES_ON_OPEN_COUNT "MessagesOnOpenCount"
+#define DBKEY_HIDE_CHATS "HideChats"
+#define DBKEY_ENABLE_CHATS "EnableChat"
+#define DBKEY_JOIN_EXISTING_CHATS "JoinExistingChats"
+#define DBKEY_NOTIFICATIONS_CHATROOM "NotificationsChatroom"
+#define DBKEY_NAME_AS_NICK "NameAsNick"
+#define DBKEY_LOAD_ALL_CONTACTS "LoadAllContacts"
+#define DBKEY_PAGES_ALWAYS_ONLINE "PagesAlwaysOnline"
+#define DBKEY_TYPING_WHEN_INVISIBLE "TypingWhenInvisible"
+
+// Account DB keys - notifications
+#define DBKEY_EVENT_NOTIFICATIONS_ENABLE "EventNotificationsEnable"
+#define DBKEY_EVENT_FEEDS_ENABLE "EventFeedsEnable"
+#define DBKEY_EVENT_FRIENDSHIP_ENABLE "EventFriendshipEnable"
+#define DBKEY_EVENT_TICKER_ENABLE "EventTickerEnable"
+#define DBKEY_EVENT_ON_THIS_DAY_ENABLE "EventMemoriesEnable"
+#define DBKEY_FEED_TYPE "EventFeedsType"
+
+// Hidden account DB keys (can't be changed through GUI)
+#define DBKEY_POLL_RATE "PollRate" // [HIDDEN] - (byte)
+#define DBKEY_TIMEOUTS_LIMIT "TimeoutsLimit" // [HIDDEN] - (byte)
+#define DBKEY_LOCALE "Locale" // [HIDDEN] - (string) en_US, cs_CZ, etc. (requires restart to apply)
+#define DBKEY_NASEEMS_SPAM_MODE "NaseemsSpamMode" // [HIDDEN] - (byte) 1 = don't load messages sent from other instances (e.g., browser) - known as "Naseem's spam mode"
+#define DBKEY_OPEN_URL_BROWSER "OpenUrlBrowser" // [HIDDEN] - (unicode) = absolute path to browser to open url links with
+#define DBKEY_SEND_MESSAGE_TRIES "SendMessageTries" // [HIDDEN] - (byte) = number of tries to send message, default=1, min=1, max=5
+#define DBKEY_PAGE_PREFIX "PagePrefix" // [HIDDEN] - (unicode) = prefix for name of "page" contacts (requires restart to apply), default is emoji :page_facing_up: (written as unicode char)
diff --git a/protocols/Facebook/src/main.cpp b/protocols/Facebook/src/main.cpp
new file mode 100644
index 0000000000..7a8b8aa641
--- /dev/null
+++ b/protocols/Facebook/src/main.cpp
@@ -0,0 +1,72 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "stdafx.h"
+#include "version.h"
+
+CMPlugin g_plugin;
+
+bool g_bMessageState;
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+PLUGININFOEX pluginInfoEx = {
+ sizeof(PLUGININFOEX),
+ __PLUGIN_NAME,
+ PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
+ __DESCRIPTION,
+ __AUTHOR,
+ __COPYRIGHT,
+ __AUTHORWEB,
+ UNICODE_AWARE,
+ // {86033E58-A1E3-43AD-AE8E-305E15E72A91}
+ { 0xee0543fb, 0x711d, 0x4ac8, { 0xb6, 0xc0, 0x1d, 0xda, 0x48, 0x38, 0x10, 0x7e }}
+};
+
+CMPlugin::CMPlugin() :
+ ACCPROTOPLUGIN<FacebookProto>(MODULENAME, pluginInfoEx)
+{
+ SetUniqueId(DBKEY_ID);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Interface information
+
+extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST };
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Load
+
+static int OnModuleLoaded(WPARAM, LPARAM)
+{
+ g_bMessageState = ServiceExists(MS_MESSAGESTATE_UPDATE) != 0;
+ return 0;
+}
+
+int CMPlugin::Load()
+{
+ HookEvent(ME_SYSTEM_MODULELOAD, OnModuleLoaded);
+ HookEvent(ME_SYSTEM_MODULEUNLOAD, OnModuleLoaded);
+ HookEvent(ME_SYSTEM_MODULESLOADED, OnModuleLoaded);
+
+ // Initialize random generator (used only as fallback in utils)
+ srand(::time(0));
+ return 0;
+}
diff --git a/protocols/Facebook/src/proto.cpp b/protocols/Facebook/src/proto.cpp
new file mode 100644
index 0000000000..63860bc617
--- /dev/null
+++ b/protocols/Facebook/src/proto.cpp
@@ -0,0 +1,35 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "stdafx.h"
+
+FacebookProto::FacebookProto(const char *proto_name, const wchar_t *username) :
+ PROTO<FacebookProto>(proto_name, username)
+{
+
+}
+
+FacebookProto::~FacebookProto()
+{
+}
+
+void FacebookProto::OnModulesLoaded()
+{
+}
diff --git a/protocols/Facebook/src/proto.h b/protocols/Facebook/src/proto.h
new file mode 100644
index 0000000000..6d5bf0c421
--- /dev/null
+++ b/protocols/Facebook/src/proto.h
@@ -0,0 +1,41 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#pragma once
+
+class FacebookProto : public PROTO<FacebookProto>
+{
+
+public:
+ FacebookProto(const char *proto_name, const wchar_t *username);
+ ~FacebookProto();
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // PROTO_INTERFACE
+
+ void OnModulesLoaded() override;
+};
+
+struct CMPlugin : public ACCPROTOPLUGIN<FacebookProto>
+{
+ CMPlugin();
+
+ int Load() override;
+};
diff --git a/protocols/Facebook/src/resource.h b/protocols/Facebook/src/resource.h
new file mode 100644
index 0000000000..558effecf5
--- /dev/null
+++ b/protocols/Facebook/src/resource.h
@@ -0,0 +1,5 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by D:\Development\Miranda NG\Miranda NG\protocols\FacebookRM\res\facebook.rc
+//
+#define IDI_FACEBOOK 101
diff --git a/protocols/Facebook/src/stdafx.cxx b/protocols/Facebook/src/stdafx.cxx
new file mode 100644
index 0000000000..66afad80f1
--- /dev/null
+++ b/protocols/Facebook/src/stdafx.cxx
@@ -0,0 +1,18 @@
+/*
+Copyright (C) 2012-19 Miranda NG team (https://miranda-ng.org)
+
+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 the Free Software Foundation version 2
+of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
diff --git a/protocols/Facebook/src/stdafx.h b/protocols/Facebook/src/stdafx.h
new file mode 100644
index 0000000000..0fe4dc69ce
--- /dev/null
+++ b/protocols/Facebook/src/stdafx.h
@@ -0,0 +1,56 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#pragma once
+
+#include <windows.h>
+#include <time.h>
+
+#include <win2k.h>
+#include <newpluginapi.h>
+#include <m_avatars.h>
+#include <m_chat.h>
+#include <m_clistint.h>
+#include <m_database.h>
+#include <m_idle.h>
+#include <m_ignore.h>
+#include <m_langpack.h>
+#include <m_message.h>
+#include <m_netlib.h>
+#include <m_options.h>
+#include <m_popup.h>
+#include <m_protosvc.h>
+#include <m_protoint.h>
+#include <m_skin.h>
+#include <m_icolib.h>
+#include <m_hotkeys.h>
+#include <m_folders.h>
+#include <m_smileyadd.h>
+#include <m_toptoolbar.h>
+#include <m_json.h>
+#include <m_imgsrvc.h>
+#include <m_http.h>
+#include <m_messagestate.h>
+#include <m_gui.h>
+
+#include "db.h"
+#include "proto.h"
+
+extern bool g_bMessageState;
diff --git a/protocols/Facebook/src/version.h b/protocols/Facebook/src/version.h
new file mode 100644
index 0000000000..d9f70ae508
--- /dev/null
+++ b/protocols/Facebook/src/version.h
@@ -0,0 +1,13 @@
+#define __MAJOR_VERSION 0
+#define __MINOR_VERSION 0
+#define __RELEASE_NUM 0
+#define __BUILD_NUM 1
+
+#include <stdver.h>
+
+#define __PLUGIN_NAME "Facebook"
+#define __FILENAME "Facebook.dll"
+#define __DESCRIPTION "Facebook protocol support for Miranda NG."
+#define __AUTHOR "Miranda NG Team"
+#define __AUTHORWEB "https://miranda-ng.org/p/Facebook/"
+#define __COPYRIGHT "© 2019 Miranda NG team"