예제 #1
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.");
		}
	}
예제 #2
0
bool CModule::PutModule(const CString& sLine, const CString& sIdent, const CString& sHost) {
	if (!m_pUser)
		return false;
	if(m_pUser->ModRepliesAsNotices())
		return PutModNotice(sLine, sIdent, sHost);
	return m_pUser->PutUser(":" + GetModNick() + "!" +
		(sIdent.empty() ? GetModName() : sIdent) + "@" + sHost +
		" PRIVMSG " + m_pUser->GetCurNick() + " :" + sLine,
		m_pClient);
}
예제 #3
0
	virtual void Back(bool bUsePrivMessage = false)
	{
		PutIRC("away");
		m_bIsAway = false;
		if (!m_vMessages.empty())
		{
			if (bUsePrivMessage)
			{
				PutModule("Welcome Back!", "away");
				PutModule("You have " + CString(m_vMessages.size()) + " messages!", "away");
			}
			else
			{
				PutModNotice("Welcome Back!", "away");
				PutModNotice("You have " + CString(m_vMessages.size()) + " messages!", "away");
			}
		}
		m_sReason = "";
	}
예제 #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
파일: away.cpp 프로젝트: Affix/znc
	void AwayCommand(const CString& sCommand) {
		CString sReason;

		if (sCommand.Token(1) != "-quiet") {
			sReason = sCommand.Token(1, true);
			PutModNotice("You have been marked as away");
		} else {
			sReason = sCommand.Token(2, true);
		}

		Away(false, sReason);
	}
예제 #6
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");
		}
	}
예제 #7
0
파일: away.cpp 프로젝트: Affix/znc
	void BackCommand(const CString& sCommand) {
		if ((m_vMessages.empty()) && (sCommand.Token(1) != "-quiet"))
			PutModNotice("Welcome Back!");
		Back();
	}
예제 #8
0
파일: away.cpp 프로젝트: Affix/znc
	void PassCommand(const CString& sCommand) {
		m_sPassword = sCommand.Token(1);
		PutModNotice("Password Updated to [" + m_sPassword + "]");
	}