Пример #1
0
	virtual ~CSaveBuff()
	{
		if (!m_bBootError)
		{
			SaveBufferToDisk();
		}
	}
Пример #2
0
Файл: away.cpp Проект: Affix/znc
	void SaveCommand(const CString& sCommand) {
		if (m_saveMessages) {
			SaveBufferToDisk();
			PutModNotice("Messages saved to disk.");
		} else {
			PutModNotice("There are no messages to save.");
		}
	}
Пример #3
0
	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!
	}
Пример #4
0
Файл: away.cpp Проект: Affix/znc
	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();
		}
	}
Пример #5
0
	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 + "]");
	}
Пример #6
0
	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!
	}
Пример #7
0
	virtual ~CAway()
	{
		if (!m_bBootError)
			SaveBufferToDisk();
	}
Пример #8
0
	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");
		}
	}