virtual ~CSaveBuff() { if (!m_bBootError) { SaveBufferToDisk(); } }
void SaveCommand(const CString& sCommand) { if (m_saveMessages) { SaveBufferToDisk(); PutModNotice("Messages saved to disk."); } else { PutModNotice("There are no messages to save."); } }
virtual void OnQuit(const CNick& cNick, const CString& sMessage, const vector<CChan*>& vChans) { for (u_int a = 0; a < vChans.size(); a++) { AddBuffer(*vChans[a], SpoofChanMsg(vChans[a]->GetName(), cNick.GetNickMask() + " QUIT " + sMessage)); } if (cNick.GetNick().Equals(m_pUser->GetNick())) SaveBufferToDisk(); // need to force a save here to see this! }
void DeleteCommand(const CString& sCommand) { CString sWhich = sCommand.Token(1); if (sWhich == "all") { PutModNotice("Deleted " + CString(m_vMessages.size()) + " Messages."); for (u_int a = 0; a < m_vMessages.size(); a++) m_vMessages.erase(m_vMessages.begin() + a--); } else if (sWhich.empty()) { PutModNotice("USAGE: delete <num|all>"); return; } else { u_int iNum = sWhich.ToUInt(); if (iNum >= m_vMessages.size()) { PutModNotice("Illegal Message # Requested"); return; } else { m_vMessages.erase(m_vMessages.begin() + iNum); PutModNotice("Message Erased."); } SaveBufferToDisk(); } }
virtual void OnModCommand(const CString& sCmdLine) { CString sCommand = sCmdLine.Token(0); CString sArgs = sCmdLine.Token(1, true); if (sCommand.Equals("setpass")) { PutModule("Password set to [" + sArgs + "]"); m_sPassword = CBlowfish::MD5(sArgs); } else if (sCommand.Equals("dumpbuff")) { CString sFile; if (DecryptChannel(sArgs, sFile)) { VCString vsLines; VCString::iterator it; sFile.Split("\n", vsLines); for (it = vsLines.begin(); it != vsLines.end(); ++it) { CString sLine(*it); sLine.Trim(); PutModule("[" + sLine + "]"); } } PutModule("//!-- EOF " + sArgs); } else if (sCommand.Equals("replay")) { Replay(sArgs); PutModule("Replayed " + sArgs); } else if (sCommand.Equals("save")) { SaveBufferToDisk(); PutModule("Done."); } else PutModule("Unknown command [" + sCommand + "]"); }
virtual void OnPart(const CNick& cNick, CChan& cChannel) { AddBuffer(cChannel, SpoofChanMsg(cChannel.GetName(), cNick.GetNickMask() + " PART")); if (cNick.GetNick().Equals(m_pUser->GetNick())) SaveBufferToDisk(); // need to force a save here to see this! }
virtual ~CAway() { if (!m_bBootError) SaveBufferToDisk(); }
virtual void OnModCommand(const CString& sCommand) { CString sCmdName = sCommand.Token(0); if (sCmdName == "away") { CString sReason; if (sCommand.Token(1) != "-quiet") { sReason = sCommand.Token(1, true); PutModNotice("You have been marked as away", "away"); } else sReason = sCommand.Token(2, true); Away(false, sReason); } else if (sCmdName == "back") { if ((m_vMessages.empty()) && (sCommand.Token(1) != "-quiet")) PutModNotice("Welcome Back!", "away"); Back(); } else if (sCmdName == "messages") { for (u_int a = 0; a < m_vMessages.size(); a++) PutModule(m_vMessages[a], "away"); } else if (sCmdName == "delete") { CString sWhich = sCommand.Token(1); if (sWhich == "all") { PutModNotice("Deleted " + CString(m_vMessages.size()) + " Messages.", "away"); for (u_int a = 0; a < m_vMessages.size(); a++) m_vMessages.erase(m_vMessages.begin() + a--); } else if (sWhich.empty()) { PutModNotice("USAGE: delete <num|all>", "away"); return; } else { u_int iNum = sWhich.ToUInt(); if (iNum >= m_vMessages.size()) { PutModNotice("Illegal Message # Requested", "away"); return; } else { m_vMessages.erase(m_vMessages.begin() + iNum); PutModNotice("Message Erased.", "away"); } SaveBufferToDisk(); } } else if (sCmdName == "save" && m_saveMessages) { SaveBufferToDisk(); PutModNotice("Messages saved to disk.", "away"); } else if (sCmdName == "ping") { Ping(); if (m_bIsAway) Back(); } else if (sCmdName == "pass") { m_sPassword = sCommand.Token(1); PutModNotice("Password Updated to [" + m_sPassword + "]"); } else if (sCmdName == "show") { map< CString, vector< CString> > msvOutput; for (u_int a = 0; a < m_vMessages.size(); a++) { CString sTime = m_vMessages[a].Token(0, false, ":"); CString sWhom = m_vMessages[a].Token(1, false, ":"); CString sMessage = m_vMessages[a].Token(2, true, ":"); if ((sTime.empty()) || (sWhom.empty()) || (sMessage.empty())) { // illegal format PutModule("Corrupt message! [" + m_vMessages[a] + "]", "away"); m_vMessages.erase(m_vMessages.begin() + a--); continue; } time_t iTime = sTime.ToULong(); char szFormat[64]; struct tm t; localtime_r(&iTime, &t); size_t iCount = strftime(szFormat, 64, "%Y-%m-%d %H:%M:%S", &t); if (iCount <= 0) { PutModule("Corrupt time stamp! [" + m_vMessages[a] + "]", "away"); m_vMessages.erase(m_vMessages.begin() + a--); continue; } CString sTmp = " " + CString(a) + ") ["; sTmp.append(szFormat, iCount); sTmp += "] "; sTmp += sMessage; msvOutput[sWhom].push_back(sTmp); } for (map< CString, vector< CString> >::iterator it = msvOutput.begin(); it != msvOutput.end(); ++it) { PutModule(it->first, "away"); for (u_int a = 0; a < it->second.size(); a++) PutModule(it->second[a]); } PutModule("#--- End Messages", "away"); } else if (sCmdName == "enabletimer") { SetAwayTime(300); PutModule("Timer set to 300 seconds"); } else if (sCmdName == "disabletimer") { SetAwayTime(0); PutModule("Timer disabled"); } else if (sCmdName == "settimer") { int iSetting = sCommand.Token(1).ToInt(); SetAwayTime(iSetting); if (iSetting == 0) PutModule("Timer disabled"); else PutModule("Timer set to " + CString(iSetting) + " seconds"); } else if (sCmdName == "timer") { PutModule("Current timer setting: " + CString(GetAwayTime()) + " seconds"); } else { PutModule("Commands: away [-quiet], back [-quiet], delete <num|all>, ping, show, save, enabletimer, disabletimer, settimer <secs>, timer", "away"); } }