From c2ddecc2b1dbc9d055166bdf296da2e4536f74f6 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 27 Aug 2010 20:56:28 -0400 Subject: Added a new logging system --- modules/core/bs_act.cpp | 6 ++-- modules/core/bs_assign.cpp | 3 ++ modules/core/bs_badwords.cpp | 19 ++++++++-- modules/core/bs_bot.cpp | 6 ++++ modules/core/bs_kick.cpp | 21 ++++++----- modules/core/bs_say.cpp | 6 ++-- modules/core/bs_set.cpp | 3 ++ modules/core/bs_unassign.cpp | 3 ++ modules/core/cs_access.cpp | 38 ++++++++++++++------ modules/core/cs_akick.cpp | 32 +++++++++++++++-- modules/core/cs_ban.cpp | 5 ++- modules/core/cs_clear.cpp | 6 +++- modules/core/cs_drop.cpp | 13 +++---- modules/core/cs_forbid.cpp | 11 +++--- modules/core/cs_getkey.cpp | 3 ++ modules/core/cs_invite.cpp | 5 ++- modules/core/cs_kick.cpp | 3 ++ modules/core/cs_modes.cpp | 38 +++++++++----------- modules/core/cs_register.cpp | 10 ++---- modules/core/cs_saset.cpp | 4 ++- modules/core/cs_set.cpp | 3 +- modules/core/cs_set_founder.cpp | 2 +- modules/core/cs_set_successor.cpp | 2 +- modules/core/cs_set_xop.cpp | 4 +-- modules/core/cs_suspend.cpp | 11 +++--- modules/core/cs_topic.cpp | 14 ++++---- modules/core/cs_xop.cpp | 22 ++++++++---- modules/core/db_plain.cpp | 33 +++++++++-------- modules/core/enc_md5.cpp | 2 +- modules/core/enc_none.cpp | 2 +- modules/core/enc_old.cpp | 2 +- modules/core/enc_sha1.cpp | 2 +- modules/core/enc_sha256.cpp | 2 +- modules/core/hs_del.cpp | 2 +- modules/core/hs_delall.cpp | 2 +- modules/core/hs_off.cpp | 1 + modules/core/hs_on.cpp | 1 + modules/core/hs_set.cpp | 3 +- modules/core/hs_setall.cpp | 2 +- modules/core/ms_rsend.cpp | 2 +- modules/core/ns_drop.cpp | 4 +-- modules/core/ns_forbid.cpp | 5 +-- modules/core/ns_getemail.cpp | 2 +- modules/core/ns_getpass.cpp | 4 +-- modules/core/ns_ghost.cpp | 4 ++- modules/core/ns_group.cpp | 12 +++---- modules/core/ns_identify.cpp | 6 ++-- modules/core/ns_logout.cpp | 2 +- modules/core/ns_recover.cpp | 2 +- modules/core/ns_register.cpp | 18 +++++----- modules/core/ns_release.cpp | 4 +-- modules/core/ns_resetpass.cpp | 6 ++-- modules/core/ns_saset.cpp | 6 ++-- modules/core/ns_sendpass.cpp | 2 +- modules/core/ns_set.cpp | 4 +-- modules/core/ns_set_email.cpp | 2 -- modules/core/ns_suspend.cpp | 4 +-- modules/core/os_defcon.cpp | 18 +++++----- modules/core/os_ignore.cpp | 2 +- modules/core/os_modunload.cpp | 2 +- modules/core/os_news.cpp | 10 ++---- modules/core/os_reload.cpp | 2 +- modules/core/os_set.cpp | 76 +++++++-------------------------------- modules/core/ss_main.cpp | 4 +-- 64 files changed, 299 insertions(+), 251 deletions(-) (limited to 'modules/core') diff --git a/modules/core/bs_act.cpp b/modules/core/bs_act.cpp index 34251cbb2..d52dbdb78 100644 --- a/modules/core/bs_act.cpp +++ b/modules/core/bs_act.cpp @@ -49,8 +49,10 @@ class CommandBSAct : public Command ircdproto->SendAction(ci->bi, ci->name, "%s", message.c_str()); ci->bi->lastmsg = time(NULL); - if (Config->LogBot && !Config->LogChannel.empty() && LogChan && !debug && findchan(Config->LogChannel)) - ircdproto->SendPrivmsg(ci->bi, Config->LogChannel, "ACT %s %s %s", u->nick.c_str(), ci->name.c_str(), message.c_str()); + + // XXX Need to be able to find if someone is overriding this. + Log(LOG_COMMAND, u, this, ci) << message; + return MOD_CONT; } diff --git a/modules/core/bs_assign.cpp b/modules/core/bs_assign.cpp index b1242c857..97b23c0ef 100644 --- a/modules/core/bs_assign.cpp +++ b/modules/core/bs_assign.cpp @@ -59,6 +59,9 @@ class CommandBSAssign : public Command return MOD_CONT; } + bool override = !check_access(u, ci, CA_ASSIGN); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "for " << bi->nick; + bi->Assign(u, ci); notice_lang(Config->s_BotServ, u, BOT_ASSIGN_ASSIGNED, bi->nick.c_str(), ci->name.c_str()); return MOD_CONT; diff --git a/modules/core/bs_badwords.cpp b/modules/core/bs_badwords.cpp index 46b38bf1d..c02ff6570 100644 --- a/modules/core/bs_badwords.cpp +++ b/modules/core/bs_badwords.cpp @@ -53,10 +53,14 @@ class BadwordsDelCallback : public NumberList { User *u; ChannelInfo *ci; + Command *c; unsigned Deleted; + bool override; public: - BadwordsDelCallback(User *_u, ChannelInfo *_ci, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), Deleted(0) + BadwordsDelCallback(User *_u, ChannelInfo *_ci, Command *_c, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), c(_c), Deleted(0), override(false) { + if (!check_access(u, ci, CA_BADWORDS) && u->Account()->HasPriv("botserv/administration")) + this->override = true; } ~BadwordsDelCallback() @@ -74,6 +78,7 @@ class BadwordsDelCallback : public NumberList if (Number > ci->GetBadWordCount()) return; + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "DEL " << ci->GetBadWord(Number -1 )->word; ++Deleted; ci->EraseBadWord(Number - 1); } @@ -84,6 +89,9 @@ class CommandBSBadwords : public Command private: CommandReturn DoList(User *u, ChannelInfo *ci, const Anope::string &word) { + bool override = !check_access(u, ci, CA_BADWORDS); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "LIST"; + if (!ci->GetBadWordCount()) notice_lang(Config->s_BotServ, u, BOT_BADWORDS_LIST_EMPTY, ci->name.c_str()); else if (!word.empty() && word.find_first_not_of("1234567890,-") == Anope::string::npos) @@ -156,6 +164,8 @@ class CommandBSBadwords : public Command } } + bool override = !check_access(u, ci, CA_BADWORDS); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << realword; ci->AddBadWord(realword, type); notice_lang(Config->s_BotServ, u, BOT_BADWORDS_ADDED, realword.c_str(), ci->name.c_str()); @@ -168,7 +178,7 @@ class CommandBSBadwords : public Command /* Special case: is it a number/list? Only do search if it isn't. */ if (!word.empty() && isdigit(word[0]) && word.find_first_not_of("1234567890,-") == Anope::string::npos) { - BadwordsDelCallback list(u, ci, word); + BadwordsDelCallback list(u, ci, this, word); list.Process(); } else @@ -190,6 +200,8 @@ class CommandBSBadwords : public Command return MOD_CONT; } + bool override = !check_access(u, ci, CA_BADWORDS); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << badword->word; ci->EraseBadWord(i); notice_lang(Config->s_BotServ, u, BOT_BADWORDS_DELETED, badword->word.c_str(), ci->name.c_str()); @@ -200,6 +212,9 @@ class CommandBSBadwords : public Command CommandReturn DoClear(User *u, ChannelInfo *ci) { + bool override = !check_access(u, ci, CA_BADWORDS); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR"; + ci->ClearBadWords(); notice_lang(Config->s_BotServ, u, BOT_BADWORDS_CLEAR); return MOD_CONT; diff --git a/modules/core/bs_bot.cpp b/modules/core/bs_bot.cpp index f001c81a4..5c96ac70c 100644 --- a/modules/core/bs_bot.cpp +++ b/modules/core/bs_bot.cpp @@ -95,10 +95,13 @@ class CommandBSBot : public Command if (!(bi = new BotInfo(nick, user, host, real))) { + // XXX this cant happen? notice_lang(Config->s_BotServ, u, BOT_BOT_CREATION_FAILED); return MOD_CONT; } + Log(LOG_ADMIN, u, this) << "ADD " << bi->GetMask() << " " << bi->realname; + notice_lang(Config->s_BotServ, u, BOT_BOT_ADDED, bi->nick.c_str(), bi->GetIdent().c_str(), bi->host.c_str(), bi->realname.c_str()); FOREACH_MOD(I_OnBotCreate, OnBotCreate(bi)); @@ -260,6 +263,7 @@ class CommandBSBot : public Command } notice_lang(Config->s_BotServ, u, BOT_BOT_CHANGED, oldnick.c_str(), bi->nick.c_str(), bi->GetIdent().c_str(), bi->host.c_str(), bi->realname.c_str()); + Log(LOG_ADMIN, u, this) << "CHANGE " << oldnick << " to " << bi->GetMask() << " " << bi->realname; FOREACH_MOD(I_OnBotChange, OnBotChange(bi)); return MOD_CONT; @@ -294,6 +298,8 @@ class CommandBSBot : public Command XLine x(bi->nick); ircdproto->SendSQLineDel(&x); + Log(LOG_ADMIN, u, this) << "DEL " << bi->nick; + delete bi; notice_lang(Config->s_BotServ, u, BOT_BOT_DELETED, nick.c_str()); return MOD_CONT; diff --git a/modules/core/bs_kick.cpp b/modules/core/bs_kick.cpp index 849efb7d0..2ed3c8639 100644 --- a/modules/core/bs_kick.cpp +++ b/modules/core/bs_kick.cpp @@ -42,6 +42,9 @@ class CommandBSKick : public Command notice_help(Config->s_BotServ, u, BOT_NOT_ASSIGNED); else { + bool override = !check_access(u, ci, CA_SET); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << option << " " << value; + if (option.equals_ci("BADWORDS")) { if (value.equals_ci("ON")) @@ -54,7 +57,7 @@ class CommandBSKick : public Command if (!error.empty() || ci->ttb[TTB_BADWORDS] < 0) { /* leaving the debug behind since we might want to know what these are */ - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BADWORDS]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BADWORDS]; /* reset the value back to 0 - TSL */ ci->ttb[TTB_BADWORDS] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); @@ -85,7 +88,7 @@ class CommandBSKick : public Command ci->ttb[TTB_BOLDS] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_BOLDS] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BOLDS]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_BOLDS]; ci->ttb[TTB_BOLDS] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -118,7 +121,7 @@ class CommandBSKick : public Command ci->ttb[TTB_CAPS] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_CAPS] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_CAPS]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_CAPS]; ci->ttb[TTB_CAPS] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -163,7 +166,7 @@ class CommandBSKick : public Command ci->ttb[TTB_COLORS] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_COLORS] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_COLORS]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_COLORS]; ci->ttb[TTB_COLORS] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -196,7 +199,7 @@ class CommandBSKick : public Command ci->ttb[TTB_FLOOD] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_FLOOD] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_FLOOD]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_FLOOD]; ci->ttb[TTB_FLOOD] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -243,7 +246,7 @@ class CommandBSKick : public Command ci->ttb[TTB_REPEAT] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_REPEAT] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REPEAT]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REPEAT]; ci->ttb[TTB_REPEAT] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -281,7 +284,7 @@ class CommandBSKick : public Command ci->ttb[TTB_REVERSES] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_REVERSES] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REVERSES]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_REVERSES]; ci->ttb[TTB_REVERSES] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -311,7 +314,7 @@ class CommandBSKick : public Command ci->ttb[TTB_UNDERLINES] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_UNDERLINES] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_UNDERLINES]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_UNDERLINES]; ci->ttb[TTB_UNDERLINES] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; @@ -341,7 +344,7 @@ class CommandBSKick : public Command ci->ttb[TTB_ITALICS] = convertTo(ttb, error, false); if (!error.empty() || ci->ttb[TTB_ITALICS] < 0) { - Alog(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_ITALICS]; + Log(LOG_DEBUG) << "remainder of ttb " << error << " ttb " << ci->ttb[TTB_ITALICS]; ci->ttb[TTB_ITALICS] = 0; notice_lang(Config->s_BotServ, u, BOT_KICK_BAD_TTB, ttb.c_str()); return MOD_CONT; diff --git a/modules/core/bs_say.cpp b/modules/core/bs_say.cpp index 1b799c415..916cf8fca 100644 --- a/modules/core/bs_say.cpp +++ b/modules/core/bs_say.cpp @@ -55,8 +55,10 @@ class CommandBSSay : public Command ircdproto->SendPrivmsg(ci->bi, ci->name, "%s", text.c_str()); ci->bi->lastmsg = time(NULL); - if (Config->LogBot && !Config->LogChannel.empty() && LogChan && !debug && findchan(Config->LogChannel)) - ircdproto->SendPrivmsg(ci->bi, Config->LogChannel, "SAY %s %s %s", u->nick.c_str(), ci->name.c_str(), text.c_str()); + + // XXX need a way to find if someone is overriding this + Log(LOG_COMMAND, u, this, ci) << text; + return MOD_CONT; } diff --git a/modules/core/bs_set.cpp b/modules/core/bs_set.cpp index 87a15cf66..0ee46a0d5 100644 --- a/modules/core/bs_set.cpp +++ b/modules/core/bs_set.cpp @@ -64,6 +64,9 @@ class CommandBSSet : public Command notice_lang(Config->s_BotServ, u, ACCESS_DENIED); else { + bool override = !check_access(u, ci, CA_SET); + Log(override ? LOG_ADMIN : LOG_COMMAND, u, this, ci) << option << value; + if (option.equals_ci("DONTKICKOPS")) { if (value.equals_ci("ON")) diff --git a/modules/core/bs_unassign.cpp b/modules/core/bs_unassign.cpp index bde37f78e..6b6b28fe9 100644 --- a/modules/core/bs_unassign.cpp +++ b/modules/core/bs_unassign.cpp @@ -36,6 +36,9 @@ class CommandBSUnassign : public Command notice_help(Config->s_BotServ, u, BOT_UNASSIGN_PERSISTANT_CHAN); else { + bool override = !check_access(u, ci, CA_ASSIGN); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "for " << ci->bi->nick; + ci->bi->UnAssign(u, ci); notice_lang(Config->s_BotServ, u, BOT_UNASSIGN_UNASSIGNED, ci->name.c_str()); } diff --git a/modules/core/cs_access.cpp b/modules/core/cs_access.cpp index 5fea57486..c6714cf05 100644 --- a/modules/core/cs_access.cpp +++ b/modules/core/cs_access.cpp @@ -108,12 +108,16 @@ class AccessDelCallback : public NumberList { User *u; ChannelInfo *ci; + Command *c; unsigned Deleted; Anope::string Nicks; bool Denied; + bool override; public: - AccessDelCallback(User *_u, ChannelInfo *_ci, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), Deleted(0), Denied(false) + AccessDelCallback(User *_u, ChannelInfo *_ci, Command *_c, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), c(_c), Deleted(0), Denied(false) { + if (!check_access(u, ci, CA_ACCESS_CHANGE) && u->Account()->HasPriv("chanserv/access/modify")) + this->override = true; } ~AccessDelCallback() @@ -124,7 +128,7 @@ class AccessDelCallback : public NumberList notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); else { - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of user" << (Deleted == 1 ? " " : "s ") << Nicks << " on " << ci->name; + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "for user" << (Deleted == 1 ? " " : "s ") << Nicks; if (Deleted == 1) notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED_ONE, ci->name.c_str()); @@ -183,6 +187,8 @@ class CommandCSAccess : public Command return MOD_CONT; } + bool override = !check_access(u, ci, CA_ACCESS_CHANGE) || level >= ulev; + NickAlias *na = findnick(nick); if (!na) { @@ -214,7 +220,7 @@ class CommandCSAccess : public Command FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nc, level)); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") set access level " << access->level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name; + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << "(group: " << nc->display << ") as level " << ulev; notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LEVEL_CHANGED, nc->display.c_str(), ci->name.c_str(), level); return MOD_CONT; } @@ -229,7 +235,7 @@ class CommandCSAccess : public Command FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, nc, level)); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") set access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name; + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << "(group: " << nc->display << ") as level " << ulev; notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_ADDED, nc->display.c_str(), ci->name.c_str(), level); return MOD_CONT; @@ -243,7 +249,7 @@ class CommandCSAccess : public Command notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); else if (isdigit(nick[0]) && nick.find_first_not_of("1234567890,-") == Anope::string::npos) { - AccessDelCallback list(u, ci, nick); + AccessDelCallback list(u, ci, this, nick); list.Process(); } else @@ -274,7 +280,9 @@ class CommandCSAccess : public Command else { notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED, access->nc->display.c_str(), ci->name.c_str()); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of " << na->nick << " (group " << access->nc->display << ") on " << ci->name; + bool override = !check_access(u, ci, CA_ACCESS_CHANGE); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << na->nick << "(group: " << access->nc->display << ") from level " << access->level; + FOREACH_MOD(I_OnAccessDel, OnAccessDel(ci, u, na->nc)); ci->EraseAccess(i); @@ -375,7 +383,9 @@ class CommandCSAccess : public Command FOREACH_MOD(I_OnAccessClear, OnAccessClear(ci, u)); notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_CLEAR, ci->name.c_str()); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << " cleared access list on " << ci->name; + + bool override = !IsFounder(u, ci); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR"; } return MOD_CONT; @@ -471,7 +481,10 @@ class CommandCSLevels : public Command { ci->levels[levelinfo[i].what] = level; FOREACH_MOD(I_OnLevelChange, OnLevelChange(u, ci, i, level)); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " set level " << levelinfo[i].name << " on channel " << ci->name << " to " << level; + + bool override = !check_access(u, ci, CA_FOUNDER); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "SET " << levelinfo[i].name << " to " << level; + if (level == ACCESS_FOUNDER) notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_CHANGED_FOUNDER, levelinfo[i].name.c_str(), ci->name.c_str()); else @@ -498,7 +511,9 @@ class CommandCSLevels : public Command ci->levels[levelinfo[i].what] = ACCESS_INVALID; FOREACH_MOD(I_OnLevelChange, OnLevelChange(u, ci, i, levelinfo[i].what)); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " disabled level " << levelinfo[i].name << " on channel " << ci->name; + bool override = !check_access(u, ci, CA_FOUNDER); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DISABLE " << levelinfo[i].name; + notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_DISABLED, levelinfo[i].name.c_str(), ci->name.c_str()); return MOD_CONT; } @@ -547,7 +562,10 @@ class CommandCSLevels : public Command { reset_levels(ci); FOREACH_MOD(I_OnLevelChange, OnLevelChange(u, ci, -1, 0)); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " reset levels definitions on channel " << ci->name; + + bool override = !check_access(u, ci, CA_FOUNDER); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "RESET"; + notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_RESET, ci->name.c_str()); return MOD_CONT; } diff --git a/modules/core/cs_akick.cpp b/modules/core/cs_akick.cpp index c3d3c77b5..5df1a9038 100644 --- a/modules/core/cs_akick.cpp +++ b/modules/core/cs_akick.cpp @@ -138,14 +138,18 @@ class AkickDelCallback : public NumberList { User *u; ChannelInfo *ci; + Command *c; unsigned Deleted; public: - AkickDelCallback(User *_u, ChannelInfo *_ci, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), Deleted(0) + AkickDelCallback(User *_u, ChannelInfo *_ci, Command *_c, const Anope::string &list) : NumberList(list, true), u(_u), ci(_ci), c(_c), Deleted(0) { } ~AkickDelCallback() { + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "DEL on " << Deleted << " users"; + if (!Deleted) notice_lang(Config->s_ChanServ, u, CHAN_AKICK_NO_MATCH, ci->name.c_str()); else if (Deleted == 1) @@ -266,6 +270,9 @@ class CommandCSAKick : public Command else akick = ci->AddAkick(u->nick, mask, reason); + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << mask << ": " << reason; + FOREACH_MOD(I_OnAkickAdd, OnAkickAdd(u, ci, akick)); notice_lang(Config->s_ChanServ, u, CHAN_AKICK_ADDED, mask.c_str(), ci->name.c_str()); @@ -306,6 +313,9 @@ class CommandCSAKick : public Command return; } + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "STICK " << akick->mask; + akick->SetFlag(AK_STUCK); notice_lang(Config->s_ChanServ, u, CHAN_AKICK_STUCK, akick->mask.c_str(), ci->name.c_str()); @@ -346,6 +356,9 @@ class CommandCSAKick : public Command return; } + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "UNSTICK " << akick->mask; + akick->UnsetFlag(AK_STUCK); notice_lang(Config->s_ChanServ, u, CHAN_AKICK_UNSTUCK, akick->mask.c_str(), ci->name.c_str()); } @@ -365,7 +378,7 @@ class CommandCSAKick : public Command /* Special case: is it a number/list? Only do search if it isn't. */ if (isdigit(mask[0]) && mask.find_first_not_of("1234567890,-") == Anope::string::npos) { - AkickDelCallback list(u, ci, mask); + AkickDelCallback list(u, ci, this, mask); list.Process(); } else @@ -387,6 +400,9 @@ class CommandCSAKick : public Command return; } + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << mask; + ci->EraseAkick(i); notice_lang(Config->s_ChanServ, u, CHAN_AKICK_DELETED, mask.c_str(), ci->name.c_str()); @@ -397,6 +413,9 @@ class CommandCSAKick : public Command { Anope::string mask = params.size() > 2 ? params[2] : ""; + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "LIST"; + if (!ci->GetAkickCount()) { notice_lang(Config->s_ChanServ, u, CHAN_AKICK_LIST_EMPTY, ci->name.c_str()); @@ -442,6 +461,9 @@ class CommandCSAKick : public Command { Anope::string mask = params.size() > 2 ? params[2] : ""; + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "VIEW"; + if (!ci->GetAkickCount()) { notice_lang(Config->s_ChanServ, u, CHAN_AKICK_LIST_EMPTY, ci->name.c_str()); @@ -502,11 +524,17 @@ class CommandCSAKick : public Command ++count; } + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ENFORCE, affects " << count << " users"; + notice_lang(Config->s_ChanServ, u, CHAN_AKICK_ENFORCE_DONE, ci->name.c_str(), count); } void DoClear(User *u, ChannelInfo *ci) { + bool override = !check_access(u, ci, CA_AKICK); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR"; + ci->ClearAkick(); notice_lang(Config->s_ChanServ, u, CHAN_AKICK_CLEAR, ci->name.c_str()); } diff --git a/modules/core/cs_ban.cpp b/modules/core/cs_ban.cpp index 500db20f5..fcc11d393 100644 --- a/modules/core/cs_ban.cpp +++ b/modules/core/cs_ban.cpp @@ -56,8 +56,11 @@ class CommandCSBan : public Command else { Anope::string mask; - get_idealban(ci, u2, mask); + + // XXX need a way to detect if someone is overriding + Log(LOG_COMMAND, u, this, ci) << "for " << mask; + c->SetMode(NULL, CMODE_BAN, mask); /* We still allow host banning while not allowing to kick */ diff --git a/modules/core/cs_clear.cpp b/modules/core/cs_clear.cpp index 42a9bd53a..1fa61fc56 100644 --- a/modules/core/cs_clear.cpp +++ b/modules/core/cs_clear.cpp @@ -34,9 +34,13 @@ class CommandCSClear : public Command ChannelMode *halfop = ModeManager::FindChannelModeByName(CMODE_HALFOP); ChannelMode *voice = ModeManager::FindChannelModeByName(CMODE_VOICE); + if (c) + // XXX + Log(LOG_COMMAND, u, this, ci) << what; + if (!c) notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str()); - else if (!u || !check_access(u, ci, CA_CLEAR)) + else if (!check_access(u, ci, CA_CLEAR)) notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); else if (what.equals_ci("bans")) { diff --git a/modules/core/cs_drop.cpp b/modules/core/cs_drop.cpp index 608fe3664..4ac066927 100644 --- a/modules/core/cs_drop.cpp +++ b/modules/core/cs_drop.cpp @@ -53,8 +53,6 @@ class CommandCSDrop : public Command return MOD_CONT; } - int level = get_access(u, ci); - if (ci->c && ModeManager::FindChannelModeByName(CMODE_REGISTERED)) ci->c->RemoveMode(NULL, CMODE_REGISTERED, "", false); @@ -64,16 +62,13 @@ class CommandCSDrop : public Command ircdproto->SendSQLineDel(&x); } - Alog() << Config->s_ChanServ << ": Channel " << ci->name << " dropped by " << u->GetMask() << " (founder: " << (ci->founder ? ci->founder->display : "(none)") << ")"; + bool override = (ci->HasFlag(CI_SECUREFOUNDER) ? !IsFounder(u, ci) : !check_access(u, ci, CA_FOUNDER)); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "founder: " << (ci->founder ? ci->founder->display : "none"); + if (override) + ircdproto->SendGlobops(ChanServ, "\2%s\2 used DROP on channel \2%s\2", u->nick.c_str(), ci->name.c_str()); delete ci; - /* We must make sure that the Services admin has not normally the right to - * drop the channel before issuing the wallops. - */ - if (Config->WallDrop && (level < ACCESS_FOUNDER || (!IsFounder(u, ci) && ci->HasFlag(CI_SECUREFOUNDER)))) - ircdproto->SendGlobops(ChanServ, "\2%s\2 used DROP on channel \2%s\2", u->nick.c_str(), chan.c_str()); - notice_lang(Config->s_ChanServ, u, CHAN_DROPPED, chan.c_str()); FOREACH_MOD(I_OnChanDrop, OnChanDrop(chan)); diff --git a/modules/core/cs_forbid.cpp b/modules/core/cs_forbid.cpp index 09fddd091..706d5e4a8 100644 --- a/modules/core/cs_forbid.cpp +++ b/modules/core/cs_forbid.cpp @@ -53,7 +53,8 @@ class CommandCSForbid : public Command ci = new ChannelInfo(chan); if (!ci) { - Alog() << Config->s_ChanServ << ": Valid FORBID for " << ci->name << " by " << u->nick << " failed"; + // this cant happen? + //Alog() << Config->s_ChanServ << ": Valid FORBID for " << ci->name << " by " << u->nick << " failed"; notice_lang(Config->s_ChanServ, u, CHAN_FORBID_FAILED, chan.c_str()); return MOD_CONT; } @@ -80,16 +81,16 @@ class CommandCSForbid : public Command } } - if (Config->WallForbid) - ircdproto->SendGlobops(ChanServ, "\2%s\2 used FORBID on channel \2%s\2", u->nick.c_str(), ci->name.c_str()); - if (ircd->chansqline) { XLine x(chan, "Forbidden"); ircdproto->SendSQLine(&x); } - Alog() << Config->s_ChanServ << ": " << u->nick << " set FORBID for channel " << ci->name; + if (Config->WallForbid) + ircdproto->SendGlobops(ChanServ, "\2%s\2 used FORBID on channel \2%s\2", u->nick.c_str(), ci->name.c_str()); + Log(LOG_ADMIN, u, this, ci) << (!ci->forbidreason.empty() ? ci->forbidreason : "No reason"); + notice_lang(Config->s_ChanServ, u, CHAN_FORBID_SUCCEEDED, chan.c_str()); FOREACH_MOD(I_OnChanForbidden, OnChanForbidden(ci)); diff --git a/modules/core/cs_getkey.cpp b/modules/core/cs_getkey.cpp index c39000ea3..a3e80b424 100644 --- a/modules/core/cs_getkey.cpp +++ b/modules/core/cs_getkey.cpp @@ -40,6 +40,9 @@ class CommandCSGetKey : public Command return MOD_CONT; } + bool override = !check_access(u, ci, CA_GETKEY); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci); + notice_lang(Config->s_ChanServ, u, CHAN_GETKEY_KEY, chan.c_str(), key.c_str()); return MOD_CONT; } diff --git a/modules/core/cs_invite.cpp b/modules/core/cs_invite.cpp index 926375b3e..c841627a9 100644 --- a/modules/core/cs_invite.cpp +++ b/modules/core/cs_invite.cpp @@ -35,7 +35,7 @@ class CommandCSInvite : public Command ci = c->ci; - if (!u || !check_access(u, ci, CA_INVITE)) + if (!check_access(u, ci, CA_INVITE)) { notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); return MOD_CONT; @@ -52,6 +52,9 @@ class CommandCSInvite : public Command } } + // XXX need a check for override... + Log(LOG_COMMAND, u, this, ci) << "for " << u2->nick; + if (c->FindUser(u2)) notice_lang(Config->s_ChanServ, u, CHAN_INVITE_ALREADY_IN, c->name.c_str()); else diff --git a/modules/core/cs_kick.cpp b/modules/core/cs_kick.cpp index 06f0004b8..4deb19b13 100644 --- a/modules/core/cs_kick.cpp +++ b/modules/core/cs_kick.cpp @@ -51,6 +51,9 @@ class CommandCSKick : public Command notice_lang(Config->s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick.c_str(), c->name.c_str()); else { + // XXX + Log(LOG_COMMAND, u, this, ci) << "for " << u2->nick; + if (ci->HasFlag(CI_SIGNKICK) || (ci->HasFlag(CI_SIGNKICK_LEVEL) && !check_access(u, ci, CA_SIGNKICK))) ci->c->Kick(whosends(ci), u2, "%s (%s)", reason.c_str(), u->nick.c_str()); else diff --git a/modules/core/cs_modes.cpp b/modules/core/cs_modes.cpp index 274c7e5af..54bc09d11 100644 --- a/modules/core/cs_modes.cpp +++ b/modules/core/cs_modes.cpp @@ -15,6 +15,7 @@ /** do_util: not a command, but does the job of others * @param u The user doing the command + * @param com The command calling this function * @param cm A channel mode class * @param chan The channel its being set on * @param nick The nick the modes being set on @@ -24,22 +25,14 @@ * @param name The name, eg "OP" or "HALFOP" * @param notice Flag required on a channel to send a notice */ -static CommandReturn do_util(User *u, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, int level, int levelself, const Anope::string &name, ChannelInfoFlag notice) +static CommandReturn do_util(User *u, Command *com, ChannelMode *cm, const Anope::string &chan, const Anope::string &nick, bool set, int level, int levelself, const Anope::string &name, ChannelInfoFlag notice) { Channel *c = findchan(chan); - ChannelInfo *ci; + ChannelInfo *ci = c ? c->ci : NULL; User *u2; - Anope::string realnick = nick; - int is_same; - - if (realnick.empty()) - realnick = u->nick; - - is_same = u->nick.equals_cs(realnick) ? 1 : u->nick.equals_ci(realnick); - - if (c) - ci = c->ci; + Anope::string realnick = (!nick.empty() ? nick : u->nick); + bool is_same = u->nick.equals_ci(realnick); if (!c) notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str()); @@ -60,6 +53,7 @@ static CommandReturn do_util(User *u, ChannelMode *cm, const Anope::string &chan else c->RemoveMode(NULL, cm, u2->nick); + Log(LOG_COMMAND, u, com, ci) << "for " << u2->nick; if (notice && ci->HasFlag(notice)) ircdproto->SendMessage(whosends(ci), c->name, "%s command used for %s by %s", name.c_str(), u2->nick.c_str(), u->nick.c_str()); } @@ -78,7 +72,7 @@ class CommandCSOp : public Command { ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP); - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_OPDEOP, CA_OPDEOPME, "OP", CI_OPNOTICE); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_OPDEOP, CA_OPDEOPME, "OP", CI_OPNOTICE); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -109,7 +103,7 @@ class CommandCSDeOp : public Command { ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_OP); - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_OPDEOP, CA_OPDEOPME, "DEOP", CI_OPNOTICE); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_OPDEOP, CA_OPDEOPME, "DEOP", CI_OPNOTICE); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -140,7 +134,7 @@ class CommandCSVoice : public Command { ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE); - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_VOICE, CA_VOICEME, "VOICE", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_VOICE, CA_VOICEME, "VOICE", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -171,7 +165,7 @@ class CommandCSDeVoice : public Command { ChannelMode *cm = ModeManager::FindChannelModeByName(CMODE_VOICE); - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_VOICE, CA_VOICEME, "DEVOICE", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_VOICE, CA_VOICEME, "DEVOICE", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -207,7 +201,7 @@ class CommandCSHalfOp : public Command return MOD_CONT; } - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_HALFOP, CA_HALFOPME, "HALFOP", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_HALFOP, CA_HALFOPME, "HALFOP", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -241,7 +235,7 @@ class CommandCSDeHalfOp : public Command if (!cm) return MOD_CONT; - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_HALFOP, CA_HALFOPME, "DEHALFOP", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_HALFOP, CA_HALFOPME, "DEHALFOP", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -275,7 +269,7 @@ class CommandCSProtect : public Command if (!cm) return MOD_CONT; - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_PROTECT, CA_PROTECTME, "PROTECT", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_PROTECT, CA_PROTECTME, "PROTECT", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -309,7 +303,7 @@ class CommandCSDeProtect : public Command if (!cm) return MOD_CONT; - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_PROTECT, CA_PROTECTME, "DEPROTECT", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_PROTECT, CA_PROTECTME, "DEPROTECT", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -343,7 +337,7 @@ class CommandCSOwner : public Command if (!cm) return MOD_CONT; - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", true, CA_OWNER, CA_OWNERME, "OWNER", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", true, CA_OWNER, CA_OWNERME, "OWNER", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) @@ -377,7 +371,7 @@ class CommandCSDeOwner : public Command if (!cm) return MOD_CONT; - return do_util(u, cm, !params.empty() ? params[0] : "", params.size() > 1 ? params[1] : "", false, CA_OWNER, CA_OWNERME, "DEOWNER", CI_BEGIN); + return do_util(u, this, cm, params[0], params.size() > 1 ? params[1] : "", false, CA_OWNER, CA_OWNERME, "DEOWNER", CI_BEGIN); } bool OnHelp(User *u, const Anope::string &subcommand) diff --git a/modules/core/cs_register.cpp b/modules/core/cs_register.cpp index 70a436fa5..545f3f5a1 100644 --- a/modules/core/cs_register.cpp +++ b/modules/core/cs_register.cpp @@ -49,16 +49,12 @@ class CommandCSRegister : public Command notice_lang(Config->s_ChanServ, u, u->Account()->channelcount > Config->CSMaxReg ? CHAN_EXCEEDED_CHANNEL_LIMIT : CHAN_REACHED_CHANNEL_LIMIT, Config->CSMaxReg); else if (!(ci = new ChannelInfo(chan))) { - Alog() << Config->s_ChanServ << ": makechan() failed for REGISTER " << chan; + // not possible ? + //Alog() << Config->s_ChanServ << ": makechan() failed for REGISTER " << chan; notice_lang(Config->s_ChanServ, u, CHAN_REGISTRATION_FAILED); } else { - if (c) - { - c->ci = ci; - ci->c = c; - } ci->founder = u->Account(); ci->desc = desc; @@ -73,7 +69,7 @@ class CommandCSRegister : public Command ci->bi = NULL; ++ci->founder->channelcount; - Alog() << Config->s_ChanServ << ": Channel '" << chan << "' registered by " << u->GetMask(); + Log(LOG_COMMAND, u, this, ci); notice_lang(Config->s_ChanServ, u, CHAN_REGISTERED, chan.c_str(), u->nick.c_str()); /* Implement new mode lock */ diff --git a/modules/core/cs_saset.cpp b/modules/core/cs_saset.cpp index 61ae2f299..923848e7a 100644 --- a/modules/core/cs_saset.cpp +++ b/modules/core/cs_saset.cpp @@ -40,9 +40,11 @@ class CommandCSSASet : public Command if (c) { - Anope::string cmdparams = cs_findchan(params[0])->name; + ChannelInfo *ci = cs_findchan(params[0]); + Anope::string cmdparams = ci->name; for (std::vector::const_iterator it = params.begin() + 2, it_end = params.end(); it != it_end; ++it) cmdparams += " " + *it; + Log(LOG_ADMIN, u, this, ci) << params[1] << " " << cmdparams; mod_run_cmd(ChanServ, u, c, params[1], cmdparams); } else diff --git a/modules/core/cs_set.cpp b/modules/core/cs_set.cpp index dd2063ffe..ede39c3c7 100644 --- a/modules/core/cs_set.cpp +++ b/modules/core/cs_set.cpp @@ -45,7 +45,8 @@ class CommandCSSet : public Command if (c) { - Anope::string cmdparams = cs_findchan(params[0])->name; + ChannelInfo *ci = cs_findchan(params[0]); + Anope::string cmdparams = ci->name; for (std::vector::const_iterator it = params.begin() + 2, it_end = params.end(); it != it_end; ++it) cmdparams += " " + *it; mod_run_cmd(ChanServ, u, c, params[1], cmdparams); diff --git a/modules/core/cs_set_founder.cpp b/modules/core/cs_set_founder.cpp index b6af6220a..ee955d590 100644 --- a/modules/core/cs_set_founder.cpp +++ b/modules/core/cs_set_founder.cpp @@ -53,7 +53,7 @@ class CommandCSSetFounder : public Command return MOD_CONT; } - Alog() << Config->s_ChanServ << ": Changing founder of " << ci->name << " from " << ci->founder->display << " to " << nc->display << " by " << u->GetMask(); + Log(!this->permission.empty() ? LOG_ADMIN : LOG_COMMAND, u, this, ci) << "to change the founder to " << nc->display; /* Founder and successor must not be the same group */ if (nc == ci->successor) diff --git a/modules/core/cs_set_successor.cpp b/modules/core/cs_set_successor.cpp index 7478651c4..b4e0972c6 100644 --- a/modules/core/cs_set_successor.cpp +++ b/modules/core/cs_set_successor.cpp @@ -58,7 +58,7 @@ class CommandCSSetSuccessor : public Command else nc = NULL; - Alog() << Config->s_ChanServ << ": Changing successor of " << ci->name << " from " << (ci->successor ? ci->successor->display : "none") << " to " << (nc ? nc->display : "none") << " by " << u->GetMask(); + Log(!this->permission.empty() ? LOG_ADMIN : LOG_COMMAND, u, this, ci) << "to change the successor from " << (ci->successor ? ci->successor->display : "none") << " to " << (nc ? nc->display : "none"); ci->successor = nc; diff --git a/modules/core/cs_set_xop.cpp b/modules/core/cs_set_xop.cpp index 18e4df76d..e08b014a1 100644 --- a/modules/core/cs_set_xop.cpp +++ b/modules/core/cs_set_xop.cpp @@ -64,14 +64,14 @@ class CommandCSSetXOP : public Command ci->SetFlag(CI_XOP); } - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " enabled XOP for " << ci->name; + Log(LOG_COMMAND, u, this, ci) << "to enable XOP"; notice_lang(Config->s_ChanServ, u, CHAN_SET_XOP_ON, ci->name.c_str()); } else if (params[1].equals_ci("OFF")) { ci->UnsetFlag(CI_XOP); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " disabled XOP for " << ci->name; + Log(LOG_COMMAND, u, this, ci) << "to disable XOP"; notice_lang(Config->s_ChanServ, u, CHAN_SET_XOP_OFF, ci->name.c_str()); } else diff --git a/modules/core/cs_suspend.cpp b/modules/core/cs_suspend.cpp index 7af933a69..055b8b0e7 100644 --- a/modules/core/cs_suspend.cpp +++ b/modules/core/cs_suspend.cpp @@ -74,14 +74,15 @@ class CommandCSSuspend : public Command if (Config->WallForbid) ircdproto->SendGlobops(ChanServ, "\2%s\2 used SUSPEND on channel \2%s\2", u->nick.c_str(), ci->name.c_str()); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " set SUSPEND for channel " << ci->name; + Log(LOG_ADMIN, u, this, ci) << (!reason.empty() ? reason : "No reason"); notice_lang(Config->s_ChanServ, u, CHAN_SUSPEND_SUCCEEDED, chan.c_str()); FOREACH_MOD(I_OnChanSuspend, OnChanSuspend(ci)); } else { - Alog() << Config->s_ChanServ << ": Valid SUSPEND for " << ci->name << " by " << u->GetMask() << " failed"; + // cant happen? + //Alog() << Config->s_ChanServ << ": Valid SUSPEND for " << ci->name << " by " << u->GetMask() << " failed"; notice_lang(Config->s_ChanServ, u, CHAN_SUSPEND_FAILED, chan.c_str()); } return MOD_CONT; @@ -134,6 +135,8 @@ class CommandCSUnSuspend : public Command if (ci) { + Log(LOG_ADMIN, u, this, ci) << " was suspended for: " << (!ci->forbidreason.empty() ? ci->forbidreason : "No reason"); + ci->UnsetFlag(CI_SUSPENDED); ci->forbidreason.clear(); ci->forbidby.clear(); @@ -141,14 +144,14 @@ class CommandCSUnSuspend : public Command if (Config->WallForbid) ircdproto->SendGlobops(ChanServ, "\2%s\2 used UNSUSPEND on channel \2%s\2", u->nick.c_str(), ci->name.c_str()); - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " set UNSUSPEND for channel " << ci->name; notice_lang(Config->s_ChanServ, u, CHAN_UNSUSPEND_SUCCEEDED, chan.c_str()); FOREACH_MOD(I_OnChanUnsuspend, OnChanUnsuspend(ci)); } else { - Alog() << Config->s_ChanServ << ": Valid UNSUSPEND for " << chan << " by " << u->nick << " failed"; + // cant happen ? + //Alog() << Config->s_ChanServ << ": Valid UNSUSPEND for " << chan << " by " << u->nick << " failed"; notice_lang(Config->s_ChanServ, u, CHAN_UNSUSPEND_FAILED, chan.c_str()); } return MOD_CONT; diff --git a/modules/core/cs_topic.cpp b/modules/core/cs_topic.cpp index 5a421e272..ebd09b385 100644 --- a/modules/core/cs_topic.cpp +++ b/modules/core/cs_topic.cpp @@ -25,11 +25,8 @@ class CommandCSTopic : public Command Anope::string chan = params[0]; Anope::string topic = params.size() > 1 ? params[1] : ""; - Channel *c; - ChannelInfo *ci; - - if ((c = findchan(chan))) - ci = c->ci; + ChannelInfo *ci = cs_findchan(params[0]); + Channel *c = ci->c; if (!c) notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str()); @@ -48,9 +45,10 @@ class CommandCSTopic : public Command else c->topic_time = ci->last_topic_time; - if (!check_access(u, ci, CA_TOPIC)) - Alog() << Config->s_NickServ << ": " << u->GetMask() << " changed topic of " << c->name << " as services admin."; - if (ircd->join2set && whosends(ci) == ChanServ) + bool override = !check_access(u, ci, CA_TOPIC); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "to change the topic to " << (!topic.empty() ? topic : "No topic"); + + if (ircd->join2set && whosends(ci) == ChanServ) // XXX what if the service bot is chanserv? { ChanServ->Join(c); ircdproto->SendMode(NULL, c, "+o %s", Config->s_ChanServ.c_str()); // XXX diff --git a/modules/core/cs_xop.cpp b/modules/core/cs_xop.cpp index 973febf0a..4ebec6926 100644 --- a/modules/core/cs_xop.cpp +++ b/modules/core/cs_xop.cpp @@ -150,11 +150,13 @@ class XOPDelCallback : public NumberList { User *u; ChannelInfo *ci; + Command *c; int *messages; unsigned Deleted; Anope::string Nicks; + bool override; public: - XOPDelCallback(User *_u, ChannelInfo *_ci, int *_messages, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), messages(_messages), Deleted(0) + XOPDelCallback(User *_u, Command *_c, ChannelInfo *_ci, int *_messages, bool _override, const Anope::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), c(_c), messages(_messages), Deleted(0), override(_override) { } @@ -164,7 +166,7 @@ class XOPDelCallback : public NumberList notice_lang(Config->s_ChanServ, u, messages[XOP_NO_MATCH], ci->name.c_str()); else { - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of users " << Nicks << " on " << ci->name; + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "deleted access of users " << Nicks; if (Deleted == 1) notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED_ONE], ci->name.c_str()); @@ -263,7 +265,8 @@ class XOPBase : public Command access->creator = u->nick; } - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << ulev << ") " << (change ? "changed" : "set") << " access level " << level << " to " << na->nick << " (group " << nc->display << ") on channel " << ci->name; + bool override = (level >= ulev || ulev < ACCESS_AOP || (access && access->level > ulev)); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << " (group: " << nc->display << ") as level " << level; if (!change) { @@ -313,7 +316,8 @@ class XOPBase : public Command /* Special case: is it a number/list? Only do search if it isn't. */ if (isdigit(nick[0]) && nick.find_first_not_of("1234567890,-") == Anope::string::npos) { - XOPDelCallback list(u, ci, messages, nick); + bool override = level >= ulev || ulev < ACCESS_AOP; + XOPDelCallback list(u, this, ci, messages, override, nick); list.Process(); } else @@ -325,7 +329,6 @@ class XOPBase : public Command return MOD_CONT; } NickCore *nc = na->nc; - unsigned i, end; for (i = 0, end = ci->GetAccessCount(); i < end; ++i) { @@ -345,7 +348,8 @@ class XOPBase : public Command notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); else { - Alog() << Config->s_ChanServ << ": " << u->GetMask() << " (level " << get_access(u, ci) << ") deleted access of user " << access->nc->display << " on " << ci->name; + bool override = ulev <= access->level; + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << access->nc->display; notice_lang(Config->s_ChanServ, u, messages[XOP_DELETED], access->nc->display.c_str(), ci->name.c_str()); @@ -368,6 +372,9 @@ class XOPBase : public Command return MOD_CONT; } + bool override = !get_access(u, ci); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci); + if (!ci->GetAccessCount()) { notice_lang(Config->s_ChanServ, u, messages[XOP_LIST_EMPTY], ci->name.c_str()); @@ -426,6 +433,9 @@ class XOPBase : public Command return MOD_CONT; } + bool override = !check_access(u, ci, CA_FOUNDER); + Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR level " << level; + for (unsigned i = ci->GetAccessCount(); i > 0; --i) { ChanAccess *access = ci->GetAccess(i - 1); diff --git a/modules/core/db_plain.cpp b/modules/core/db_plain.cpp index b05a1f896..6ac61ba11 100644 --- a/modules/core/db_plain.cpp +++ b/modules/core/db_plain.cpp @@ -46,7 +46,7 @@ static void ReadDatabase(Module *m = NULL) if (!db.is_open()) { - Alog() << "Unable to open " << DatabaseFile << " for reading!"; + Log() << "Unable to open " << DatabaseFile << " for reading!"; return; } @@ -132,7 +132,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const DatabaseException &ex) { - Alog() << "[db_plain]: " << ex.GetReason(); + Log() << "[db_plain]: " << ex.GetReason(); } } else if (Type == MD_NA && na) @@ -146,7 +146,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const DatabaseException &ex) { - Alog() << "[db_plain]: " << ex.GetReason(); + Log() << "[db_plain]: " << ex.GetReason(); } } else if (Type == MD_NR && nr) @@ -160,7 +160,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const DatabaseException &ex) { - Alog() << "[db_plain]: " << ex.GetReason(); + Log() << "[db_plain]: " << ex.GetReason(); } } else if (Type == MD_BI && bi) @@ -174,7 +174,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const DatabaseException &ex) { - Alog() << "[db_plain]: " << ex.GetReason(); + Log() << "[db_plain]: " << ex.GetReason(); } } else if (Type == MD_CH && ci) @@ -188,7 +188,7 @@ static void ReadDatabase(Module *m = NULL) } catch (const DatabaseException &ex) { - Alog() << "[db_plain]: " << ex.GetReason(); + Log() << "[db_plain]: " << ex.GetReason(); if (!ci->founder) { delete ci; @@ -362,7 +362,7 @@ static void LoadNickCore(const std::vector ¶ms) nc->pass = params[1]; - Alog(LOG_DEBUG_2) << "[db_plain]: Loaded NickCore " << nc->display; + Log(LOG_DEBUG_2) << "[db_plain]: Loaded NickCore " << nc->display; } static void LoadNickAlias(const std::vector ¶ms) @@ -370,7 +370,7 @@ static void LoadNickAlias(const std::vector ¶ms) NickCore *nc = findcore(params[0]); if (!nc) { - Alog() << "[db_plain]: Unable to find core " << params[0]; + Log() << "[db_plain]: Unable to find core " << params[0]; return; } @@ -380,7 +380,7 @@ static void LoadNickAlias(const std::vector ¶ms) na->last_seen = params[3].is_pos_number_only() ? convertTo(params[3]) : 0; - Alog(LOG_DEBUG_2) << "[db_plain}: Loaded nickalias for " << na->nick; + Log(LOG_DEBUG_2) << "[db_plain}: Loaded nickalias for " << na->nick; } static void LoadNickRequest(const std::vector ¶ms) @@ -391,21 +391,20 @@ static void LoadNickRequest(const std::vector ¶ms) nr->email = params[3]; nr->requested = params[4].is_pos_number_only() ? convertTo(params[4]) : 0; - Alog(LOG_DEBUG_2) << "[db_plain]: Loaded nickrequest for " << nr->nick; + Log(LOG_DEBUG_2) << "[db_plain]: Loaded nickrequest for " << nr->nick; } static void LoadBotInfo(const std::vector ¶ms) { BotInfo *bi = findbot(params[0]); if (!bi) - bi = new BotInfo(params[0]); - bi->SetIdent(params[1]); - bi->host = params[2]; + bi = new BotInfo(params[0], params[1], params[2]); + bi->created = params[3].is_pos_number_only() ? convertTo(params[3]) : 0; bi->chancount = params[4].is_pos_number_only() ? convertTo(params[4]) : 0; bi->realname = params[5]; - Alog(LOG_DEBUG_2) << "[db_plain]: Loaded botinfo for " << bi->nick; + Log(LOG_DEBUG_2) << "[db_plain]: Loaded botinfo for " << bi->nick; } static void LoadChanInfo(const std::vector ¶ms) @@ -421,7 +420,7 @@ static void LoadChanInfo(const std::vector ¶ms) ci->last_used = params[2].is_pos_number_only() ? convertTo(params[2]) : 0; - Alog(LOG_DEBUG_2) << "[db_plain]: loaded channel " << ci->name; + Log(LOG_DEBUG_2) << "[db_plain]: loaded channel " << ci->name; } static void LoadOperInfo(const std::vector ¶ms) @@ -533,11 +532,11 @@ class DBPlain : public Module if (IsFile(newname)) return; - Alog(LOG_DEBUG) << "db_plain: Attemping to rename " << DatabaseFile << " to " << newname; + Log(LOG_DEBUG) << "db_plain: Attemping to rename " << DatabaseFile << " to " << newname; if (rename(DatabaseFile.c_str(), newname.c_str())) { ircdproto->SendGlobops(OperServ, "Unable to backup database!"); - Alog() << "Unable to back up database!"; + Log() << "Unable to back up database!"; if (!Config->NoBackupOkay) quitting = true; diff --git a/modules/core/enc_md5.cpp b/modules/core/enc_md5.cpp index e75c7afeb..b3a826c23 100644 --- a/modules/core/enc_md5.cpp +++ b/modules/core/enc_md5.cpp @@ -336,7 +336,7 @@ class EMD5 : public Module MD5Final(reinterpret_cast(digest), &context); buf += Anope::Hex(digest, 16); - Alog(LOG_DEBUG_2) << "(enc_md5) hashed password from [" << src << "] to [" << buf << "]"; + Log(LOG_DEBUG_2) << "(enc_md5) hashed password from [" << src << "] to [" << buf << "]"; dest = buf; return EVENT_ALLOW; } diff --git a/modules/core/enc_none.cpp b/modules/core/enc_none.cpp index 445dcb767..f27df4f1b 100644 --- a/modules/core/enc_none.cpp +++ b/modules/core/enc_none.cpp @@ -28,7 +28,7 @@ class ENone : public Module Anope::string cpass; b64_encode(src, cpass); buf += cpass; - Alog(LOG_DEBUG_2) << "(enc_none) hashed password from [" << src << "] to [" << buf << "]"; + Log(LOG_DEBUG_2) << "(enc_none) hashed password from [" << src << "] to [" << buf << "]"; dest = buf; return EVENT_ALLOW; } diff --git a/modules/core/enc_old.cpp b/modules/core/enc_old.cpp index 6a100fd85..2103426c1 100644 --- a/modules/core/enc_old.cpp +++ b/modules/core/enc_old.cpp @@ -346,7 +346,7 @@ class EOld : public Module digest2[i / 2] = XTOI(digest[i]) << 4 | XTOI(digest[i + 1]); buf += Anope::Hex(digest2, 16); - Alog(LOG_DEBUG_2) << "(enc_old) hashed password from [" << src << "] to [" << buf << "]"; + Log(LOG_DEBUG_2) << "(enc_old) hashed password from [" << src << "] to [" << buf << "]"; dest = buf; return EVENT_ALLOW; } diff --git a/modules/core/enc_sha1.cpp b/modules/core/enc_sha1.cpp index 28175fd3f..8dc3b57ab 100644 --- a/modules/core/enc_sha1.cpp +++ b/modules/core/enc_sha1.cpp @@ -190,7 +190,7 @@ class ESHA1 : public Module SHA1Final(reinterpret_cast(digest), &context); buf += Anope::Hex(digest, 20); - Alog(LOG_DEBUG_2) << "(enc_sha1) hashed password from [" << src << "] to [" << buf << "]"; + Log(LOG_DEBUG_2) << "(enc_sha1) hashed password from [" << src << "] to [" << buf << "]"; dest = buf; return EVENT_ALLOW; } diff --git a/modules/core/enc_sha256.cpp b/modules/core/enc_sha256.cpp index 16a26a77b..6dbfc3eed 100644 --- a/modules/core/enc_sha256.cpp +++ b/modules/core/enc_sha256.cpp @@ -275,7 +275,7 @@ class ESHA256 : public Module SHA256Final(&ctx, reinterpret_cast(digest)); digest[SHA256_DIGEST_SIZE] = '\0'; buf << "sha256:" << Anope::Hex(digest, SHA256_DIGEST_SIZE) << ":" << GetIVString(); - Alog(LOG_DEBUG_2) << "(enc_sha256) hashed password from [" << src << "] to [" << buf.str() << " ]"; + Log(LOG_DEBUG_2) << "(enc_sha256) hashed password from [" << src << "] to [" << buf.str() << " ]"; dest = buf.str(); return EVENT_ALLOW; } diff --git a/modules/core/hs_del.cpp b/modules/core/hs_del.cpp index 4ef8d8424..9f3794c25 100644 --- a/modules/core/hs_del.cpp +++ b/modules/core/hs_del.cpp @@ -31,7 +31,7 @@ class CommandHSDel : public Command notice_lang(Config->s_HostServ, u, NICK_X_FORBIDDEN, nick.c_str()); return MOD_CONT; } - Alog() << "vHost for user \2" << nick << "\2 deleted by oper \2" << u->nick << "\2"; + Log(LOG_ADMIN, u, this) << "for user " << na->nick; FOREACH_MOD(I_OnDeleteVhost, OnDeleteVhost(na)); na->hostinfo.RemoveVhost(); notice_lang(Config->s_HostServ, u, HOST_DEL, nick.c_str()); diff --git a/modules/core/hs_delall.cpp b/modules/core/hs_delall.cpp index 301f14473..ca4d804a3 100644 --- a/modules/core/hs_delall.cpp +++ b/modules/core/hs_delall.cpp @@ -38,7 +38,7 @@ class CommandHSDelAll : public Command na = *it; na->hostinfo.RemoveVhost(); } - Alog() << "vHosts for all nicks in group \2" << nc->display << "\2 deleted by oper \2" << u->nick << "\2"; + Log(LOG_ADMIN, u, this) << "for all nicks in group " << nc->display; notice_lang(Config->s_HostServ, u, HOST_DELALL, nc->display.c_str()); } else diff --git a/modules/core/hs_off.cpp b/modules/core/hs_off.cpp index ef7039aeb..1338f14b3 100644 --- a/modules/core/hs_off.cpp +++ b/modules/core/hs_off.cpp @@ -29,6 +29,7 @@ class CommandHSOff : public Command else { ircdproto->SendVhostDel(u); + Log(LOG_COMMAND, u, this) << "to disable their vhost"; notice_lang(Config->s_HostServ, u, HOST_OFF); } diff --git a/modules/core/hs_on.cpp b/modules/core/hs_on.cpp index b94f22264..a57b8d8f2 100644 --- a/modules/core/hs_on.cpp +++ b/modules/core/hs_on.cpp @@ -29,6 +29,7 @@ class CommandHSOn : public Command notice_lang(Config->s_HostServ, u, HOST_IDENT_ACTIVATED, na->hostinfo.GetIdent().c_str(), na->hostinfo.GetHost().c_str()); else notice_lang(Config->s_HostServ, u, HOST_ACTIVATED, na->hostinfo.GetHost().c_str()); + Log(LOG_COMMAND, u, this) << "to enable their vhost of " << (!na->hostinfo.GetIdent().empty() ? na->hostinfo.GetIdent() + "@" : "") << na->hostinfo.GetHost(); ircdproto->SendVhost(u, na->hostinfo.GetIdent(), na->hostinfo.GetHost()); if (ircd->vhost) u->vhost = na->hostinfo.GetHost(); diff --git a/modules/core/hs_set.cpp b/modules/core/hs_set.cpp index 8ee6a8723..68407790a 100644 --- a/modules/core/hs_set.cpp +++ b/modules/core/hs_set.cpp @@ -81,7 +81,8 @@ class CommandHSSet : public Command notice_lang(Config->s_HostServ, u, NICK_X_FORBIDDEN, nick.c_str()); return MOD_CONT; } - Alog() << "vHost for user \2" << nick << "\2 set to \2" << (!vIdent.empty() && ircd->vident ? vIdent : "") << (!vIdent.empty() && ircd->vident ? "@" : "") << hostmask << " \2 by oper \2" << u->nick << "\2"; + + Log(LOG_ADMIN, u, this) << "to set the vhost of " << na->nick << " to " << (!vIdent.empty() ? vIdent + "@" : "") << hostmask; na->hostinfo.SetVhost(vIdent, hostmask, u->nick); FOREACH_MOD(I_OnSetVhost, OnSetVhost(na)); diff --git a/modules/core/hs_setall.cpp b/modules/core/hs_setall.cpp index 3ace182fd..bea594da6 100644 --- a/modules/core/hs_setall.cpp +++ b/modules/core/hs_setall.cpp @@ -86,7 +86,7 @@ class CommandHSSetAll : public Command tmp_time = time(NULL); - Alog() << "vHost for all nicks in group \2" << nick << "\2 set to \2" << (!vIdent.empty() && ircd->vident ? vIdent : "") << (!vIdent.empty() && ircd->vident ? "@" : "") << hostmask << " \2 by oper \2" << u->nick << "\2"; + Log(LOG_ADMIN, u, this) << "to set the vhost for all nicks in group " << na->nc->display << " to " << (!vIdent.empty() ? vIdent + "@" : "") << hostmask; na->hostinfo.SetVhost(vIdent, hostmask, u->nick); HostServSyncVhosts(na); diff --git a/modules/core/ms_rsend.cpp b/modules/core/ms_rsend.cpp index 03c643c11..6ed6b3b03 100644 --- a/modules/core/ms_rsend.cpp +++ b/modules/core/ms_rsend.cpp @@ -47,7 +47,7 @@ class CommandMSRSend : public Command else { /* rsend has been disabled */ - Alog(LOG_DEBUG) << "MSMemoReceipt is set misconfigured to " << Config->MSMemoReceipt; + Log() << "MSMemoReceipt is set misconfigured to " << Config->MSMemoReceipt; notice_lang(Config->s_MemoServ, u, MEMO_RSEND_DISABLED); } diff --git a/modules/core/ns_drop.cpp b/modules/core/ns_drop.cpp index 497a375f1..4180bf0e6 100644 --- a/modules/core/ns_drop.cpp +++ b/modules/core/ns_drop.cpp @@ -42,7 +42,7 @@ class CommandNSDrop : public Command { if (Config->WallDrop) ircdproto->SendGlobops(NickServ, "\2%s\2 used DROP on \2%s\2", u->nick.c_str(), nick.c_str()); - Alog() << Config->s_NickServ << ": " << u->GetMask() << " dropped nickname " << nr->nick << " (e-mail: " << nr->email << ")"; + Log(LOG_ADMIN, u, this) << "to drop nickname " << nr->nick << " (email: " << nr->email << ")"; delete nr; notice_lang(Config->s_NickServ, u, NICK_X_DROPPED, nick.c_str()); } @@ -73,7 +73,7 @@ class CommandNSDrop : public Command ircdproto->SendSQLineDel(&x); } - Alog() << Config->s_NickServ << ": " << u->GetMask() << " dropped nickname " << na->nick << " (group " << na->nc->display << ") (e-mail: " << (!na->nc->email.empty() ? na->nc->email : "none") << ")"; + Log(!is_mine ? LOG_OVERRIDE : LOG_COMMAND, u, this) << "to drop nickname " << na->nick << " (group: " << na->nc->display << ") (email: " << (!na->nc->email.empty() ? na->nc->email : "none") << ")"; delete na; FOREACH_MOD(I_OnNickDrop, OnNickDrop(!my_nick.empty() ? my_nick : nick)); diff --git a/modules/core/ns_forbid.cpp b/modules/core/ns_forbid.cpp index f10b1f04e..e7c3162a2 100644 --- a/modules/core/ns_forbid.cpp +++ b/modules/core/ns_forbid.cpp @@ -76,14 +76,15 @@ class CommandNSForbid : public Command if (Config->WallForbid) ircdproto->SendGlobops(NickServ, "\2%s\2 used FORBID on \2%s\2", u->nick.c_str(), nick.c_str()); - Alog() << Config->s_NickServ << ": " << u->nick << " set FORBID for nick " << nick; + Log(LOG_ADMIN, u, this) << "to forbid nick " << nick; notice_lang(Config->s_NickServ, u, NICK_FORBID_SUCCEEDED, nick.c_str()); FOREACH_MOD(I_OnNickForbidden, OnNickForbidden(na)); } else { - Alog() << Config->s_NickServ << ": Valid FORBID for " << nick << " by " << u->nick << " failed"; + // XXX cant happen ? + //Alog() << Config->s_NickServ << ": Valid FORBID for " << nick << " by " << u->nick << " failed"; notice_lang(Config->s_NickServ, u, NICK_FORBID_FAILED, nick.c_str()); } return MOD_CONT; diff --git a/modules/core/ns_getemail.cpp b/modules/core/ns_getemail.cpp index dbfb91562..1d8afcad1 100644 --- a/modules/core/ns_getemail.cpp +++ b/modules/core/ns_getemail.cpp @@ -29,7 +29,7 @@ class CommandNSGetEMail : public Command Anope::string email = params[0]; int j = 0; - Alog() << Config->s_NickServ << ": " << u->GetMask() << " used GETEMAIL on " << email; + Log(LOG_ADMIN, u, this) << "on " << email; for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it) { diff --git a/modules/core/ns_getpass.cpp b/modules/core/ns_getpass.cpp index e4f196d23..a2d288cbc 100644 --- a/modules/core/ns_getpass.cpp +++ b/modules/core/ns_getpass.cpp @@ -31,7 +31,7 @@ class CommandNSGetPass : public Command { if ((nr = findrequestnick(nick))) { - Alog() << Config->s_NickServ << ": " << u->GetMask() << " used GETPASS on " << nick; + Log(LOG_ADMIN, u, this) << "for " << nr->nick; if (Config->WallGetpass) ircdproto->SendGlobops(NickServ, "\2%s\2 used GETPASS on \2%s\2", u->nick.c_str(), nick.c_str()); notice_lang(Config->s_NickServ, u, NICK_GETPASS_PASSCODE_IS, nick.c_str(), nr->passcode.c_str()); @@ -47,7 +47,7 @@ class CommandNSGetPass : public Command { if (enc_decrypt(na->nc->pass, tmp_pass) == 1) { - Alog() << Config->s_NickServ << ": " << u->GetMask() << " used GETPASS on " << nick; + Log(LOG_ADMIN, u, this) << "for " << nick; if (Config->WallGetpass) ircdproto->SendGlobops(NickServ, "\2%s\2 used GETPASS on \2%s\2", u->nick.c_str(), nick.c_str()); notice_lang(Config->s_NickServ, u, NICK_GETPASS_PASSWORD_IS, nick.c_str(), tm