void AddBuffer(CChan& chan, const CString &sLine) { // If they have keep buffer disabled, only add messages if no client is connected if (!chan.KeepBuffer() && m_pUser->IsUserAttached()) return; chan.AddBuffer(sLine); }
virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage) { sTarget.TrimLeft("\244"); if (sMessage.Left(2) == "``") { sMessage.LeftChomp(2); return CONTINUE; } MCString::iterator it = FindNV(sTarget.AsLower()); if (it != EndNV()) { CChan* pChan = m_pUser->FindChan(sTarget); if (pChan) { if (pChan->KeepBuffer()) pChan->AddBuffer(":\244" + m_pUser->GetIRCNick().GetNickMask() + " PRIVMSG " + sTarget + " :" + sMessage); m_pUser->PutUser(":\244" + m_pUser->GetIRCNick().GetNickMask() + " PRIVMSG " + sTarget + " :" + sMessage, NULL, m_pClient); } CString sMsg = MakeIvec() + sMessage; sMsg.Encrypt(it->second); sMsg.Base64Encode(); sMsg = "+OK *" + sMsg; PutIRC("PRIVMSG " + sTarget + " :" + sMsg); return HALTCORE; } return CONTINUE; }
void AddBuffer(CChan& Channel, const CString& sMessage) { // If they have keep buffer disabled, only add messages if no client is connected if (!Channel.KeepBuffer() && m_pUser->IsUserAttached()) return; CString s = ":" + GetModNick() + "!" + GetModName() + "@znc.in PRIVMSG " + Channel.GetName() + " :" + m_pUser->AddTimestamp(sMessage); Channel.AddBuffer(s); }
void CChan::Clone(CChan& chan) { // We assume that m_sName and m_pNetwork are equal SetBufferCount(chan.GetBufferCount(), true); SetKeepBuffer(chan.KeepBuffer()); SetKey(chan.GetKey()); SetDefaultModes(chan.GetDefaultModes()); if (IsDetached() != chan.IsDetached()) { // Only send something if it makes sense // (= Only detach if client is on the channel // and only attach if we are on the channel) if (IsOn()) { if (IsDetached()) { JoinUser(false, ""); } else { DetachUser(); } } SetDetached(chan.IsDetached()); } }
void GetChan(const CString& sLine) { const CString var = sLine.Token(1).AsLower(); CString username = sLine.Token(2); CString chan = sLine.Token(3, true); if (var.empty()) { PutModule("Usage: getchan <variable> [username] <chan>"); return; } if (chan.empty()) { chan = username; username = ""; } if (username.empty()) { username = m_pUser->GetUserName(); } CUser* user = GetUser(username); if (!user) return; CChan* pChan = user->FindChan(chan); if (!pChan) { PutModule("Error: Channel not found: " + chan); return; } if (var == "defmodes") PutModule("DefModes = " + pChan->GetDefaultModes()); else if (var == "buffer") PutModule("Buffer = " + CString(pChan->GetBufferCount())); else if (var == "inconfig") PutModule("InConfig = " + pChan->InConfig()); else if (var == "keepbuffer") PutModule("KeepBuffer = " + pChan->KeepBuffer()); else if (var == "detached") PutModule("Detached = " + pChan->IsDetached()); else PutModule("Error: Unknown variable"); }