Added module hooks for OnUserJoin() and OnUserPart()

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@566 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
prozacx
2005-10-12 02:12:42 +00:00
parent c2119b6deb
commit fb9a062fdb
3 changed files with 114 additions and 159 deletions
+45 -139
View File
@@ -435,8 +435,6 @@ CString CModule::GetModNick() const { return ((m_pUser) ? m_pUser->GetStatusPref
bool CModule::OnLoad(const CString& sArgs) { return true; }
bool CModule::OnBoot() { return true; }
void CModule::OnUserAttached() {}
void CModule::OnUserDetached() {}
void CModule::OnIRCDisconnected() {}
void CModule::OnIRCConnected() {}
CModule::EModRet CModule::OnBroadcast(CString& sMessage) { return CONTINUE; }
@@ -450,7 +448,6 @@ void CModule::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bo
void CModule::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {}
void CModule::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) {}
CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; }
CModule::EModRet CModule::OnRaw(CString& sLine) { return CONTINUE; }
CModule::EModRet CModule::OnStatusCommand(const CString& sCommand) { return CONTINUE; }
@@ -464,15 +461,21 @@ void CModule::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Chann
void CModule::OnJoin(const CNick& Nick, CChan& Channel) {}
void CModule::OnPart(const CNick& Nick, CChan& Channel) {}
void CModule::OnUserAttached() {}
void CModule::OnUserDetached() {}
CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; }
CModule::EModRet CModule::OnUserCTCPReply(CString& sTarget, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnUserCTCP(CString& sTarget, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnUserJoin(CString& sChannel, CString& sKey) { return CONTINUE; }
CModule::EModRet CModule::OnUserPart(CString& sChannel, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnPrivCTCP(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnPrivMsg(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnPrivNotice(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
@@ -531,141 +534,44 @@ bool CModules::OnBoot() {
return true;
}
void CModules::OnIRCConnected() {
MODUNLOADCHK(OnIRCConnected());
}
void CModules::OnIRCConnected() { MODUNLOADCHK(OnIRCConnected()); }
bool CModules::OnBroadcast(CString& sMessage) { MODHALTCHK(OnBroadcast(sMessage)); }
void CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); }
bool CModules::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) { MODHALTCHK(OnDCCUserSend(RemoteNick, uLongIP, uPort, sFile, uFileSize)); }
void CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange)); }
void CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs)); }
bool CModules::OnRaw(CString& sLine) { MODHALTCHK(OnRaw(sLine)); }
bool CModules::OnBroadcast(CString& sMessage) {
MODHALTCHK(OnBroadcast(sMessage));
}
void CModules::OnUserAttached() { MODUNLOADCHK(OnUserAttached()); }
void CModules::OnUserDetached() { MODUNLOADCHK(OnUserDetached()); }
bool CModules::OnUserRaw(CString& sLine) { MODHALTCHK(OnUserRaw(sLine)); }
bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCPReply(sTarget, sMessage)); }
bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCP(sTarget, sMessage)); }
bool CModules::OnUserMsg(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserMsg(sTarget, sMessage)); }
bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserNotice(sTarget, sMessage)); }
bool CModules::OnUserJoin(CString& sChannel, CString& sKey) { MODHALTCHK(OnUserJoin(sChannel, sKey)); }
bool CModules::OnUserPart(CString& sChannel, CString& sMessage) { MODHALTCHK(OnUserPart(sChannel, sMessage)); }
void CModules::OnUserAttached() {
MODUNLOADCHK(OnUserAttached());
}
void CModules::OnUserDetached() {
MODUNLOADCHK(OnUserDetached());
}
void CModules::OnIRCDisconnected() {
MODUNLOADCHK(OnIRCDisconnected());
}
bool CModules::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) {
MODHALTCHK(OnDCCUserSend(RemoteNick, uLongIP, uPort, sFile, uFileSize));
}
void CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) {
MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange));
}
void CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange));
}
void CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange));
}
void CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange));
}
void CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange));
}
void CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) {
MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs));
}
bool CModules::OnRaw(CString& sLine) {
MODHALTCHK(OnRaw(sLine));
}
bool CModules::OnUserRaw(CString& sLine) {
MODHALTCHK(OnUserRaw(sLine));
}
void CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) {
MODUNLOADCHK(OnQuit(Nick, sMessage, vChans));
}
void CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) {
MODUNLOADCHK(OnNick(Nick, sNewNick, vChans));
}
void CModules::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) {
MODUNLOADCHK(OnKick(Nick, sKickedNick, Channel, sMessage));
}
void CModules::OnJoin(const CNick& Nick, CChan& Channel) {
MODUNLOADCHK(OnJoin(Nick, Channel));
}
void CModules::OnPart(const CNick& Nick, CChan& Channel) {
MODUNLOADCHK(OnPart(Nick, Channel));
}
bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) {
MODHALTCHK(OnUserCTCPReply(sTarget, sMessage));
}
bool CModules::OnCTCPReply(CNick& Nick, CString& sMessage) {
MODHALTCHK(OnCTCPReply(Nick, sMessage));
}
bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) {
MODHALTCHK(OnUserCTCP(sTarget, sMessage));
}
bool CModules::OnPrivCTCP(CNick& Nick, CString& sMessage) {
MODHALTCHK(OnPrivCTCP(Nick, sMessage));
}
bool CModules::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) {
MODHALTCHK(OnChanCTCP(Nick, Channel, sMessage));
}
bool CModules::OnUserMsg(CString& sTarget, CString& sMessage) {
MODHALTCHK(OnUserMsg(sTarget, sMessage));
}
bool CModules::OnPrivMsg(CNick& Nick, CString& sMessage) {
MODHALTCHK(OnPrivMsg(Nick, sMessage));
}
bool CModules::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) {
MODHALTCHK(OnChanMsg(Nick, Channel, sMessage));
}
bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) {
MODHALTCHK(OnUserNotice(sTarget, sMessage));
}
bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) {
MODHALTCHK(OnPrivNotice(Nick, sMessage));
}
bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) {
MODHALTCHK(OnChanNotice(Nick, Channel, sMessage));
}
bool CModules::OnStatusCommand(const CString& sCommand) {
MODHALTCHK(OnStatusCommand(sCommand));
}
void CModules::OnModCommand(const CString& sCommand) {
MODUNLOADCHK(OnModCommand(sCommand));
}
void CModules::OnModNotice(const CString& sMessage) {
MODUNLOADCHK(OnModNotice(sMessage));
}
void CModules::OnModCTCP(const CString& sMessage) {
MODUNLOADCHK(OnModCTCP(sMessage));
}
void CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); }
void CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) { MODUNLOADCHK(OnNick(Nick, sNewNick, vChans)); }
void CModules::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) { MODUNLOADCHK(OnKick(Nick, sKickedNick, Channel, sMessage)); }
void CModules::OnJoin(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnJoin(Nick, Channel)); }
void CModules::OnPart(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnPart(Nick, Channel)); }
bool CModules::OnCTCPReply(CNick& Nick, CString& sMessage) { MODHALTCHK(OnCTCPReply(Nick, sMessage)); }
bool CModules::OnPrivCTCP(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivCTCP(Nick, sMessage)); }
bool CModules::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanCTCP(Nick, Channel, sMessage)); }
bool CModules::OnPrivMsg(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivMsg(Nick, sMessage)); }
bool CModules::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanMsg(Nick, Channel, sMessage)); }
bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivNotice(Nick, sMessage)); }
bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanNotice(Nick, Channel, sMessage)); }
bool CModules::OnStatusCommand(const CString& sCommand) { MODHALTCHK(OnStatusCommand(sCommand)); }
void CModules::OnModCommand(const CString& sCommand) { MODUNLOADCHK(OnModCommand(sCommand)); }
void CModules::OnModNotice(const CString& sMessage) { MODUNLOADCHK(OnModNotice(sMessage)); }
void CModules::OnModCTCP(const CString& sMessage) { MODUNLOADCHK(OnModCTCP(sMessage)); }
////////////////////
// CGlobalModules //
+18 -12
View File
@@ -198,8 +198,6 @@ public:
virtual bool OnLoad(const CString& sArgs);
virtual bool OnBoot();
virtual void OnUserAttached();
virtual void OnUserDetached();
virtual void OnIRCDisconnected();
virtual void OnIRCConnected();
virtual EModRet OnBroadcast(CString& sMessage);
@@ -213,7 +211,6 @@ public:
virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs);
virtual EModRet OnUserRaw(CString& sLine);
virtual EModRet OnRaw(CString& sLine);
virtual EModRet OnStatusCommand(const CString& sCommand);
@@ -227,15 +224,21 @@ public:
virtual void OnJoin(const CNick& Nick, CChan& Channel);
virtual void OnPart(const CNick& Nick, CChan& Channel);
virtual void OnUserAttached();
virtual void OnUserDetached();
virtual EModRet OnUserRaw(CString& sLine);
virtual EModRet OnUserCTCPReply(CString& sTarget, CString& sMessage);
virtual EModRet OnCTCPReply(CNick& Nick, CString& sMessage);
virtual EModRet OnUserCTCP(CString& sTarget, CString& sMessage);
virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage);
virtual EModRet OnUserNotice(CString& sTarget, CString& sMessage);
virtual EModRet OnUserJoin(CString& sChannel, CString& sKey);
virtual EModRet OnUserPart(CString& sChannel, CString& sMessage);
virtual EModRet OnCTCPReply(CNick& Nick, CString& sMessage);
virtual EModRet OnPrivCTCP(CNick& Nick, CString& sMessage);
virtual EModRet OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage);
virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage);
virtual EModRet OnPrivMsg(CNick& Nick, CString& sMessage);
virtual EModRet OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage);
virtual EModRet OnUserNotice(CString& sTarget, CString& sMessage);
virtual EModRet OnPrivNotice(CNick& Nick, CString& sMessage);
virtual EModRet OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage);
@@ -323,8 +326,6 @@ public:
void UnloadAll();
virtual bool OnBoot(); // Return false to abort
virtual void OnUserAttached();
virtual void OnUserDetached();
virtual void OnIRCDisconnected();
virtual void OnIRCConnected();
virtual bool OnBroadcast(CString& sMessage);
@@ -338,7 +339,6 @@ public:
virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs);
virtual bool OnUserRaw(CString& sLine);
virtual bool OnRaw(CString& sLine);
virtual bool OnStatusCommand(const CString& sCommand);
@@ -352,15 +352,21 @@ public:
virtual void OnJoin(const CNick& Nick, CChan& Channel);
virtual void OnPart(const CNick& Nick, CChan& Channel);
virtual void OnUserAttached();
virtual void OnUserDetached();
virtual bool OnUserRaw(CString& sLine);
virtual bool OnUserCTCPReply(CString& sTarget, CString& sMessage);
virtual bool OnCTCPReply(CNick& Nick, CString& sMessage);
virtual bool OnUserCTCP(CString& sTarget, CString& sMessage);
virtual bool OnUserMsg(CString& sTarget, CString& sMessage);
virtual bool OnUserNotice(CString& sTarget, CString& sMessage);
virtual bool OnUserJoin(CString& sChannel, CString& sKey);
virtual bool OnUserPart(CString& sChannel, CString& sMessage);
virtual bool OnCTCPReply(CNick& Nick, CString& sMessage);
virtual bool OnPrivCTCP(CNick& Nick, CString& sMessage);
virtual bool OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage);
virtual bool OnUserMsg(CString& sTarget, CString& sMessage);
virtual bool OnPrivMsg(CNick& Nick, CString& sMessage);
virtual bool OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage);
virtual bool OnUserNotice(CString& sTarget, CString& sMessage);
virtual bool OnPrivNotice(CNick& Nick, CString& sMessage);
virtual bool OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage);
+51 -8
View File
@@ -86,7 +86,9 @@ void CUserSock::ReadLine(const CString& sData) {
}
return; // Don't forward this msg. ZNC has already registered us.
} else if (!m_pUser) {
}
if (!m_pUser) {
Close();
return;
}
@@ -116,24 +118,59 @@ void CUserSock::ReadLine(const CString& sData) {
} else if (sCommand.CaseCmp("PONG") == 0) {
return; // Block pong replies, we already responded to the pings
} else if (sCommand.CaseCmp("JOIN") == 0) {
CString sChan = sLine.Token(1);
CString sChans = sLine.Token(1);
CString sKey = sLine.Token(2);
if (sChan.Left(1) == ":") {
sChan.LeftChomp();
if (sChans.Left(1) == ":") {
sChans.LeftChomp();
}
if (m_pUser) {
CChan* pChan = m_pUser->FindChan(sChan);
VCString vChans;
sChans.Split(",", vChans, false);
sChans.clear();
if (pChan) {
pChan->JoinUser(false, sKey);
for (unsigned int a = 0; a < vChans.size(); a++) {
CString sChannel = vChans[a];
CZNC::Get().GetModules().SetUserSock(this);
MODULECALLCONT(OnUserJoin(sChannel, sKey));
CZNC::Get().GetModules().SetUserSock(NULL);
CChan* pChan = m_pUser->FindChan(sChannel);
if (pChan) {
pChan->JoinUser(false, sKey);
continue;
}
if (!sChannel.empty()) {
sChans += (sChans.empty()) ? sChannel : CString("," + sChannel);
}
}
if (sChans.empty()) {
return;
}
sLine = "JOIN " + sChans;
if (!sKey.empty()) {
sLine += " " + sKey;
}
}
} else if (sCommand.CaseCmp("PART") == 0) {
CString sChan = sLine.Token(1);
CString sMessage = sLine.Token(2, true);
if (sMessage.Left(1) == ":") {
sMessage.LeftChomp();
}
CZNC::Get().GetModules().SetUserSock(this);
MODULECALLRET(OnUserPart(sChan, sMessage));
CZNC::Get().GetModules().SetUserSock(NULL);
if (m_pUser) {
CString sChan = sLine.Token(1);
CChan* pChan = m_pUser->FindChan(sChan);
if (pChan && !pChan->IsOn()) {
@@ -142,6 +179,12 @@ void CUserSock::ReadLine(const CString& sData) {
return;
}
}
sLine = "PART " + sChan;
if (!sMessage.empty()) {
sLine += " :" + sMessage;
}
} else if (sCommand.CaseCmp("QUIT") == 0) {
if (m_pIRCSock) {
m_pUser->UserDisconnected(this);