void OnCTCP(const Flux::string &source, const Flux::vector ¶ms) { Flux::string cmd = params.empty()?"":params[0]; Log(LOG_SILENT) << "Received CTCP " << Flux::Sanitize(cmd) << " from " << source; Log(LOG_TERMINAL) << "\033[22;31mReceived CTCP " << Flux::Sanitize(cmd) << " from " << source << Config->LogColor; if(cmd == "\001VERSION\001") { // for CTCP VERSION reply struct utsname uts; if(uname(&uts) < 0) throw CoreException("uname() Error"); ircproto->notice(source, "\001VERSION Navn-%s %s %s\001", VERSION_FULL, uts.sysname, uts.machine); } if(cmd == "\001TIME\001") { // for CTCP TIME reply ircproto->notice(source,"\001TIME %s\001", do_strftime(time(NULL), true).c_str()); } if(cmd == "\001SOURCE\001") { ircproto->notice(source, "\001SOURCE https://github.com/Justasic/Navn\001"); ircproto->notice(source, "\1SOURCE git://github.com/Justasic/Navn.git\1"); } if(cmd == "\001DCC") ircproto->notice(source, "I do not accept or support DCC connections."); }
/** * \fn void CheckLogDelete(Log *log) * \brief Check to see if logs need to be removed due to old age * \param log A log class variable */ void CheckLogDelete(Log *log) { Flux::string dir = binary_dir + "/logs/"; if(!TextFile::IsDirectory(dir)) { Log(LOG_TERMINAL) << "Directory " << dir << " does not exist, making new directory."; #ifndef _WIN32 if(mkdir(dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) throw LogException("Failed to create directory " + dir + ": " + Flux::string(strerror(errno))); #else if(!CreateDirectory(dir.c_str(), NULL)) throw LogException("Failed to create directory " + dir + ": " + Flux::string(strerror(errno))); #endif } Flux::vector files = TextFile::DirectoryListing(dir); if(log) files.push_back(log->filename); if(files.empty()) Log(LOG_TERMINAL) << "No Logs!"; for(Flux::vector::iterator it = files.begin(); it != files.end(); ++it) { Flux::string file = dir + (*it); if(TextFile::IsFile(file)) { Flux::string t = file.isolate('-', ' ').strip('-'); int timestamp = static_cast<int>(t); if(timestamp > (time(NULL) - 86400 * Config->LogAge) && timestamp != starttime) { Delete(file.c_str()); Log(LOG_DEBUG) << "Deleted old logfile " << file; } } } }
void OnPrivmsgChannel(User *u, Channel *c, const Flux::vector ¶ms) { //Flux::vector MessageParams = StringVector(params, ' '); Flux::string msg; for(unsigned i=0; i < params.size(); ++i) msg += params[i]+' '; Flux::string cmd = params.empty()?"":params[0]; if(cmd.equals_ci("!encyclopedia")) { SetQuery(1, params); Brain(u,query); } if(msg.search_ci(Config->BotNick+", what do you know about ")) { SetQuery(6, params); Brain(u, query); } else if(msg.search_ci(Config->BotNick+", what is a ") ^ msg.search_ci(Config->BotNick+", what is the") ^ msg.search_ci(Config->BotNick+", tell me about ") ^ msg.search_ci(Config->BotNick+", who are the ") ^ msg.search_ci(Config->BotNick+", what is an ")) { SetQuery(4, params); Brain(u, query); } else if(msg.search_ci(Config->BotNick+", what is ") ^ msg.search_ci(Config->BotNick+", what are ") ^ msg.search_ci(Config->BotNick+", who is ") ^ msg.search_ci(Config->BotNick+", what's a ") ^ msg.search_ci(Config->BotNick+", what's an ")) { SetQuery(3, params); Brain(u, query); } else if(msg.search_ci(Config->BotNick+", tell me what you know about ")) { SetQuery(7, params); Brain(u, query); } }