From 048aaf0c4e77402adf584e3318e5aae6f1cdd749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Mon, 5 Nov 2012 21:11:48 +0000 Subject: XFire adoption (crashes on login, no 64bit) git-svn-id: http://svn.miranda-ng.org/main/trunk@2212 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Xfire/src/baseProtocol.h | 272 +++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 protocols/Xfire/src/baseProtocol.h (limited to 'protocols/Xfire/src/baseProtocol.h') diff --git a/protocols/Xfire/src/baseProtocol.h b/protocols/Xfire/src/baseProtocol.h new file mode 100644 index 0000000000..1e63fb59c2 --- /dev/null +++ b/protocols/Xfire/src/baseProtocol.h @@ -0,0 +1,272 @@ +/* + * Plugin of miranda IM(ICQ) for Communicating with users of the XFire Network. + * + * Copyright (C) 2010 by + * dufte + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Based on J. Lawler - BaseProtocol + * Herbert Poul/Beat Wolf - xfirelib + * + * Miranda ICQ: the free icq client for MS Windows + * Copyright (C) 2000-2008 Richard Hughes, Roland Rabien & Tristan Van de Vreede + * + */ + +#define MIRANDA_VER 0x0A00 + +//===================================================== +// Includes (yea why not include lots of stuff :D ) +//===================================================== +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "resource.h" +#include +#include +#include +#include +#include + +//Miranda SDK headers +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "services.h" + +/*#pragma comment(lib, "atl.lib") +#include +#define _ATL_DLL_IMPL +#include */ + +#ifndef _BASEPROTO_H +#define _BASEPROTO_H + +//======================================================= +// Definitions +//======================================================= +#define protocolname "XFire" //no spaces here :) + +/* */ +typedef DWORD (*pGetExtendedTcpTable)( + __out_bcount_opt(*pdwSize) PVOID pTcpTable, + __inout PDWORD pdwSize, + __in BOOL bOrder, + __in ULONG ulAf, + __in TCP_TABLE_CLASS TableClass, + __in ULONG Reserved + ); + +typedef DWORD (*pGetExtendedUdpTable)( + __out_bcount_opt(*pdwSize) PVOID pUdpTable, + __inout PDWORD pdwSize, + __in BOOL bOrder, + __in ULONG ulAf, + __in UDP_TABLE_CLASS TableClass, + __in ULONG Reserved + ); + +//======================================================= +// Defines +//======================================================= +//General +extern HINSTANCE hinstance; +extern int bpStatus; + +//Services.c +int GetCaps(WPARAM wParam,LPARAM lParam); +int GetName(WPARAM wParam,LPARAM lParam); +int TMLoadIcon(WPARAM wParam,LPARAM lParam); +int SetStatus(WPARAM wParam,LPARAM lParam); +int GetStatus(WPARAM wParam,LPARAM lParam); +BOOL IsXFireContact(HANDLE h); +int displayPopup(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType,HICON hhicon=NULL); +BOOL CreateToolTip(int toolID, HWND hDlg, CHAR* pText); +void EnableDlgItem(HWND hwndDlg, UINT control, int state); +BOOL str_replace(char*src,char*find,char*rep); +extern void Message(LPVOID msg); +extern void MessageE(LPVOID msg); +char* GetLaunchPath(char*launch); +unsigned short r(unsigned short data); +BOOL GetServerIPPort(DWORD pid,char*localaddrr,unsigned long localaddr,char*ip1,char*ip2,char*ip3,char*ip4,long*port); +BOOL GetServerIPPort2(DWORD pid,char*localaddrr,unsigned long localaddr,char*ip1,char*ip2,char*ip3,char*ip4,long*port); +int SetNickName(WPARAM newnick, LPARAM lparam); +BOOL FindTeamSpeak(DWORD*pid,int*vid); +char*menuitemtext(char*mtext); +BOOL checkCommandLine(HANDLE hProcess,char * mustcontain,char * mustnotcontain); +char * getItem(char * string,char delim,int count); +BOOL GetWWWContent(char*host,char* request,char*filename,BOOL dontoverwrite); +BOOL GetWWWContent2(char*address,char*filename,BOOL dontoverwrite,char**tobuf=NULL,unsigned int* size=NULL); +BOOL CheckWWWContent(char*address); +unsigned int getfilesize(char*path); +void UpdateMyXFireIni(LPVOID dummy); +void UpdateMyIcons(LPVOID dummy); +BOOL IsContactMySelf(std::string buddyusername); +DWORD xfire_GetPrivateProfileString(__in LPCTSTR lpAppName, __in LPCTSTR lpKeyName, __in LPCTSTR lpDefault, __out LPTSTR lpReturnedString, __in DWORD nSize, __in LPCTSTR lpFileName); +BOOL mySleep(int ms,HANDLE evt); +void __stdcall XFireLog( const char* fmt, ... ); + +#define ID_STATUS_RECONNECT ID_STATUS_OFFLINE-1 + +struct CONTACT // Contains info about users +{ + TCHAR* name; + TCHAR* user; + TCHAR* host; + bool ExactOnly; + bool ExactWCOnly; + bool ExactNick; +}; + + +#define MSGBOX(msg) mir_forkthread(Message,(LPVOID)msg) +#define MSGBOXE(msg) mir_forkthread(MessageE,(LPVOID)msg) + +#pragma comment(lib,"Advapi32.lib") +#pragma comment(lib,"Psapi.lib") +#pragma comment(lib,"gdiplus.lib") +#pragma comment(lib,"comdlg32.lib") +#pragma comment(lib,"comctl32.lib") +#pragma comment(lib,"shell32.lib") + +//===================================================== +// Definitions +//===================================================== + +struct GameIco { + int gameid; + HANDLE handle; + HICON hicon; +}; + +struct XFireContact { + char * username; + char * nick; + int id; + int sid; +}; + +struct XFireAvatar { + int type; + char backup[256]; + char file[256]; + char rfile[256]; +}; + +struct XFire_FoundGame +{ + int gameid; + int gameid2; + short send_gameid; + char path[256]; + char mpath[9][256]; + int morepaths; + char launchparams[1024]; + char networkparams[1024]; + char userparams[1024]; + char pwparams[1024]; + char mustcontain[1024]; + char notcontain[1024]; + char temp[128]; + BOOL setstatusmsg; + BOOL custom; + BOOL skip; + BOOL noicqstatus; + HANDLE menuitem; +}; + +struct XFire_SetAvatar +{ + HANDLE hContact; + char* username; +}; + +struct gServerstats { + int players; + int maxplayers; + char name[512]; + char map[512]; + char gametype[512]; + char fgametype[512]; + BOOL password; +}; + +struct GameServerQuery_query { + int xfiregameid; + char ip[16]; + WORD port; + HANDLE handle; //will be overwritten + int queryengine; // immer 0 +}; + +#define XFIRE_MAX_STATIC_STRING_LEN 1024 +#define XFIRE_SCAN_VAL 0x3 + +#define XFIRE_GAME_ICON 0 +#define XFIRE_VOICE_ICON 1 + + +typedef struct { + int cbSize; + char *szProto; // pointer to protocol modulename (NULL means global) + union + { + char *szMsg; + WCHAR *wszMsg; + TCHAR *tszMsg; + }; // pointer to the status message _format_ (i.e. it's an unparsed message containing variables, in any case. NAS takes care of parsing) (may be NULL - means that there's no specific message for this protocol - then the global status message will be used) +/* + Be aware that MS_NAS_GETSTATE allocates memory for szMsg through Miranda's + memory management interface (MS_SYSTEM_GET_MMI). And MS_NAS_SETSTATE + expects szMsg to be allocated through the same service. MS_NAS_SETSTATE deallocates szMsg. +*/ + WORD status; // status mode. 0 means current (NAS will overwrite 0 with the current status mode) +// for MS_NAS_GETSTATE if the specified status is not 0, MS_NAS_GETSTATE will return the default/last status message (depends on settings) - i.e. the same message that will be shown by default when user changes status to the specified one. please note that, for example, if current status mode is ID_STATUS_AWAY, then status messages returned by MS_NAS_GETSTATE for status=0 and status=ID_STATUS_AWAY may be different! for status=ID_STATUS_AWAY it always returns the default/last status message, and for status=0 it returns _current_ status message. + int Flags; +} NAS_PROTOINFO; + +#endif \ No newline at end of file -- cgit v1.2.3