20 #include <znc/zncconfig.h>
42 #error This module only works when ZNC is compiled with OpenSSL support
55 return new M(p, pUser, pNetwork, sModName, sModPath);
59 # define MODULE_EXPORT __attribute__((__visibility__("default")))
61 # define MODULE_EXPORT
64 #define MODCOMMONDEFS(CLASS, DESCRIPTION, TYPE) \
66 MODULE_EXPORT bool ZNCModInfo(double dCoreVersion, CModInfo& Info); \
67 bool ZNCModInfo(double dCoreVersion, CModInfo& Info) { \
68 if (dCoreVersion != VERSION) \
70 Info.SetDescription(DESCRIPTION); \
71 Info.SetDefaultType(TYPE); \
73 Info.SetLoader(TModLoad<CLASS>); \
74 TModInfo<CLASS>(Info); \
94 #define MODCONSTRUCTOR(CLASS) \
95 CLASS(ModHandle pDLL, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, \
96 const CString& sModPath) \
97 : CModule(pDLL, pUser, pNetwork, sModName, sModPath)
101 #define USERMODULEDEFS(CLASS, DESCRIPTION) \
102 MODCOMMONDEFS(CLASS, DESCRIPTION, CModInfo::UserModule)
107 #define GLOBALMODULEDEFS(CLASS, DESCRIPTION) \
108 MODCOMMONDEFS(CLASS, DESCRIPTION, CModInfo::GlobalModule)
113 #define NETWORKMODULEDEFS(CLASS, DESCRIPTION) \
114 MODCOMMONDEFS(CLASS, DESCRIPTION, CModInfo::NetworkModule)
123 #define MODULEDEFS(CLASS, DESCRIPTION) NETWORKMODULEDEFS(CLASS, DESCRIPTION)
161 :
CTimer(pModule, uInterval, uCycles, sLabel, sDescription) {
162 m_pFBCallback = NULL;
219 default:
return "UNKNOWN";
506 virtual void OnMode2(
const CNick* pOpNick,
CChan& Channel,
char uMode,
const CString& sArg,
bool bAdded,
bool bNoChange);
507 virtual void OnMode(
const CNick& OpNick,
CChan& Channel,
char uMode,
const CString& sArg,
bool bAdded,
bool bNoChange);
555 virtual void OnQuit(
const CNick& Nick,
const CString& sMessage,
const std::vector<CChan*>& vChans);
562 virtual void OnNick(
const CNick& Nick,
const CString& sNewNick,
const std::vector<CChan*>& vChans);
912 bool DelNV(
const CString & sName,
bool bWriteToDisk =
true);
913 MCString::iterator
FindNV(
const CString & sName) {
return m_mssRegistry.find(sName); }
914 MCString::iterator
EndNV() {
return m_mssRegistry.end(); }
915 MCString::iterator
BeginNV() {
return m_mssRegistry.begin(); }
916 void DelNV(MCString::iterator it) { m_mssRegistry.erase(it); }
917 bool ClearNV(
bool bWriteToDisk =
true);
1037 bool& bSuccess,
CString& sRetMsg);
1063 std::map<CString, CModCommand> m_mCommands;
1103 bool OnMode(
const CNick& OpNick,
CChan& Channel,
char uMode,
const CString& sArg,
bool bAdded,
bool bNoChange);
1112 bool OnQuit(
const CNick& Nick,
const CString& sMessage,
const std::vector<CChan*>& vChans);
1113 bool OnNick(
const CNick& Nick,
const CString& sNewNick,
const std::vector<CChan*>& vChans);
1191 bool& bSuccess,
CString& sRetMsg);
1205 #endif // !_MODULES_H
virtual EModRet OnAddUser(CUser &User, CString &sErrorRet)
This module hook is called when a user is being added.
virtual void OnOp(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
bool OnServerCapAvailable(const CString &sCap)
void(CModule::* ModCmdFunc)(const CString &sLine)
Type for the callback function that handles the actual command.
Definition: Modules.h:261
void(* FPTimer_t)(CModule *, CFPTimer *)
Definition: Modules.h:156
bool UnlinkSocket(CSocket *pSocket)
void SetDescription(const CString &s)
virtual bool OnBoot()
This module hook is called during ZNC startup.
virtual void OnOp2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
Called when a nick is opped on a channel.
void SetArgs(const CString &s)
Definition: Modules.h:927
virtual EModRet OnUserCTCP(CString &sTarget, CString &sMessage)
This module hook is called when a client sends a CTCP request.
CModInfo()
Definition: Modules.h:190
bool OnChanAction(CNick &Nick, CChan &Channel, CString &sMessage)
static bool GetModPathInfo(CModInfo &ModInfo, const CString &sModule, const CString &sModPath, CString &sRetMsg)
virtual EModRet OnTopic(CNick &Nick, CChan &Channel, CString &sTopic)
Called when we receive a channel topic change from IRC.
bool OnAddNetwork(CIRCNetwork &Network, CString &sErrorRet)
const CString & GetArgs() const
Definition: Modules.h:933
void SetHasArgs(bool b=false)
Definition: Modules.h:240
static void InitHelp(CTable &Table)
Initialize a CTable so that it can be used with AddHelp().
#define VERSION
Definition: version.h:8
CModule * GetModule() const
virtual CString GetWebPath()
CString m_sDescription
Definition: Modules.h:153
bool OnKick(const CNick &Nick, const CString &sOpNick, CChan &Channel, const CString &sMessage)
virtual EModRet OnInvite(const CNick &Nick, const CString &sChan)
Called when user is invited into a channel.
virtual EModRet OnLoginAttempt(CSmartPtr< CAuthBase > Auth)
This module hook is called when a client tries to login.
bool AddSocket(CSocket *pSocket)
bool OnPrivBufferPlayLine(CClient &Client, CString &sLine)
void SetNetwork(CIRCNetwork *pNetwork)
Definition: Modules.h:1072
bool OnDeop(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
bool OnIRCConnecting(CIRCSock *pIRCSock)
CString GetNV(const CString &sName) const
CModInfo(const CString &sName, const CString &sPath, EModuleType eType)
Definition: Modules.h:194
virtual void OnModNotice(const CString &sMessage)
Called when a your module nick was sent a notice.
CString m_sSavePath
Definition: Modules.h:1057
ZNC will continue event processing normally.
Definition: Modules.h:336
bool GetHasArgs() const
Definition: Modules.h:229
virtual EModRet OnUnknownUserRaw(CClient *pClient, CString &sLine)
This function behaves like CModule::OnRaw(), but is also called before the client successfully logged...
virtual void OnClientCapRequest(CClient *pClient, const CString &sCap, bool bState)
Called when we actually need to turn a capability on or off for a client.
EModuleType m_eDefaultType
Definition: Modules.h:247
virtual EModRet OnChanNotice(CNick &Nick, CChan &Channel, CString &sMessage)
Called when we receive a channel notice.
EModuleType
Definition: Modules.h:184
virtual void OnUnknownModCommand(const CString &sCommand)
This is similar to OnModCommand(), but it is only called if HandleCommand didn't find any that wants ...
virtual bool PutUser(const CString &sLine)
This function sends a given raw IRC line to a client.
void SetUser(CUser *pUser)
Definition: Modules.h:1071
virtual void OnDeop(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
CString m_sWikiPage
Definition: Modules.h:251
bool OnGetModInfo(CModInfo &ModInfo, const CString &sModule, bool &bSuccess, CString &sRetMsg)
void Call(CModule *pMod, const CString &sLine) const
Definition: Modules.h:300
CUser * GetUser()
Definition: Modules.h:941
virtual void OnFailedLogin(const CString &sUsername, const CString &sRemoteIP)
Called after a client login was rejected.
std::queue< std::pair< CString, CString > > ModDirList
Definition: Modules.h:1174
bool OnUserJoin(CString &sChannel, CString &sKey)
virtual void OnChanPermission(const CNick &OpNick, const CNick &Nick, CChan &Channel, unsigned char uMode, bool bAdded, bool bNoChange)
void AddHelpCommand()
Register the "Help" command.
MCString::iterator FindNV(const CString &sName)
Definition: Modules.h:913
virtual void OnPostRehash()
This module hook is called after a successful rehash.
static void GetAvailableMods(std::set< CModInfo > &ssMods, CModInfo::EModuleType eType=CModInfo::UserModule)
CTimer * FindTimer(const CString &sLabel)
void SetModPath(const CString &s)
Definition: Modules.h:926
CModule *(* ModLoader)(ModHandle p, CUser *pUser, CIRCNetwork *pNetwork, const CString &sModName, const CString &sModPath)
Definition: Modules.h:182
bool OnSendToIRC(CString &sLine)
bool OnChanNotice(CNick &Nick, CChan &Channel, CString &sMessage)
virtual EModRet OnTimerAutoJoin(CChan &Channel)
This module hook is called just before ZNC tries to join a channel by itself because it's in the conf...
void SetFPCallback(FPTimer_t p)
Definition: Modules.h:167
virtual void OnMode2(const CNick *pOpNick, CChan &Channel, char uMode, const CString &sArg, bool bAdded, bool bNoChange)
Called on an individual channel mode change.
bool OnSendToClient(CString &sLine, CClient &Client)
virtual void OnClientCapLs(CClient *pClient, SCString &ssCaps)
Called when a client told us CAP LS.
std::set< CTimer * > m_sTimers
Definition: Modules.h:1048
bool OnPrivCTCP(CNick &Nick, CString &sMessage)
CModInfo::EModuleType GetType() const
Definition: Modules.h:931
bool OnUserRaw(CString &sLine)
bool OnMode2(const CNick *pOpNick, CChan &Channel, char uMode, const CString &sArg, bool bAdded, bool bNoChange)
virtual void OnModCTCP(const CString &sMessage)
Called when your module nick was sent a CTCP message.
std::set< CSocket * >::const_iterator BeginSockets() const
Definition: Modules.h:878
bool OnClientDisconnect()
CClient * GetClient()
Definition: Modules.h:946
void SetModule(CModule *p)
bool OnClientCapLs(CClient *pClient, SCString &ssCaps)
CSockManager * m_pManager
Definition: Modules.h:1051
bool DelNV(const CString &sName, bool bWriteToDisk=true)
CModCommand()
Default constructor, needed so that this can be saved in a std::map.
virtual EModRet OnIRCConnecting(CIRCSock *pIRCSock)
This module hook is called just before ZNC tries to establish a connection to an IRC server...
bool OnServerCapResult(const CString &sCap, bool bSuccess)
This is the same as both CModule::HALTMODS and CModule::HALTCORE together.
Definition: Modules.h:340
std::set< CSocket * > m_sSockets
Definition: Modules.h:1049
CModule * FindModule(const CString &sModule) const
bool OnChanPermission(const CNick &OpNick, const CNick &Nick, CChan &Channel, unsigned char uMode, bool bAdded, bool bNoChange)
bool UnloadModule(const CString &sModule)
bool OnTopic(CNick &Nick, CChan &Channel, CString &sTopic)
const CString & GetArgs() const
Definition: Modules.h:297
CString m_sArgsHelpText
Definition: Modules.h:252
Definition: Modules.h:1066
bool OnModuleUnloading(CModule *pModule, bool &bSuccess, CString &sRetMsg)
bool IsClientCapSupported(CClient *pClient, const CString &sCap, bool bState)
virtual bool OnEmbeddedWebRequest(CWebSock &WebSock, const CString &sPageName, CTemplate &Tmpl)
Using this hook, module can embed web stuff directly to different places.
CString ExpandString(const CString &sStr) const
void SetDescription(const CString &s)
Definition: Modules.h:925
CClient * m_pClient
Definition: Modules.h:1054
virtual EModRet OnUserNotice(CString &sTarget, CString &sMessage)
This module hook is called when a user sends a notice message.
virtual void OnDevoice(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
void SetPath(const CString &s)
Definition: Modules.h:236
virtual void OnClientLogin()
Called when a client successfully logged in to ZNC.
bool OnPrivMsg(CNick &Nick, CString &sMessage)
bool ClearNV(bool bWriteToDisk=true)
const CString & GetCommand() const
Definition: Modules.h:295
bool m_bHasArgs
Definition: Modules.h:253
std::vector< TWebSubPage > VWebSubPages
Definition: WebModules.h:31
virtual void OnKick(const CNick &OpNick, const CString &sKickedNick, CChan &Channel, const CString &sMessage)
Called when a nick is kicked from a channel.
std::set< CString > SCString
Definition: ZNCString.h:34
Definition: Modules.h:187
virtual EModRet OnGetModInfo(CModInfo &ModInfo, const CString &sModule, bool &bSuccess, CString &sRetMsg)
Called when info about a module is needed.
CClient * m_pClient
Definition: Modules.h:1202
void SetClient(CClient *pClient)
const CString & GetPath() const
Definition: Modules.h:225
bool OnIRCConnectionError(CIRCSock *pIRCSock)
std::set< EModuleType > m_seType
Definition: Modules.h:246
EModuleType GetDefaultType() const
Definition: Modules.h:231
bool OnLoginAttempt(CSmartPtr< CAuthBase > Auth)
Base Csock implementation to be used by modules.
Definition: Socket.h:164
bool OnBroadcast(CString &sMessage)
void HandleHelpCommand(const CString &sLine="")
Send a description of all registered commands via PutModule().
bool OnOp(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
virtual void OnClientDisconnect()
Called when a client disconnected from ZNC.
void SetNetwork(CIRCNetwork *pNetwork)
Definition: Modules.h:158
virtual bool OnWebRequest(CWebSock &WebSock, const CString &sPageName, CTemplate &Tmpl)
If OnWebPreRequest returned false, and the RequiresAdmin/IsAdmin check has been passed, this method will be called with the page name.
Definition: Modules.h:135
bool SaveRegistry() const
void SetLoader(ModLoader fLoader)
Definition: Modules.h:241
virtual EModRet OnChanCTCP(CNick &Nick, CChan &Channel, CString &sMessage)
Called when we receive a channel CTCP request from IRC.
const CString & GetModPath() const
Definition: Modules.h:934
bool AddCommand(const CModCommand &Command)
virtual EModRet OnUserAction(CString &sTarget, CString &sMessage)
Called when a client sends a CTCP ACTION request ("/me").
bool OnRawMode(const CNick &OpNick, CChan &Channel, const CString &sModes, const CString &sArgs)
virtual void OnDevoice2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
Called when a nick is devoiced on a channel.
void * ModHandle
Definition: Modules.h:35
bool AddTimer(CTimer *pTimer)
bool OnIRCRegistration(CString &sPass, CString &sNick, CString &sIdent, CString &sRealName)
virtual EModRet OnUserTopicRequest(CString &sChannel)
This hook is called when a user requests a channel's topic.
virtual EModRet OnPrivCTCP(CNick &Nick, CString &sMessage)
Called when we receive a private CTCP request from IRC.
CModCommand & operator=(const CModCommand &other)
Assignment operator, needed so that this can be saved in a std::map.
virtual bool PutModule(const CString &sLine)
This function sends a query from your module nick.
ModCmdFunc GetFunction() const
Definition: Modules.h:296
virtual void OnIRCConnectionError(CIRCSock *pIRCSock)
This module hook is called when a CIRCSock fails to connect or a module returned HALTCORE from OnIRCC...
bool OnTimerAutoJoin(CChan &Channel)
Definition: Template.h:117
bool OnModNotice(const CString &sMessage)
virtual EModRet OnUserPart(CString &sChannel, CString &sMessage)
This hooks is called when a user sends a PART message.
virtual bool IsClientCapSupported(CClient *pClient, const CString &sCap, bool bState)
Called only to check if your module supports turning on/off named capability.
Definition: IRCNetwork.h:36
virtual bool WebRequiresLogin()
Modules which can only be used with an active user session have to return true here.
Definition: Modules.h:384
bool OnChanBufferPlayLine(CChan &Chan, CClient &Client, CString &sLine)
bool OnVoice2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
EModException
Definition: Modules.h:352
CIRCNetwork * GetNetwork()
Definition: Modules.h:1075
const CString & GetWikiPage() const
Definition: Modules.h:227
bool LoadModule(const CString &sModule, const CString &sArgs, CModInfo::EModuleType eType, CUser *pUser, CIRCNetwork *pNetwork, CString &sRetMsg)
~CModInfo()
Definition: Modules.h:200
virtual void OnModCommand(const CString &sCommand)
Called when a command to your module is sent, e.g.
void SetName(const CString &s)
Definition: Modules.h:235
CUser * m_pUser
Definition: Modules.h:1200
virtual EModRet OnAddNetwork(CIRCNetwork &Network, CString &sErrorRet)
This module hook is called when a network is being added.
bool OnUserTopic(CString &sChannel, CString &sTopic)
bool UnlinkTimer(CTimer *pTimer)
virtual ~CFPTimer()
Definition: Modules.h:165
String class that is used inside ZNC.
Definition: ZNCString.h:67
virtual EModRet OnBroadcast(CString &sMessage)
This module hook is called when a message is broadcasted to all users.
bool OnDeop2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
virtual EModRet OnSendToIRC(CString &sLine)
Called when ZNC sends a raw traffic line to the IRC server.
virtual void OnRawMode(const CNick &OpNick, CChan &Channel, const CString &sModes, const CString &sArgs)
Continue calling other modules.
Definition: Modules.h:349
virtual bool OnServerCapAvailable(const CString &sCap)
Called for every CAP received via CAP LS from server.
virtual EModRet OnSendToClient(CString &sLine, CClient &Client)
Called when ZNC sends a raw traffic line to a client.
virtual void OnPart(const CNick &Nick, CChan &Channel, const CString &sMessage)
Called when a nick parts a channel.
This is a standard reference counting pointer. Be careful not to have two of these point to the same ...
Definition: Utils.h:363
bool OnJoin(const CNick &Nick, CChan &Channel)
void Unload()
This function throws CModule::UNLOAD which causes this module to be unloaded.
Definition: Modules.h:365
virtual void OnGetAvailableMods(std::set< CModInfo > &ssMods, CModInfo::EModuleType eType)
Called when list of available mods is requested.
EModRet
This enum is just used for return from module hooks.
Definition: Modules.h:332
Definition: Modules.h:185
void DelNV(MCString::iterator it)
Definition: Modules.h:916
virtual bool OnWebPreRequest(CWebSock &WebSock, const CString &sPageName)
For WebMods: Called before the list of registered SubPages will be checked.
bool RemSocket(CSocket *pSocket)
virtual void OnServerCapResult(const CString &sCap, bool bSuccess)
Called for every CAP accepted or rejected by server (with CAP ACK or CAP NAK after our CAP REQ)...
bool OnUnknownUserRaw(CClient *pClient, CString &sLine)
static double GetCoreVersion()
Definition: Modules.h:802
CString GetModNick() const
virtual bool PutStatus(const CString &sLine)
This function generates a query from *status.
bool OnPrivNotice(CNick &Nick, CString &sMessage)
Definition: Modules.h:180
bool OnChanCTCP(CNick &Nick, CChan &Channel, CString &sMessage)
static CString ModuleTypeToString(EModuleType eType)
Definition: Modules.h:214
The base class for your own ZNC modules.
Definition: Modules.h:322
bool OnStatusCommand(CString &sCommand)
bool OnUserNotice(CString &sTarget, CString &sMessage)
CModInfo::EModuleType m_eType
Definition: Modules.h:1046
virtual EModRet OnUserJoin(CString &sChannel, CString &sKey)
This hooks is called when a user sends a JOIN message.
bool OnChanBufferEnding(CChan &Chan, CClient &Client)
static ModDirList GetModDirs()
bool OnModuleLoading(const CString &sModName, const CString &sArgs, CModInfo::EModuleType eType, bool &bSuccess, CString &sRetMsg)
const CString & GetModName() const
Definition: Modules.h:847
virtual EModRet OnChanAction(CNick &Nick, CChan &Channel, CString &sMessage)
Called when we receive a channel CTCP ACTION ("/me" in a channel) from IRC.
CUser * m_pUser
Definition: Modules.h:1052
bool RemTimer(CTimer *pTimer)
CClient * GetClient()
Definition: Modules.h:1076
virtual EModRet OnModuleUnloading(CModule *pModule, bool &bSuccess, CString &sRetMsg)
Called when a module is going to be unloaded.
bool OnPart(const CNick &Nick, CChan &Channel, const CString &sMessage)
void SetDescription(const CString &s)
Definition: Modules.h:237
virtual CString GetWebFilesPath()
void AddType(EModuleType eType)
Definition: Modules.h:210
virtual void ListTimers()
virtual void OnVoice(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
MCString::iterator EndNV()
Definition: Modules.h:914
virtual EModRet OnDeleteNetwork(CIRCNetwork &Network)
This module hook is called when a network is deleted.
bool OnUserPart(CString &sChannel, CString &sMessage)
bool OnVoice(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
virtual void OnIRCConnected()
This module hook is called after a successful login to IRC.
CSockManager * GetManager()
Definition: Modules.h:947
void TModInfo(CModInfo &Info)
Definition: Modules.h:50
Definition: WebModules.h:111
const CString & GetArgsHelpText() const
Definition: Modules.h:228
void SetType(CModInfo::EModuleType eType)
Definition: Modules.h:924
virtual EModRet OnChanBufferPlayLine(CChan &Chan, CClient &Client, CString &sLine)
Called when for each line during a channel's buffer play back.
this is the main cron job class
Definition: Csocket.h:369
bool OnCTCPReply(CNick &Nick, CString &sMessage)
virtual void ListSockets()
virtual VWebSubPages & GetSubPages()
Returns a list of all registered SubPages.
Definition: Modules.h:424
virtual EModRet OnChanBufferEnding(CChan &Chan, CClient &Client)
Called after a channel buffer was played back to a client.
bool OnQuit(const CNick &Nick, const CString &sMessage, const std::vector< CChan * > &vChans)
bool OnUserCTCPReply(CString &sTarget, CString &sMessage)
virtual void OnIRCDisconnected()
This module hook is called when a user gets disconnected from IRC.
bool HandleCommand(const CString &sLine)
This function tries to dispatch the given command via the correct instance of CModCommand.
virtual EModRet OnCTCPReply(CNick &Nick, CString &sMessage)
Called when we receive a CTCP reply from IRC.
Definition: Modules.h:186
virtual EModRet OnUserMsg(CString &sTarget, CString &sMessage)
This module hook is called when a user sends a normal IRC message.
virtual bool OnLoad(const CString &sArgsi, CString &sMessage)
This module hook is called when a module is loaded.
virtual EModRet OnUserTopic(CString &sChannel, CString &sTopic)
This module hook is called when a user wants to change a channel topic.
void AddHelp(CTable &Table) const
Add this command to the CTable instance.
virtual EModRet OnRaw(CString &sLine)
Called on any raw IRC line received from the IRC server.
const CString & GetDescription() const
Definition: Modules.h:226
void SetWikiPage(const CString &s)
Definition: Modules.h:238
bool SupportsType(EModuleType eType)
Definition: Modules.h:206
virtual EModRet OnUserRaw(CString &sLine)
This module hook is called when a client sends a raw traffic line to ZNC.
CString m_sArgs
Definition: Modules.h:1058
CString m_sModPath
Definition: Modules.h:1059
virtual void OnMode(const CNick &OpNick, CChan &Channel, char uMode, const CString &sArg, bool bAdded, bool bNoChange)
CString m_sDataDir
Definition: Modules.h:1056
CString m_sName
Definition: Modules.h:248
bool operator<(const CModInfo &Info) const
Definition: Modules.h:202
A dictionary for strings.
Definition: ZNCString.h:538
bool OnModCommand(const CString &sCommand)
bool OnUserMsg(CString &sTarget, CString &sMessage)
void SetArgsHelpText(const CString &s)
Definition: Modules.h:239
bool OnDevoice2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
virtual void OnPreRehash()
Called just before znc.conf is rehashed.
bool OnDevoice(const CNick &OpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
bool OnUserTopicRequest(CString &sChannel)
bool RemCommand(const CString &sCmd)
virtual EModRet OnUserCTCPReply(CString &sTarget, CString &sMessage)
This module hook is called when a client sends a CTCP reply.
virtual bool PutModNotice(const CString &sLine)
Send a notice from your module nick.
CTimer(CModule *pModule, unsigned int uInterval, unsigned int uCycles, const CString &sLabel, const CString &sDescription)
std::set< CTimer * >::const_iterator EndTimers() const
Definition: Modules.h:868
bool OnGetAvailableMods(std::set< CModInfo > &ssMods, CModInfo::EModuleType eType)
bool OnMode(const CNick &OpNick, CChan &Channel, char uMode, const CString &sArg, bool bAdded, bool bNoChange)
bool OnClientCapRequest(CClient *pClient, const CString &sCap, bool bState)
CIRCNetwork * m_pNetwork
Definition: Modules.h:1053
const CString & GetDescription() const
Definition: Modules.h:932
CString m_sModName
Definition: Modules.h:1055
virtual void OnRawMode2(const CNick *pOpNick, CChan &Channel, const CString &sModes, const CString &sArgs)
Called on any channel mode change.
bool OnInvite(const CNick &Nick, const CString &sChan)
virtual bool PutIRC(const CString &sLine)
This function sends a given raw IRC line to the IRC server, if we are connected to one...
bool OnOp2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
ModHandle GetDLL()
Definition: Modules.h:801
bool OnRawMode2(const CNick *pOpNick, CChan &Channel, const CString &sModes, const CString &sArgs)
ModLoader GetLoader() const
Definition: Modules.h:230
const CString & GetName() const
Definition: Modules.h:224
std::set< CTimer * >::const_iterator BeginTimers() const
Definition: Modules.h:867
virtual EModRet OnModuleLoading(const CString &sModName, const CString &sArgs, CModInfo::EModuleType eType, bool &bSuccess, CString &sRetMsg)
Called when a module is going to be loaded.
virtual EModRet OnDeleteUser(CUser &User)
This module hook is called when a user is deleted.
CUser * GetUser()
Definition: Modules.h:1074
CFPTimer(CModule *pModule, unsigned int uInterval, unsigned int uCycles, const CString &sLabel, const CString &sDescription)
Definition: Modules.h:160
bool OnChanMsg(CNick &Nick, CChan &Channel, CString &sMessage)
virtual void AddSubPage(TWebSubPage spSubPage)
Registers a sub page for the sidebar.
Definition: Modules.h:417
virtual void OnNick(const CNick &Nick, const CString &sNewNick, const std::vector< CChan * > &vChans)
Called when a nickname change occurs.
virtual EModRet OnChanMsg(CNick &Nick, CChan &Channel, CString &sMessage)
Called when we receive a channel message from IRC.
CString m_sPath
Definition: Modules.h:249
bool OnUserCTCP(CString &sTarget, CString &sMessage)
virtual void ClearSubPages()
Removes all registered (AddSubPage'd) SubPages.
Definition: Modules.h:420
bool OnUserAction(CString &sTarget, CString &sMessage)
const CString & GetDescription() const
bool OnDeleteUser(CUser &User)
bool OnChanBufferStarting(CChan &Chan, CClient &Client)
CModule * TModLoad(ModHandle p, CUser *pUser, CIRCNetwork *pNetwork, const CString &sModName, const CString &sModPath)
Definition: Modules.h:52
MCString::iterator BeginNV()
Definition: Modules.h:915
ModHandle m_pDLL
Definition: Modules.h:1050
bool OnFailedLogin(const CString &sUsername, const CString &sRemoteIP)
virtual void OnQuit(const CNick &Nick, const CString &sMessage, const std::vector< CChan * > &vChans)
Called when a nick quit from IRC.
virtual bool WebRequiresAdmin()
Return true if this module should only be usable for admins on the web.
Definition: Modules.h:388
bool OnModCTCP(const CString &sMessage)
virtual void OnDeop2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
Called when a nick is deopped on a channel.
CIRCNetwork * GetNetwork()
Definition: Modules.h:945
bool ReloadModule(const CString &sModule, const CString &sArgs, CUser *pUser, CIRCNetwork *pNetwork, CString &sRetMsg)
CIRCNetwork * m_pNetwork
Definition: Modules.h:1201
void SetDefaultType(EModuleType eType)
Definition: Modules.h:242
virtual void RunJob()
this is the method you should override
Definition: Modules.h:170
void SetUser(CUser *pUser)
virtual void OnVoice2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, bool bNoChange)
Called when a nick is voiced on a channel.
CModule * m_pModule
Definition: Modules.h:152
bool OnAddUser(CUser &User, CString &sErrorRet)
bool OnPrivAction(CNick &Nick, CString &sMessage)
bool OnNick(const CNick &Nick, const CString &sNewNick, const std::vector< CChan * > &vChans)
virtual EModRet OnPrivAction(CNick &Nick, CString &sMessage)
Called when we receive a private CTCP ACTION ("/me" in query) from IRC.
static bool GetModInfo(CModInfo &ModInfo, const CString &sModule, CString &sRetMsg)
Your module can throw this enum at any given time.
Definition: Modules.h:356
CString m_sDescription
Definition: Modules.h:250
const CString & GetSavePath() const
bool SetNV(const CString &sName, const CString &sValue, bool bWriteToDisk=true)
std::set< CSocket * >::const_iterator EndSockets() const
Definition: Modules.h:879
virtual CString GetWebMenuTitle()
Return the title of the module's section in the web interface's side bar.
Definition: Modules.h:392
virtual void OnChanPermission2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, unsigned char uMode, bool bAdded, bool bNoChange)
This module hook is called when a user mode on a channel changes.
A helper class for handling commands in modules.
Definition: Modules.h:258
virtual void OnJoin(const CNick &Nick, CChan &Channel)
Called when a nick joins a channel.
virtual EModRet OnPrivNotice(CNick &Nick, CString &sMessage)
Called when we receive a private notice.
void SetClient(CClient *pClient)
Definition: Modules.h:1073
bool OnRaw(CString &sLine)
virtual EModRet OnPrivMsg(CNick &Nick, CString &sMessage)
Called when we receive a private message from IRC.
const CString & GetDescription() const
Definition: Modules.h:298
Stop sending this even to other modules which were not called yet.
Definition: Modules.h:344
virtual EModRet OnPrivBufferPlayLine(CClient &Client, CString &sLine)
Called when a line from the query buffer is played back.
const CModCommand * FindCommand(const CString &sCmd) const
CModule(ModHandle pDLL, CUser *pUser, CIRCNetwork *pNetwork, const CString &sModName, const CString &sDataDir)
ModLoader m_fLoader
Definition: Modules.h:254
virtual void OnClientConnect(CZNCSock *pSock, const CString &sHost, unsigned short uPort)
This module hook is called when there is an incoming connection on any of ZNC's listening sockets...
virtual EModRet OnStatusCommand(CString &sCommand)
Called when a command to *status is sent.
Generate a grid-like output from a given input.
Definition: Utils.h:139
bool OnDeleteNetwork(CIRCNetwork &Network)
static bool FindModPath(const CString &sModule, CString &sModPath, CString &sDataPath)
bool OnClientConnect(CZNCSock *pSock, const CString &sHost, unsigned short uPort)
CSocket * FindSocket(const CString &sSockName)
const CString & GetModDataDir() const
Get the module's data dir.
Definition: Modules.h:858
virtual EModRet OnChanBufferStarting(CChan &Chan, CClient &Client)
Called before a channel buffer is played back to a client.
bool OnChanPermission2(const CNick *pOpNick, const CNick &Nick, CChan &Channel, unsigned char uMode, bool bAdded, bool bNoChange)
virtual EModRet OnIRCRegistration(CString &sPass, CString &sNick, CString &sIdent, CString &sRealName)
This module hook is called before loging in to the IRC server.
CString m_sDescription
Definition: Modules.h:1047