diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-09-24 11:48:03 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-09-24 11:48:03 +0300 |
commit | 6d88cf817136473cfb98332cb4616e3563e33971 (patch) | |
tree | cd1f732b3cb10cc91e52e3411a3595d2a80a4279 /init.cpp | |
parent | a2d855c24796591e73ce8f2160746716aec6516e (diff) |
replacer
Diffstat (limited to 'init.cpp')
-rw-r--r-- | init.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/init.cpp b/init.cpp new file mode 100644 index 0000000..e0a9e6c --- /dev/null +++ b/init.cpp @@ -0,0 +1,145 @@ +// Copyright © 2010 sss +// +// 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, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "commonheaders.h" + +//global variables +bool bAppendTags = false, bDebugLog = false, bJabberAPI = false, bIsMiranda09 = false, bMetaContacts = false, bFileTransfers = false; +TCHAR *inopentag = NULL, *inclosetag = NULL, *outopentag = NULL, *outclosetag = NULL, *password = NULL; + +list <JabberAccount*> Accounts; + +HINSTANCE hInst; +HANDLE hLoadPubKey = NULL, hToggleEncryption = NULL, hOnPreBuildContactMenu = NULL, hSendKey = NULL, g_hCLIcon = NULL; +PLUGINLINK *pluginLink; +IconExtraColumn g_IEC = {0}; +static int OnModulesLoaded(WPARAM wParam,LPARAM lParam); +extern char *date(); +MM_INTERFACE mmi = {0}; +UTF8_INTERFACE utfi = {0}; +XML_API xi = {0}; + + +#define MIID_REPLACER { 0x6587ce2, 0x3bf8, 0x4e74, { 0xa1, 0x87, 0x1e, 0xa8, 0x59, 0x6a, 0x6b, 0x5f } } + +PLUGININFOEX pluginInfo={ + sizeof(PLUGININFOEX), + 0, + PLUGIN_MAKE_VERSION(0,0,0,1), + "simple word replacer", + "who did this ? %)", + "some@mail.gnu", + "© 2010 someone", + "http://?", + 1, //unicode + 0, //doesn't replace anything built-in + MIID_REPLACER +}; + +BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + hInst=hinstDLL; + return TRUE; +} + + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + static char plugname[52]; + strcpy(plugname, szReplacerModuleName" ["); + strcat(plugname, date()); + strcat(plugname, " "); + strcat(plugname, __TIME__); + strcat(plugname, "]"); + pluginInfo.shortName = plugname; + return &pluginInfo; +} + +static const MUUID interfaces[] = {MIID_REPLACER, MIID_LAST}; +extern "C" __declspec(dllexport) const MUUID* MirandaPluginInterfaces(void) +{ + return interfaces; +} + +void init_vars() +{ +} + +extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) +{ + pluginLink=link; + init_vars(); + HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); + mir_getMMI(&mmi); + mir_getUTFI(&utfi); + return 0; +} + +int AddContact(WPARAM w, LPARAM l) +{ + CallService(MS_PROTO_ADDTOCONTACT,w,(LPARAM)szReplacerModuleName); + return 0; +} + + +static int OnModulesLoaded(WPARAM wParam,LPARAM lParam) +{ + + int RecvMsgSvc(WPARAM w, LPARAM l); + int SendMsgSvc(WPARAM w, LPARAM l); + int HookSendMsg(WPARAM w, LPARAM l); + int ReplacerOptInit(WPARAM wParam,LPARAM lParam); + + bMetaContacts = ServiceExists(MS_MC_GETMETACONTACT); + + HookEvent(ME_OPT_INITIALISE, ReplacerOptInit); + HookEvent(ME_DB_EVENT_FILTER_ADD, HookSendMsg); + + PROTOCOLDESCRIPTOR pd = {0}; + pd.cbSize=sizeof(PROTOCOLDESCRIPTOR); + pd.szName=szReplacerModuleName; + pd.type=PROTOTYPE_ENCRYPTION; + CallService(MS_PROTO_REGISTERMODULE,0,(LPARAM)&pd); + + CreateProtoServiceFunction(szReplacerModuleName,PSR_MESSAGE,RecvMsgSvc); + CreateProtoServiceFunction(szReplacerModuleName,PSS_MESSAGE,SendMsgSvc); + CreateProtoServiceFunction(szReplacerModuleName,PSR_MESSAGE"W",RecvMsgSvc); + CreateProtoServiceFunction(szReplacerModuleName,PSS_MESSAGE"W",SendMsgSvc); + + for (HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); hContact; hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0)) + if (!CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)szReplacerModuleName)) + CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)szReplacerModuleName); + + HookEvent(ME_DB_CONTACT_ADDED,AddContact); + + + + return 0; +} + + +extern "C" int __declspec(dllexport) Unload(void) +{ + for (HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); hContact; hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0)) + DBDeleteContactSetting(hContact, szReplacerModuleName, "KeyID_Prescense"); + mir_free(inopentag); + mir_free(inclosetag); + mir_free(outopentag); + mir_free(outclosetag); + if(password) + delete [] password; + return 0; +} |