int __declspec(dllexport) Load(PLUGINLINK *link) { PROTOCOLDESCRIPTOR pd; pluginLink = link; mir_getMMI( &mmi ); mir_getMD5I( &md5i ); mir_getSHA1I( &sha1i ); mir_getUTFI( &utfi ); DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); srand((unsigned) time(NULL)); TlenRegisterIcons(); // Register protocol module ZeroMemory(&pd, sizeof(PROTOCOLDESCRIPTOR)); pd.cbSize = sizeof(PROTOCOLDESCRIPTOR); pd.szName = "TLEN"; pd.fnInit = ( pfnInitProto )tlenProtoInit; pd.fnUninit = ( pfnUninitProto )tlenProtoUninit; pd.type = PROTOTYPE_PROTOCOL; CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM) &pd); return 0; }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); srand((unsigned)time(NULL)); TlenRegisterIcons(); // Register protocol module PROTOCOLDESCRIPTOR pd = { 0 }; pd.cbSize = sizeof(pd); pd.szName = "TLEN"; pd.fnInit = (pfnInitProto)tlenProtoInit; pd.fnUninit = (pfnUninitProto)tlenProtoUninit; pd.type = PROTOTYPE_PROTOCOL; Proto_RegisterModule(&pd); return 0; }
int __declspec(dllexport) Load(PLUGINLINK *link) { PROTOCOLDESCRIPTOR pd; HANDLE hContact; char s[256]; char text[_MAX_PATH]; char *p, *q; char *szProto; CLISTMENUITEM mi, clmi; DBVARIANT dbv; pluginLink = link; memoryManagerInterface.cbSize = sizeof(struct MM_INTERFACE); CallService(MS_SYSTEM_GET_MMI,0,(LPARAM)&memoryManagerInterface); GetModuleFileName(hInst, text, sizeof(text)); p = strrchr(text, '\\'); p++; q = strrchr(p, '.'); *q = '\0'; jabberProtoName = mir_strdup(p); _strupr(jabberProtoName); jabberModuleName = mir_strdup(jabberProtoName); _strlwr(jabberModuleName); jabberModuleName[0] = toupper(jabberModuleName[0]); JabberLog("Setting protocol/module name to '%s/%s'", jabberProtoName, jabberModuleName); DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); jabberMainThreadId = GetCurrentThreadId(); //hLibSSL = NULL; // hWndListGcLog = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); TlenRegisterIcons(); TlenLoadOptions(); HookEvent_Ex(ME_OPT_INITIALISE, TlenOptInit); HookEvent_Ex(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent_Ex(ME_SYSTEM_PRESHUTDOWN, PreShutdown); sprintf(s, "%s/%s", jabberProtoName, "Nudge"); hTlenNudge = CreateHookableEvent(s); // Register protocol module ZeroMemory(&pd, sizeof(PROTOCOLDESCRIPTOR)); pd.cbSize = sizeof(PROTOCOLDESCRIPTOR); pd.szName = jabberProtoName; pd.type = PROTOTYPE_PROTOCOL; CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM) &pd); memset(&mi, 0, sizeof(CLISTMENUITEM)); mi.cbSize = sizeof(CLISTMENUITEM); memset(&clmi, 0, sizeof(CLISTMENUITEM)); clmi.cbSize = sizeof(CLISTMENUITEM); clmi.flags = CMIM_FLAGS | CMIF_GRAYED; mi.pszPopupName = jabberModuleName; mi.popupPosition = 500090000; wsprintf(text, "%s/MainMenuChats", jabberModuleName); CreateServiceFunction_Ex(text, TlenMUCMenuHandleChats); mi.pszName = TranslateT("Tlen Chats"); mi.position = 2000050001; mi.hIcon = tlenIcons[TLEN_IDI_CHATS]; mi.pszService = text; hMenuChats = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) hMenuChats, (LPARAM) &clmi); // "Multi-User Conference" wsprintf(text, "%s/MainMenuMUC", jabberModuleName); CreateServiceFunction_Ex(text, TlenMUCMenuHandleMUC); mi.pszName = TranslateT("Multi-User Conference"); mi.position = 2000050002; mi.hIcon = tlenIcons[TLEN_IDI_MUC]; mi.pszService = text; hMenuMUC = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) hMenuMUC, (LPARAM) &clmi); wsprintf(text, "%s/MainMenuInbox", jabberModuleName); CreateServiceFunction_Ex(text, TlenMenuHandleInbox); mi.pszName = TranslateT("Tlen Inbox"); mi.position = 2000050003; mi.hIcon = tlenIcons[TLEN_IDI_MAIL]; mi.pszService = text; hMenuInbox = (HANDLE) CallService(MS_CLIST_ADDMAINMENUITEM, 0, (LPARAM) &mi); // "Invite to MUC" sprintf(text, "%s/ContactMenuMUC", jabberModuleName); CreateServiceFunction_Ex(text, TlenMUCContactMenuHandleMUC); mi.pszName = TranslateT("Multi-User Conference"); mi.position = -2000020000; mi.hIcon = tlenIcons[TLEN_IDI_MUC]; mi.pszService = text; mi.pszContactOwner = jabberProtoName; hMenuContactMUC = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); // "Invite to voice chat" sprintf(text, "%s/ContactMenuVoice", jabberModuleName); CreateServiceFunction_Ex(text, TlenVoiceContactMenuHandleVoice); mi.pszName = TranslateT("Voice Chat"); mi.position = -2000018000; mi.hIcon = tlenIcons[TLEN_IDI_VOICE]; mi.pszService = text; mi.pszContactOwner = jabberProtoName; hMenuContactVoice = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); // "Request authorization" sprintf(text, "%s/RequestAuth", jabberModuleName); CreateServiceFunction_Ex(text, TlenContactMenuHandleRequestAuth); mi.pszName = TranslateT("Request authorization"); mi.position = -2000001001; mi.hIcon = tlenIcons[TLEN_IDI_REQUEST]; mi.pszService = text; mi.pszContactOwner = jabberProtoName; hMenuContactRequestAuth = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); // "Grant authorization" sprintf(text, "%s/GrantAuth", jabberModuleName); CreateServiceFunction_Ex(text, TlenContactMenuHandleGrantAuth); mi.pszName = TranslateT("Grant authorization"); mi.position = -2000001000; mi.hIcon = tlenIcons[TLEN_IDI_GRANT]; mi.pszService = text; mi.pszContactOwner = jabberProtoName; hMenuContactGrantAuth = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); // "Send picture" sprintf(text, "%s/SendPicture", jabberModuleName); CreateServiceFunction_Ex(text, TlenContactMenuHandleSendPicture); mi.pszName = TranslateT("Send picture"); // clmi.flags = CMIM_FLAGS | CMIF_NOTOFFLINE;// | CMIF_GRAYED; mi.position = -2000001002; mi.hIcon = tlenIcons[TLEN_IDI_GRANT]; mi.pszService = text; mi.pszContactOwner = jabberProtoName; //CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); //hMenuContactGrantAuth = (HANDLE) mi.position = -2000020000; mi.flags = CMIF_NOTONLINE; mi.hIcon = LoadSkinnedIcon(SKINICON_EVENT_FILE); mi.pszName = TranslateT("&File"); mi.pszService = MS_FILE_SENDFILE; mi.pszContactOwner = jabberProtoName; hMenuContactFile = (HANDLE) CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (LPARAM) &mi); HookEvent_Ex(ME_CLIST_PREBUILDCONTACTMENU, TlenPrebuildContactMenu); if (!DBGetContactSetting(NULL, jabberProtoName, "LoginServer", &dbv)) { DBFreeVariant(&dbv); } else { DBWriteContactSettingString(NULL, jabberProtoName, "LoginServer", "tlen.pl"); } if (!DBGetContactSetting(NULL, jabberProtoName, "ManualHost", &dbv)) { DBFreeVariant(&dbv); } else { DBWriteContactSettingString(NULL, jabberProtoName, "ManualHost", "s1.tlen.pl"); } // Set all contacts to offline hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact != NULL) { szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); if(szProto!=NULL && !strcmp(szProto, jabberProtoName)) { if (DBGetContactSettingWord(hContact, jabberProtoName, "Status", ID_STATUS_OFFLINE) != ID_STATUS_OFFLINE) { DBWriteContactSettingWord(hContact, jabberProtoName, "Status", ID_STATUS_OFFLINE); } } hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } streamId = NULL; jabberThreadInfo = NULL; jabberConnected = FALSE; jabberOnline = FALSE; jabberStatus = ID_STATUS_OFFLINE; memset((char *) &modeMsgs, 0, sizeof(JABBER_MODEMSGS)); //jabberModeMsg = NULL; jabberCodePage = CP_ACP; InitializeCriticalSection(&mutex); InitializeCriticalSection(&modeMsgMutex); srand((unsigned) time(NULL)); JabberSerialInit(); JabberIqInit(); JabberListInit(); JabberSvcInit(); return 0; }