From e7b69721b0d390cec3f81f97134a51bfef228cf8 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 28 Mar 2018 20:01:30 +0300 Subject: PFLAG_UNIQUEIDSETTING removed, its functionality transferred to Proto_SetUniqueId / Proto_GetUniqueId --- protocols/IRCG/src/ircproto.cpp | 3 - protocols/IRCG/src/ircproto.h | 432 ++++++++++++++++++++++++++++++++++++++++ protocols/IRCG/src/stdafx.h | 419 +------------------------------------- 3 files changed, 440 insertions(+), 414 deletions(-) create mode 100644 protocols/IRCG/src/ircproto.h (limited to 'protocols/IRCG') diff --git a/protocols/IRCG/src/ircproto.cpp b/protocols/IRCG/src/ircproto.cpp index 323e1dd587..fe7bb55831 100644 --- a/protocols/IRCG/src/ircproto.cpp +++ b/protocols/IRCG/src/ircproto.cpp @@ -451,9 +451,6 @@ DWORD_PTR __cdecl CIrcProto::GetCaps(int type, MCONTACT) case PFLAG_MAXLENOFMESSAGE: return 400; - - case PFLAG_UNIQUEIDSETTING: - return (DWORD_PTR) "Nick"; } return 0; diff --git a/protocols/IRCG/src/ircproto.h b/protocols/IRCG/src/ircproto.h new file mode 100644 index 0000000000..4a3e27fd43 --- /dev/null +++ b/protocols/IRCG/src/ircproto.h @@ -0,0 +1,432 @@ +/* +IRC plugin for Miranda IM + +Copyright (C) 2003-05 Jurgen Persson +Copyright (C) 2007-09 George Hazan + +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. +*/ + +#ifndef _IRCPROTO_H_ +#define _IRCPROTO_H_ + +///////////////////////////////////////////////////////////////////////////////////////// + +typedef bool (CIrcProto::*PfnIrcMessageHandler)(const CIrcMessage *pmsg); + +#pragma pack(4) + +struct CIrcHandler +{ + CIrcHandler(const wchar_t* _name, PfnIrcMessageHandler _handler) : + m_name(_name), + m_handler(_handler) + { + } + + const wchar_t* m_name; + PfnIrcMessageHandler m_handler; +}; +#pragma pack() + +struct CIrcProto : public PROTO +{ + CIrcProto(const char*, const wchar_t*); + ~CIrcProto(); + + // Protocol interface + + virtual MCONTACT __cdecl AddToList(int flags, PROTOSEARCHRESULT* psr); + + virtual int __cdecl Authorize(MEVENT hDbEvent); + virtual int __cdecl AuthDeny(MEVENT hDbEvent, const wchar_t* szReason); + + virtual HANDLE __cdecl FileAllow(MCONTACT hContact, HANDLE hTransfer, const wchar_t *szPath); + virtual int __cdecl FileCancel(MCONTACT hContact, HANDLE hTransfer); + virtual int __cdecl FileDeny(MCONTACT hContact, HANDLE hTransfer, const wchar_t *szReason); + virtual int __cdecl FileResume(HANDLE hTransfer, int *action, const wchar_t **szFilename); + + virtual DWORD_PTR __cdecl GetCaps(int type, MCONTACT hContact = NULL); + + virtual HANDLE __cdecl SearchBasic(const wchar_t* id); + + virtual HANDLE __cdecl SendFile(MCONTACT hContact, const wchar_t *szDescription, wchar_t **ppszFiles); + virtual int __cdecl SendMsg(MCONTACT hContact, int flags, const char* msg); + + virtual int __cdecl SetStatus(int iNewStatus); + + virtual HANDLE __cdecl GetAwayMsg(MCONTACT hContact); + virtual int __cdecl SetAwayMsg(int m_iStatus, const wchar_t *msg); + + virtual int __cdecl OnEvent(PROTOEVENTTYPE eventType, WPARAM wParam, LPARAM lParam); + + // Services + INT_PTR __cdecl SvcCreateAccMgrUI(WPARAM, LPARAM); + INT_PTR __cdecl GetMyAwayMsg(WPARAM, LPARAM); + + INT_PTR __cdecl OnChangeNickMenuCommand(WPARAM, LPARAM); + INT_PTR __cdecl OnDoubleclicked(WPARAM, LPARAM); + INT_PTR __cdecl OnJoinChat(WPARAM, LPARAM); + INT_PTR __cdecl OnJoinMenuCommand(WPARAM, LPARAM); + INT_PTR __cdecl OnLeaveChat(WPARAM, LPARAM); + INT_PTR __cdecl OnMenuChanSettings(WPARAM, LPARAM); + INT_PTR __cdecl OnMenuDisconnect(WPARAM, LPARAM); + INT_PTR __cdecl OnMenuIgnore(WPARAM, LPARAM); + INT_PTR __cdecl OnMenuWhois(WPARAM, LPARAM); + INT_PTR __cdecl OnQuickConnectMenuCommand(WPARAM, LPARAM); + INT_PTR __cdecl OnShowListMenuCommand(WPARAM, LPARAM); + INT_PTR __cdecl OnShowServerMenuCommand(WPARAM, LPARAM); + + // Events + int __cdecl OnContactDeleted(WPARAM, LPARAM); + int __cdecl OnInitOptionsPages(WPARAM, LPARAM); + int __cdecl OnInitUserInfo(WPARAM, LPARAM); + int __cdecl OnModulesLoaded(WPARAM, LPARAM); + int __cdecl OnMenuPreBuild(WPARAM, LPARAM); + int __cdecl OnPreShutdown(WPARAM, LPARAM); + int __cdecl OnDbSettingChanged(WPARAM, LPARAM); + + int __cdecl GCEventHook(WPARAM, LPARAM); + int __cdecl GCMenuHook(WPARAM, LPARAM); + + // Data + + char m_serverName[100]; + char m_password[500]; + wchar_t m_identSystem[10]; + char m_network[30]; + char m_portStart[10]; + char m_portEnd[10]; + int m_iSSL; + wchar_t m_identPort[10]; + wchar_t m_nick[30], m_pNick[30]; + wchar_t m_alternativeNick[30]; + wchar_t m_name[200]; + wchar_t m_userID[200]; + wchar_t m_quitMessage[400]; + wchar_t m_userInfo[500]; + char m_myHost[50]; + char m_mySpecifiedHost[500]; + char m_mySpecifiedHostIP[50]; + char m_myLocalHost[50]; + WORD m_myLocalPort; + wchar_t *m_alias; + int m_serverComboSelection; + int m_quickComboSelection; + int m_onlineNotificationTime; + int m_onlineNotificationLimit; + BYTE m_scriptingEnabled; + BYTE m_IPFromServer; + BYTE m_showAddresses; + BYTE m_disconnectDCCChats; + BYTE m_disableErrorPopups; + BYTE m_rejoinChannels; + BYTE m_rejoinIfKicked; + BYTE m_hideServerWindow; + BYTE m_ident; + BYTE m_identTimer; + BYTE m_disableDefaultServer; + BYTE m_autoOnlineNotification; + BYTE m_sendKeepAlive; + BYTE m_joinOnInvite; + BYTE m_perform; + BYTE m_forceVisible; + BYTE m_ignore; + BYTE m_ignoreChannelDefault; + BYTE m_useServer; + BYTE m_DCCFileEnabled; + BYTE m_DCCChatEnabled; + BYTE m_DCCChatAccept; + BYTE m_DCCChatIgnore; + BYTE m_DCCPassive; + BYTE m_DCCMode; + WORD m_DCCPacketSize; + BYTE m_manualHost; + BYTE m_oldStyleModes; + BYTE m_channelAwayNotification; + BYTE m_sendNotice; + BYTE m_utfAutodetect; + BYTE m_bUseSASL; + int m_codepage; + COLORREF colors[16]; + HICON hIcon[13]; + + OBJLIST vUserhostReasons; + OBJLIST vWhoInProgress; + + mir_cs cs; + mir_cs m_gchook; + mir_cs m_resolve; + HANDLE m_evWndCreate; + + CMStringW m_statusMessage; + int m_iTempCheckTime; + + CIrcSessionInfo si; + + int m_portCount; + DWORD m_bConnectRequested; + DWORD m_bConnectThreadRunning; + + HGENMENU hMenuQuick, hMenuServer, hMenuJoin, hMenuNick, hMenuList; + HNETLIBUSER hNetlibDCC; + + bool bTempDisableCheck, bTempForceCheck, bEcho; + bool nickflag; + + bool bPerformDone; + + CJoinDlg *m_joinDlg; + CListDlg *m_listDlg; + CNickDlg *m_nickDlg; + CWhoisDlg *m_whoisDlg; + CQuickDlg *m_quickDlg; + CManagerDlg *m_managerDlg; + CIgnorePrefsDlg *m_ignoreDlg; + + int m_noOfChannels, m_manualWhoisCount; + CMStringA sChannelModes, sUserModes; + CMStringW sChannelPrefixes, sUserModePrefixes, WhoisAwayReply; + + // clist.cpp + MCONTACT CList_AddContact(CONTACT *user, bool InList, bool SetOnline); + bool CList_SetAllOffline(BYTE ChatsToo); + MCONTACT CList_SetOffline(CONTACT *user); + MCONTACT CList_FindContact(CONTACT *user); + BOOL CList_AddDCCChat(const CMStringW &name, const CMStringW &hostmask, unsigned long adr, int port); + + // commandmonitor.cpp + UINT_PTR IdentTimer, InitTimer, KeepAliveTimer, OnlineNotifTimer, OnlineNotifTimer3; + + int AddOutgoingMessageToDB(MCONTACT hContact, const wchar_t *msg); + bool DoOnConnect(const CIrcMessage *pmsg); + int DoPerform(const char *event); + void __cdecl ResolveIPThread(void *di); + + bool AddIgnore(const wchar_t *mask, const wchar_t *mode, const wchar_t *network); + int IsIgnored(const CMStringW &nick, const CMStringW &address, const CMStringW &host, char type); + int IsIgnored(CMStringW user, char type); + bool RemoveIgnore(const wchar_t *mask); + + // input.cpp + CMStringW DoAlias(const wchar_t *text, wchar_t *window); + BOOL DoHardcodedCommand(CMStringW text, wchar_t *window, MCONTACT hContact); + CMStringW DoIdentifiers(CMStringW text, const wchar_t *window); + void FormatMsg(CMStringW &text); + bool PostIrcMessageWnd(wchar_t *pszWindow, MCONTACT hContact, const wchar_t *szBuf); + bool PostIrcMessage(const wchar_t *fmt, ...); + + // irclib.cpp + UINT_PTR DCCTimer; + void SendIrcMessage(const wchar_t*, bool bNotify = true, int codepage = -1); + + // ircproto.cpp + void __cdecl AckBasicSearch(void* param); + void __cdecl AckMessageFail(void* info); + void __cdecl AckMessageFailDcc(void* info); + void __cdecl AckMessageSuccess(void* info); + + int SetStatusInternal(int iNewStatus, bool bIsInternal); + + //options.cpp + HWND m_hwndConnect; + + OBJLIST m_ignoreItems; + + int m_channelNumber; + CMStringW m_whoReply; + CMStringW sNamesList; + CMStringW sTopic; + CMStringW sTopicName; + CMStringW sTopicTime; + CMStringW m_namesToWho; + CMStringW m_channelsToWho; + CMStringW m_namesToUserhost; + + void InitPrefs(void); + void InitIgnore(void); + + void ReadSettings(TDbSetting* sets, int count); + void RewriteIgnoreSettings(void); + void WriteSettings(TDbSetting* sets, int count); + + // output + BOOL ShowMessage(const CIrcMessage *pmsg); + + // scripting.cpp + INT_PTR __cdecl Scripting_InsertRawIn(WPARAM wParam, LPARAM lParam); + INT_PTR __cdecl Scripting_InsertRawOut(WPARAM wParam, LPARAM lParam); + INT_PTR __cdecl Scripting_InsertGuiIn(WPARAM wParam, LPARAM lParam); + INT_PTR __cdecl Scripting_InsertGuiOut(WPARAM wParam, LPARAM lParam); + INT_PTR __cdecl Scripting_GetIrcData(WPARAM wparam, LPARAM lparam); + + // services.cpp + void ConnectToServer(void); + void DisconnectFromServer(void); + void InitMainMenus(void); + + void __cdecl ConnectServerThread(void*); + void __cdecl DisconnectServerThread(void*); + + // tools.cpp + void AddToJTemp(wchar_t op, CMStringW& sCommand); + bool AddWindowItemData(CMStringW window, const wchar_t *pszLimit, const wchar_t *pszMode, const wchar_t *pszPassword, const wchar_t *pszTopic); + INT_PTR DoEvent(int iEvent, const wchar_t *pszWindow, const wchar_t *pszNick, const wchar_t *pszText, const wchar_t *pszStatus, const wchar_t *pszUserInfo, DWORD_PTR dwItemData, bool bAddToLog, bool bIsMe, time_t timestamp = 1); + void FindLocalIP(HNETLIBCONN con); + bool FreeWindowItemData(CMStringW window, CHANNELINFO* wis); + bool IsChannel(const char* sName); + bool IsChannel(const wchar_t* sName); + void KillChatTimer(UINT_PTR &nIDEvent); + CMStringW MakeWndID(const wchar_t* sWindow); + CMStringW ModeToStatus(int sMode); + CMStringW PrefixToStatus(int cPrefix); + int SetChannelSBText(CMStringW sWindow, CHANNELINFO *wi); + void SetChatTimer(UINT_PTR &nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); + + void ClearUserhostReasons(int type); + void DoUserhostWithReason(int type, CMStringW reason, bool bSendCommand, const wchar_t *userhostparams, ...); + CMStringW GetNextUserhostReason(int type); + CMStringW PeekAtReasons(int type); + + //////////////////////////////////////////////////////////////////////////////////////// + // former CIrcSession class + + void AddDCCSession(MCONTACT hContact, CDccSession *dcc); + void AddDCCSession(DCCINFO *pdci, CDccSession *dcc); + void RemoveDCCSession(MCONTACT hContact); + void RemoveDCCSession(DCCINFO *pdci); + + CDccSession* FindDCCSession(MCONTACT hContact); + CDccSession* FindDCCSession(DCCINFO *pdci); + CDccSession* FindDCCSendByPort(int iPort); + CDccSession* FindDCCRecvByPortAndName(int iPort, const wchar_t *szName); + CDccSession* FindPassiveDCCSend(int iToken); + CDccSession* FindPassiveDCCRecv(CMStringW sName, CMStringW sToken); + + void DisconnectAllDCCSessions(bool Shutdown); + void CheckDCCTimeout(void); + + bool Connect(const CIrcSessionInfo &info); + void Disconnect(void); + void KillIdent(void); + + int NLSend(const wchar_t* fmt, ...); + int NLSend(const char* fmt, ...); + int NLSend(const unsigned char* buf, int cbBuf); + int NLSendNoScript(const unsigned char* buf, int cbBuf); + int NLReceive(unsigned char* buf, int cbBuf); + void InsertIncomingEvent(wchar_t* pszRaw); + + __inline bool IsConnected() const { return con != nullptr; } + + // send-to-stream operators + int getCodepage() const; + __inline void setCodepage(int aPage) { codepage = aPage; } + + CIrcSessionInfo m_info; + +protected: + int codepage; + HNETLIBCONN con; + HNETLIBBIND hBindPort; + void DoReceive(); + LIST m_dcc_chats; + LIST m_dcc_xfers; + +private: + mir_cs m_dcc; // protect the dcc objects + + void createMessageFromPchar(const char* p); + void Notify(const CIrcMessage *pmsg); + void __cdecl ThreadProc(void *pparam); + + //////////////////////////////////////////////////////////////////////////////////////// + // former CIrcMonitor class + + bool OnIrc_PING(const CIrcMessage *pmsg); + bool OnIrc_WELCOME(const CIrcMessage *pmsg); + bool OnIrc_YOURHOST(const CIrcMessage *pmsg); + bool OnIrc_NICK(const CIrcMessage *pmsg); + bool OnIrc_PRIVMSG(const CIrcMessage *pmsg); + bool OnIrc_JOIN(const CIrcMessage *pmsg); + bool OnIrc_QUIT(const CIrcMessage *pmsg); + bool OnIrc_PART(const CIrcMessage *pmsg); + bool OnIrc_KICK(const CIrcMessage *pmsg); + bool OnIrc_MODE(const CIrcMessage *pmsg); + bool OnIrc_USERHOST_REPLY(const CIrcMessage *pmsg); + bool OnIrc_MODEQUERY(const CIrcMessage *pmsg); + bool OnIrc_NAMES(const CIrcMessage *pmsg); + bool OnIrc_ENDNAMES(const CIrcMessage *pmsg); + bool OnIrc_INITIALTOPIC(const CIrcMessage *pmsg); + bool OnIrc_INITIALTOPICNAME(const CIrcMessage *pmsg); + bool OnIrc_TOPIC(const CIrcMessage *pmsg); + bool OnIrc_TRYAGAIN(const CIrcMessage *pmsg); + bool OnIrc_NOTICE(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_NAME(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_CHANNELS(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_SERVER(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_AWAY(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_IDLE(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_END(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_OTHER(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_AUTH(const CIrcMessage *pmsg); + bool OnIrc_WHOIS_NO_USER(const CIrcMessage *pmsg); + bool OnIrc_NICK_ERR(const CIrcMessage *pmsg); + bool OnIrc_ENDMOTD(const CIrcMessage *pmsg); + bool OnIrc_LISTSTART(const CIrcMessage *pmsg); + bool OnIrc_LIST(const CIrcMessage *pmsg); + bool OnIrc_LISTEND(const CIrcMessage *pmsg); + bool OnIrc_BANLIST(const CIrcMessage *pmsg); + bool OnIrc_BANLISTEND(const CIrcMessage *pmsg); + bool OnIrc_SUPPORT(const CIrcMessage *pmsg); + bool OnIrc_BACKFROMAWAY(const CIrcMessage *pmsg); + bool OnIrc_SETAWAY(const CIrcMessage *pmsg); + bool OnIrc_JOINERROR(const CIrcMessage *pmsg); + bool OnIrc_UNKNOWN(const CIrcMessage *pmsg); + bool OnIrc_ERROR(const CIrcMessage *pmsg); + bool OnIrc_NOOFCHANNELS(const CIrcMessage *pmsg); + bool OnIrc_PINGPONG(const CIrcMessage *pmsg); + bool OnIrc_INVITE(const CIrcMessage *pmsg); + bool OnIrc_WHO_END(const CIrcMessage *pmsg); + bool OnIrc_WHO_REPLY(const CIrcMessage *pmsg); + bool OnIrc_WHOTOOLONG(const CIrcMessage *pmsg); + bool OnIrc_AUTHENTICATE(const CIrcMessage *pmsg); + bool OnIrc_AUTH_OK(const CIrcMessage *pmsg); + bool OnIrc_AUTH_FAIL(const CIrcMessage *pmsg); + bool OnIrc_CAP(const CIrcMessage *pmsg); + + bool IsCTCP(const CIrcMessage *pmsg); + + void OnIrcDefault(const CIrcMessage *pmsg); + void OnIrcDisconnected(); + + static OBJLIST m_handlers; + + PfnIrcMessageHandler FindMethod(const wchar_t* lpszName); + + void OnIrcMessage(const CIrcMessage *pmsg); + CMStringW sNick4Perform; +}; + +struct CMPlugin : public ACCPROTOPLUGIN +{ + CMPlugin() : + ACCPROTOPLUGIN("IRC") + { + SetUniqueId("Nick"); + } +}; + +#endif // _IRCPROTO_H_ diff --git a/protocols/IRCG/src/stdafx.h b/protocols/IRCG/src/stdafx.h index 6b0f5e659e..32bc8af34d 100644 --- a/protocols/IRCG/src/stdafx.h +++ b/protocols/IRCG/src/stdafx.h @@ -189,410 +189,7 @@ using namespace irc; #include "irc_dlg.h" -///////////////////////////////////////////////////////////////////////////////////////// - -typedef bool (CIrcProto::*PfnIrcMessageHandler)(const CIrcMessage *pmsg); - -#pragma pack(4) - -struct CIrcHandler -{ - CIrcHandler(const wchar_t* _name, PfnIrcMessageHandler _handler) : - m_name(_name), - m_handler(_handler) - { - } - - const wchar_t* m_name; - PfnIrcMessageHandler m_handler; -}; -#pragma pack() - -struct CIrcProto : public PROTO -{ - CIrcProto(const char*, const wchar_t*); - ~CIrcProto(); - - // Protocol interface - - virtual MCONTACT __cdecl AddToList(int flags, PROTOSEARCHRESULT* psr); - - virtual int __cdecl Authorize(MEVENT hDbEvent); - virtual int __cdecl AuthDeny(MEVENT hDbEvent, const wchar_t* szReason); - - virtual HANDLE __cdecl FileAllow(MCONTACT hContact, HANDLE hTransfer, const wchar_t *szPath); - virtual int __cdecl FileCancel(MCONTACT hContact, HANDLE hTransfer); - virtual int __cdecl FileDeny(MCONTACT hContact, HANDLE hTransfer, const wchar_t *szReason); - virtual int __cdecl FileResume(HANDLE hTransfer, int *action, const wchar_t **szFilename); - - virtual DWORD_PTR __cdecl GetCaps(int type, MCONTACT hContact = NULL); - - virtual HANDLE __cdecl SearchBasic(const wchar_t* id); - - virtual HANDLE __cdecl SendFile(MCONTACT hContact, const wchar_t *szDescription, wchar_t **ppszFiles); - virtual int __cdecl SendMsg(MCONTACT hContact, int flags, const char* msg); - - virtual int __cdecl SetStatus(int iNewStatus); - - virtual HANDLE __cdecl GetAwayMsg(MCONTACT hContact); - virtual int __cdecl SetAwayMsg(int m_iStatus, const wchar_t *msg); - - virtual int __cdecl OnEvent(PROTOEVENTTYPE eventType, WPARAM wParam, LPARAM lParam); - - // Services - INT_PTR __cdecl SvcCreateAccMgrUI(WPARAM, LPARAM); - INT_PTR __cdecl GetMyAwayMsg(WPARAM, LPARAM); - - INT_PTR __cdecl OnChangeNickMenuCommand(WPARAM, LPARAM); - INT_PTR __cdecl OnDoubleclicked(WPARAM, LPARAM); - INT_PTR __cdecl OnJoinChat(WPARAM, LPARAM); - INT_PTR __cdecl OnJoinMenuCommand(WPARAM, LPARAM); - INT_PTR __cdecl OnLeaveChat(WPARAM, LPARAM); - INT_PTR __cdecl OnMenuChanSettings(WPARAM, LPARAM); - INT_PTR __cdecl OnMenuDisconnect(WPARAM, LPARAM); - INT_PTR __cdecl OnMenuIgnore(WPARAM, LPARAM); - INT_PTR __cdecl OnMenuWhois(WPARAM, LPARAM); - INT_PTR __cdecl OnQuickConnectMenuCommand(WPARAM, LPARAM); - INT_PTR __cdecl OnShowListMenuCommand(WPARAM, LPARAM); - INT_PTR __cdecl OnShowServerMenuCommand(WPARAM, LPARAM); - - // Events - int __cdecl OnContactDeleted(WPARAM, LPARAM); - int __cdecl OnInitOptionsPages(WPARAM, LPARAM); - int __cdecl OnInitUserInfo(WPARAM, LPARAM); - int __cdecl OnModulesLoaded(WPARAM, LPARAM); - int __cdecl OnMenuPreBuild(WPARAM, LPARAM); - int __cdecl OnPreShutdown(WPARAM, LPARAM); - int __cdecl OnDbSettingChanged(WPARAM, LPARAM); - - int __cdecl GCEventHook(WPARAM, LPARAM); - int __cdecl GCMenuHook(WPARAM, LPARAM); - - // Data - - char m_serverName[100]; - char m_password[500]; - wchar_t m_identSystem[10]; - char m_network[30]; - char m_portStart[10]; - char m_portEnd[10]; - int m_iSSL; - wchar_t m_identPort[10]; - wchar_t m_nick[30], m_pNick[30]; - wchar_t m_alternativeNick[30]; - wchar_t m_name[200]; - wchar_t m_userID[200]; - wchar_t m_quitMessage[400]; - wchar_t m_userInfo[500]; - char m_myHost[50]; - char m_mySpecifiedHost[500]; - char m_mySpecifiedHostIP[50]; - char m_myLocalHost[50]; - WORD m_myLocalPort; - wchar_t *m_alias; - int m_serverComboSelection; - int m_quickComboSelection; - int m_onlineNotificationTime; - int m_onlineNotificationLimit; - BYTE m_scriptingEnabled; - BYTE m_IPFromServer; - BYTE m_showAddresses; - BYTE m_disconnectDCCChats; - BYTE m_disableErrorPopups; - BYTE m_rejoinChannels; - BYTE m_rejoinIfKicked; - BYTE m_hideServerWindow; - BYTE m_ident; - BYTE m_identTimer; - BYTE m_disableDefaultServer; - BYTE m_autoOnlineNotification; - BYTE m_sendKeepAlive; - BYTE m_joinOnInvite; - BYTE m_perform; - BYTE m_forceVisible; - BYTE m_ignore; - BYTE m_ignoreChannelDefault; - BYTE m_useServer; - BYTE m_DCCFileEnabled; - BYTE m_DCCChatEnabled; - BYTE m_DCCChatAccept; - BYTE m_DCCChatIgnore; - BYTE m_DCCPassive; - BYTE m_DCCMode; - WORD m_DCCPacketSize; - BYTE m_manualHost; - BYTE m_oldStyleModes; - BYTE m_channelAwayNotification; - BYTE m_sendNotice; - BYTE m_utfAutodetect; - BYTE m_bUseSASL; - int m_codepage; - COLORREF colors[16]; - HICON hIcon[13]; - - OBJLIST vUserhostReasons; - OBJLIST vWhoInProgress; - - mir_cs cs; - mir_cs m_gchook; - mir_cs m_resolve; - HANDLE m_evWndCreate; - - CMStringW m_statusMessage; - int m_iTempCheckTime; - - CIrcSessionInfo si; - - int m_portCount; - DWORD m_bConnectRequested; - DWORD m_bConnectThreadRunning; - - HGENMENU hMenuQuick, hMenuServer, hMenuJoin, hMenuNick, hMenuList; - HNETLIBUSER hNetlibDCC; - - bool bTempDisableCheck, bTempForceCheck, bEcho; - bool nickflag; - - bool bPerformDone; - - CJoinDlg *m_joinDlg; - CListDlg *m_listDlg; - CNickDlg *m_nickDlg; - CWhoisDlg *m_whoisDlg; - CQuickDlg *m_quickDlg; - CManagerDlg *m_managerDlg; - CIgnorePrefsDlg *m_ignoreDlg; - - int m_noOfChannels, m_manualWhoisCount; - CMStringA sChannelModes, sUserModes; - CMStringW sChannelPrefixes, sUserModePrefixes, WhoisAwayReply; - - // clist.cpp - MCONTACT CList_AddContact(CONTACT *user, bool InList, bool SetOnline); - bool CList_SetAllOffline(BYTE ChatsToo); - MCONTACT CList_SetOffline(CONTACT *user); - MCONTACT CList_FindContact(CONTACT *user); - BOOL CList_AddDCCChat(const CMStringW &name, const CMStringW &hostmask, unsigned long adr, int port); - - // commandmonitor.cpp - UINT_PTR IdentTimer, InitTimer, KeepAliveTimer, OnlineNotifTimer, OnlineNotifTimer3; - - int AddOutgoingMessageToDB(MCONTACT hContact, const wchar_t *msg); - bool DoOnConnect(const CIrcMessage *pmsg); - int DoPerform(const char *event); - void __cdecl ResolveIPThread(void *di); - - bool AddIgnore(const wchar_t *mask, const wchar_t *mode, const wchar_t *network); - int IsIgnored(const CMStringW &nick, const CMStringW &address, const CMStringW &host, char type); - int IsIgnored(CMStringW user, char type); - bool RemoveIgnore(const wchar_t *mask); - - // input.cpp - CMStringW DoAlias(const wchar_t *text, wchar_t *window); - BOOL DoHardcodedCommand(CMStringW text, wchar_t *window, MCONTACT hContact); - CMStringW DoIdentifiers(CMStringW text, const wchar_t *window); - void FormatMsg(CMStringW &text); - bool PostIrcMessageWnd(wchar_t *pszWindow, MCONTACT hContact, const wchar_t *szBuf); - bool PostIrcMessage(const wchar_t *fmt, ...); - - // irclib.cpp - UINT_PTR DCCTimer; - void SendIrcMessage(const wchar_t*, bool bNotify = true, int codepage = -1); - - // ircproto.cpp - void __cdecl AckBasicSearch(void* param); - void __cdecl AckMessageFail(void* info); - void __cdecl AckMessageFailDcc(void* info); - void __cdecl AckMessageSuccess(void* info); - - int SetStatusInternal(int iNewStatus, bool bIsInternal); - - //options.cpp - HWND m_hwndConnect; - - OBJLIST m_ignoreItems; - - int m_channelNumber; - CMStringW m_whoReply; - CMStringW sNamesList; - CMStringW sTopic; - CMStringW sTopicName; - CMStringW sTopicTime; - CMStringW m_namesToWho; - CMStringW m_channelsToWho; - CMStringW m_namesToUserhost; - - void InitPrefs(void); - void InitIgnore(void); - - void ReadSettings(TDbSetting* sets, int count); - void RewriteIgnoreSettings(void); - void WriteSettings(TDbSetting* sets, int count); - - // output - BOOL ShowMessage(const CIrcMessage *pmsg); - - // scripting.cpp - INT_PTR __cdecl Scripting_InsertRawIn(WPARAM wParam, LPARAM lParam); - INT_PTR __cdecl Scripting_InsertRawOut(WPARAM wParam, LPARAM lParam); - INT_PTR __cdecl Scripting_InsertGuiIn(WPARAM wParam, LPARAM lParam); - INT_PTR __cdecl Scripting_InsertGuiOut(WPARAM wParam, LPARAM lParam); - INT_PTR __cdecl Scripting_GetIrcData(WPARAM wparam, LPARAM lparam); - - // services.cpp - void ConnectToServer(void); - void DisconnectFromServer(void); - void InitMainMenus(void); - - void __cdecl ConnectServerThread(void*); - void __cdecl DisconnectServerThread(void*); - - // tools.cpp - void AddToJTemp(wchar_t op, CMStringW& sCommand); - bool AddWindowItemData(CMStringW window, const wchar_t *pszLimit, const wchar_t *pszMode, const wchar_t *pszPassword, const wchar_t *pszTopic); - INT_PTR DoEvent(int iEvent, const wchar_t *pszWindow, const wchar_t *pszNick, const wchar_t *pszText, const wchar_t *pszStatus, const wchar_t *pszUserInfo, DWORD_PTR dwItemData, bool bAddToLog, bool bIsMe, time_t timestamp = 1); - void FindLocalIP(HNETLIBCONN con); - bool FreeWindowItemData(CMStringW window, CHANNELINFO* wis); - bool IsChannel(const char* sName); - bool IsChannel(const wchar_t* sName); - void KillChatTimer(UINT_PTR &nIDEvent); - CMStringW MakeWndID(const wchar_t* sWindow); - CMStringW ModeToStatus(int sMode); - CMStringW PrefixToStatus(int cPrefix); - int SetChannelSBText(CMStringW sWindow, CHANNELINFO *wi); - void SetChatTimer(UINT_PTR &nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); - - void ClearUserhostReasons(int type); - void DoUserhostWithReason(int type, CMStringW reason, bool bSendCommand, const wchar_t *userhostparams, ...); - CMStringW GetNextUserhostReason(int type); - CMStringW PeekAtReasons(int type); - - //////////////////////////////////////////////////////////////////////////////////////// - // former CIrcSession class - - void AddDCCSession(MCONTACT hContact, CDccSession *dcc); - void AddDCCSession(DCCINFO *pdci, CDccSession *dcc); - void RemoveDCCSession(MCONTACT hContact); - void RemoveDCCSession(DCCINFO *pdci); - - CDccSession* FindDCCSession(MCONTACT hContact); - CDccSession* FindDCCSession(DCCINFO *pdci); - CDccSession* FindDCCSendByPort(int iPort); - CDccSession* FindDCCRecvByPortAndName(int iPort, const wchar_t *szName); - CDccSession* FindPassiveDCCSend(int iToken); - CDccSession* FindPassiveDCCRecv(CMStringW sName, CMStringW sToken); - - void DisconnectAllDCCSessions(bool Shutdown); - void CheckDCCTimeout(void); - - bool Connect(const CIrcSessionInfo &info); - void Disconnect(void); - void KillIdent(void); - - int NLSend(const wchar_t* fmt, ...); - int NLSend(const char* fmt, ...); - int NLSend(const unsigned char* buf, int cbBuf); - int NLSendNoScript(const unsigned char* buf, int cbBuf); - int NLReceive(unsigned char* buf, int cbBuf); - void InsertIncomingEvent(wchar_t* pszRaw); - - __inline bool IsConnected() const { return con != nullptr; } - - // send-to-stream operators - int getCodepage() const; - __inline void setCodepage(int aPage) { codepage = aPage; } - - CIrcSessionInfo m_info; - -protected: - int codepage; - HNETLIBCONN con; - HNETLIBBIND hBindPort; - void DoReceive(); - LIST m_dcc_chats; - LIST m_dcc_xfers; - -private: - mir_cs m_dcc; // protect the dcc objects - - void createMessageFromPchar(const char* p); - void Notify(const CIrcMessage *pmsg); - void __cdecl ThreadProc(void *pparam); - - //////////////////////////////////////////////////////////////////////////////////////// - // former CIrcMonitor class - - bool OnIrc_PING(const CIrcMessage *pmsg); - bool OnIrc_WELCOME(const CIrcMessage *pmsg); - bool OnIrc_YOURHOST(const CIrcMessage *pmsg); - bool OnIrc_NICK(const CIrcMessage *pmsg); - bool OnIrc_PRIVMSG(const CIrcMessage *pmsg); - bool OnIrc_JOIN(const CIrcMessage *pmsg); - bool OnIrc_QUIT(const CIrcMessage *pmsg); - bool OnIrc_PART(const CIrcMessage *pmsg); - bool OnIrc_KICK(const CIrcMessage *pmsg); - bool OnIrc_MODE(const CIrcMessage *pmsg); - bool OnIrc_USERHOST_REPLY(const CIrcMessage *pmsg); - bool OnIrc_MODEQUERY(const CIrcMessage *pmsg); - bool OnIrc_NAMES(const CIrcMessage *pmsg); - bool OnIrc_ENDNAMES(const CIrcMessage *pmsg); - bool OnIrc_INITIALTOPIC(const CIrcMessage *pmsg); - bool OnIrc_INITIALTOPICNAME(const CIrcMessage *pmsg); - bool OnIrc_TOPIC(const CIrcMessage *pmsg); - bool OnIrc_TRYAGAIN(const CIrcMessage *pmsg); - bool OnIrc_NOTICE(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_NAME(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_CHANNELS(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_SERVER(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_AWAY(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_IDLE(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_END(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_OTHER(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_AUTH(const CIrcMessage *pmsg); - bool OnIrc_WHOIS_NO_USER(const CIrcMessage *pmsg); - bool OnIrc_NICK_ERR(const CIrcMessage *pmsg); - bool OnIrc_ENDMOTD(const CIrcMessage *pmsg); - bool OnIrc_LISTSTART(const CIrcMessage *pmsg); - bool OnIrc_LIST(const CIrcMessage *pmsg); - bool OnIrc_LISTEND(const CIrcMessage *pmsg); - bool OnIrc_BANLIST(const CIrcMessage *pmsg); - bool OnIrc_BANLISTEND(const CIrcMessage *pmsg); - bool OnIrc_SUPPORT(const CIrcMessage *pmsg); - bool OnIrc_BACKFROMAWAY(const CIrcMessage *pmsg); - bool OnIrc_SETAWAY(const CIrcMessage *pmsg); - bool OnIrc_JOINERROR(const CIrcMessage *pmsg); - bool OnIrc_UNKNOWN(const CIrcMessage *pmsg); - bool OnIrc_ERROR(const CIrcMessage *pmsg); - bool OnIrc_NOOFCHANNELS(const CIrcMessage *pmsg); - bool OnIrc_PINGPONG(const CIrcMessage *pmsg); - bool OnIrc_INVITE(const CIrcMessage *pmsg); - bool OnIrc_WHO_END(const CIrcMessage *pmsg); - bool OnIrc_WHO_REPLY(const CIrcMessage *pmsg); - bool OnIrc_WHOTOOLONG(const CIrcMessage *pmsg); - bool OnIrc_AUTHENTICATE(const CIrcMessage *pmsg); - bool OnIrc_AUTH_OK(const CIrcMessage *pmsg); - bool OnIrc_AUTH_FAIL(const CIrcMessage *pmsg); - bool OnIrc_CAP(const CIrcMessage *pmsg); - - bool IsCTCP(const CIrcMessage *pmsg); - - void OnIrcDefault(const CIrcMessage *pmsg); - void OnIrcDisconnected(); - - static OBJLIST m_handlers; - - PfnIrcMessageHandler FindMethod(const wchar_t* lpszName); - - void OnIrcMessage(const CIrcMessage *pmsg); - CMStringW sNick4Perform; -}; - -struct CMPlugin : public ACCPROTOPLUGIN -{ - CMPlugin() : - ACCPROTOPLUGIN("IRC") - {} -}; +#include "ircproto.h" // map actual member functions to their associated IRC command. // put any number of this macro in the class's constructor. @@ -602,7 +199,7 @@ struct CMPlugin : public ACCPROTOPLUGIN ///////////////////////////////////////////////////////////////////////////////////////// // Functions -//main.cpp +// main.cpp extern HINSTANCE hInst; extern OBJLIST g_servers; @@ -628,16 +225,16 @@ void InitIcons(void); HICON LoadIconEx(int iIndex, bool big = false); HANDLE GetIconHandle(int iconId); -//tools.cpp -int __stdcall WCCmp(const wchar_t* wild, const wchar_t* string); -char* __stdcall IrcLoadFile(wchar_t * szPath); -CMStringW __stdcall GetWord(const wchar_t* text, int index); +// tools.cpp +int __stdcall WCCmp(const wchar_t* wild, const wchar_t* string); +char* __stdcall IrcLoadFile(wchar_t * szPath); +CMStringW __stdcall GetWord(const wchar_t* text, int index); const wchar_t* __stdcall GetWordAddress(const wchar_t* text, int index); -void __stdcall RemoveLinebreaks(CMStringW& Message); +void __stdcall RemoveLinebreaks(CMStringW& Message); wchar_t* __stdcall my_strstri(const wchar_t *s1, const wchar_t *s2); wchar_t* __stdcall DoColorCodes(const wchar_t* text, bool bStrip, bool bReplacePercent); -CMStringA __stdcall GetWord(const char* text, int index); +CMStringA __stdcall GetWord(const char* text, int index); #pragma comment(lib,"comctl32.lib") -- cgit v1.2.3