TEST(MessageTest, ToString) { EXPECT_EQ("CMD", CMessage("CMD").ToString()); EXPECT_EQ("CMD p1", CMessage("CMD p1").ToString()); EXPECT_EQ("CMD p1 p2", CMessage("CMD p1 p2").ToString()); EXPECT_EQ("CMD :p p p", CMessage("CMD :p p p").ToString()); EXPECT_EQ(":irc.znc.in", CMessage(":irc.znc.in").ToString()); EXPECT_EQ(":irc.znc.in CMD", CMessage(":irc.znc.in CMD").ToString()); EXPECT_EQ(":irc.znc.in CMD p1", CMessage(":irc.znc.in CMD p1").ToString()); EXPECT_EQ(":irc.znc.in CMD p1 p2", CMessage(":irc.znc.in CMD p1 p2").ToString()); EXPECT_EQ(":irc.znc.in CMD :p p p", CMessage(":irc.znc.in CMD :p p p").ToString()); EXPECT_EQ(":irc.znc.in CMD :", CMessage(":irc.znc.in CMD :").ToString()); EXPECT_EQ("CMD", CMessage(CNick(), "CMD").ToString()); EXPECT_EQ("CMD p1", CMessage(CNick(), "CMD", {"p1"}).ToString()); EXPECT_EQ("CMD p1 p2", CMessage(CNick(), "CMD", {"p1", "p2"}).ToString()); EXPECT_EQ("CMD :p p p", CMessage(CNick(), "CMD", {"p p p"}).ToString()); EXPECT_EQ(":irc.znc.in", CMessage(CNick(":irc.znc.in"), "").ToString()); EXPECT_EQ(":irc.znc.in CMD", CMessage(CNick(":irc.znc.in"), "CMD").ToString()); EXPECT_EQ(":irc.znc.in CMD p1", CMessage(CNick(":irc.znc.in"), "CMD", {"p1"}).ToString()); EXPECT_EQ(":irc.znc.in CMD p1 p2", CMessage(CNick(":irc.znc.in"), "CMD", {"p1", "p2"}).ToString()); EXPECT_EQ(":irc.znc.in CMD :p p p", CMessage(CNick(":irc.znc.in"), "CMD", {"p p p"}).ToString()); EXPECT_EQ(":irc.znc.in CMD :", CMessage(CNick(":irc.znc.in"), "CMD", {""}).ToString()); // #1045 - retain the colon if it was there EXPECT_EQ(":services. 328 user #chan http://znc.in", CMessage(":services. 328 user #chan http://znc.in").ToString()); EXPECT_EQ(":services. 328 user #chan :http://znc.in", CMessage(":services. 328 user #chan :http://znc.in").ToString()); }
void CommandMgr::HandleDatum(CommandMessage& recvData) { CNick(recvData); int honap = Honap(); int nap = Nap(); for(uint8 x = 0; x < 12; x++) { uint8 honapdb = Honapok[x]; string napdb = Nevnap[x][nap-1]; if(honap == honapdb) { if(honap < 10) { if(nap < 10) sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Ma %i. 0%i. 0%i. %s napja van.", Ev(), honap, nap, napdb.c_str()); else sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Ma %i. 0%i. %i. %s napja van.", Ev(), honap, nap, napdb.c_str()); } else { if(nap < 10) sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Ma %i. %i. 0%i. %s napja van.", Ev(), honap, nap, napdb.c_str()); else sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Ma %i. %i. %i. %s napja van.", Ev(), honap, nap, napdb.c_str()); } } } }
void CommandMgr::HandleMd5(CommandMessage& recvData) { CNick(recvData); if(recvData.Args.length() <= recvData.firstSpace+1) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Nincs paraméter!"); return; } MD5Hash md5; unsigned char* eredmeny = new unsigned char[MD5_DIGEST_LENGTH+1]; md5.Initialize(); md5.UpdateData(recvData.Args.substr(recvData.firstSpace+1)); md5.Finalize(); memcpy(eredmeny, md5.GetDigest(), MD5_DIGEST_LENGTH); stringstream ss; const size_t len = 16; for(size_t u = 0; u < len; ++u) ss << std::hex << std::setw(2) << std::setfill('0') << cast_int(eredmeny[u]); string hash; ss >> hash; sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "%s", hash.c_str()); }
void CommandMgr::HandleXbot(CommandMessage& recvData) { CNick(recvData); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "3Verzió: 10%s", revision); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "3Parancsok: %sinfo | %shelp | %sxrev | %sido | %sdatum | %sirc | %sroll | %scalc | %skeres | %sfordit | %ssha1 | %smd5 | %suzenet | %swhois | %sjegyzet | %sprime", sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel(), sIRCSession.GetParancsElojel()); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Programmed by: 3Csaba"); }
void CommandMgr::HandleIdo(CommandMessage& recvData) { CNick(recvData); int perc = Perc(); if(perc < 10) sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Helyi idõ: %i:0%i", Ora(), perc); else sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Helyi idõ: %i:%i", Ora(), perc); }
void CommandMgr::HandleSha1(CommandMessage& recvData) { CNick(recvData); if(recvData.Args.length() <= recvData.firstSpace+1) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Nincs paraméter!"); return; } sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "%s", sVezerlo.Sha1(recvData.Args.substr(recvData.firstSpace+1)).c_str()); }
void CommandMgr::HandleKeres(CommandMessage& recvData) { CNick(recvData); if(recvData.Args.length() <= recvData.firstSpace+1) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Nincs paraméter!"); return; } string kiiras = sVezerlo.urlencode(recvData.Args.substr(recvData.firstSpace+1)); m_Curl = curl_easy_init(); if(m_Curl) { string bufferdata; curl_easy_setopt(m_Curl, CURLOPT_URL, format("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&start=0&rsz=small&q=%s", kiiras.c_str()).c_str()); curl_easy_setopt(m_Curl, CURLOPT_WRITEFUNCTION, CommandMgr::writer); curl_easy_setopt(m_Curl, CURLOPT_WRITEDATA, &bufferdata); CURLcode result = curl_easy_perform(m_Curl); curl_easy_cleanup(m_Curl); if(result == CURLE_OK) { boost::regex re("(\\\"unescapedUrl\\\"):\\\"(?<url>\\S+)\\\",\\\"url\\\""); boost::cmatch matches; boost::regex_search(bufferdata.c_str(), matches, re); string matched(matches[2].first, matches[2].second); boost::regex re1(".titleNoFormatting.:.(.*).,.content.:."); boost::cmatch matches1; boost::regex_search(bufferdata.c_str(), matches1, re1); string matched1(matches1[1].first, matches1[1].second); int szokoz = matched1.find("\",\""); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "2Title: %s", matched1.substr(0, szokoz).c_str()); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "2Link: 9%s", matched.c_str()); } else { Log.Notice("IRCSession", "Keres: Hiba a Http lekerdezesben."); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Hibás találat"); } } else curl_easy_cleanup(m_Curl); }
void CommandMgr::HandleXrev(CommandMessage& recvData) { CNick(recvData); if(recvData.Args.length() <= recvData.firstSpace+1) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Emulátorok: sandshroud"); return; } vector<string> res(1); split(recvData.Args.substr(recvData.firstSpace+1), " ", res); if(res.size() < 2) { res.clear(); return; } string iras = res[1]; if(iras == "sandshroud") { if(res.size() < 3) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "A revision nincs megadva!"); res.clear(); return; } int rev; stringstream ss; ss << res[2]; ss >> rev; sIRCSession.SvnSandshroud(rev, recvData.Channel); } else
CMessage CBufLine::ToMessage(const CClient& Client, const MCString& mssParams) const { CMessage Line = m_Message; CString sSender = Line.GetNick().GetNickMask(); Line.SetNick(CNick(CString::NamedFormat(sSender, mssParams))); MCString mssThisParams = mssParams; if (Client.HasServerTime()) { mssThisParams["text"] = m_sText; } else { mssThisParams["text"] = Client.GetUser()->AddTimestamp(Line.GetTime().tv_sec, m_sText); } // make a copy of params, because the following loop modifies the original VCString vsParams = Line.GetParams(); for (unsigned int uIdx = 0; uIdx < vsParams.size(); ++uIdx) { Line.SetParam(uIdx, CString::NamedFormat(vsParams[uIdx], mssThisParams)); } return Line; }
void CommandMgr::HandleRoll(CommandMessage& recvData) { CNick(recvData); uint32 adat = rand()%101; sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Százalékos aránya %u!", adat); }
void CommandMgr::HandleInfo(CommandMessage& recvData) { CNick(recvData); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Programozóm: Csaba, Twl és Scymex. Üzemeltetõ: %s.", sIRCSession.GetUzemelteto()); }
void CommandMgr::HandleForditas(CommandMessage& recvData) { CNick(recvData); if(recvData.Args.length() <= recvData.firstSpace+1) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Nincs paraméter!"); return; } vector<string> res(1); split(recvData.Args.substr(recvData.firstSpace+1), " ", res); if(res.size() < 2) { res.clear(); return; } if(res.size() < 3) { sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Nincs egy szó se megadva amit lekéne fordítani!"); res.clear(); return; } string nyelv = res[1]; string alomany; int resAdat = res.size(); for(int i = 2; i < resAdat; i++) alomany += " " + res[i]; string iras = sVezerlo.urlencode(alomany.substr(1)); m_Curl = curl_easy_init(); if(m_Curl) { string bufferdata; curl_easy_setopt(m_Curl, CURLOPT_URL, format("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s", iras.c_str(), nyelv.c_str()).c_str()); curl_easy_setopt(m_Curl, CURLOPT_WRITEFUNCTION, CommandMgr::writer); curl_easy_setopt(m_Curl, CURLOPT_WRITEDATA, &bufferdata); CURLcode result = curl_easy_perform(m_Curl); curl_easy_cleanup(m_Curl); if(result == CURLE_OK) { boost::regex re("\\{.translatedText.\\:.(.+).\\},"); boost::cmatch matches; boost::regex_search(bufferdata.c_str(), matches, re); string matched(matches[1].first, matches[1].second); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "%s", matched.c_str()); } else { Log.Notice("IRCSession", "Fordit: Hiba a Http lekerdezesben."); sIRCSession.SendChatMessage(PRIVMSG, recvData.GetChannel(), "Hibás fordítás"); } } else curl_easy_cleanup(m_Curl); res.clear(); }