mirror of
https://github.com/anope/anope.git
synced 2026-07-01 09:46:40 +02:00
Added two events called in ns_info and cs_info that allows modules to easially add info output. Made os_info use this
This commit is contained in:
+18
-2
@@ -868,6 +868,13 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnAkickDel(ChannelInfo *ci, AutoKick *ak) { }
|
||||
|
||||
/** Called when a user requests info for a channel
|
||||
* @param u The user requesting info
|
||||
* @param ci The channel the user is requesting info for
|
||||
* @param ShowHidden true if we should show the user everything
|
||||
*/
|
||||
virtual void OnChanInfo(User *u, ChannelInfo *ci, bool ShowHidden) { }
|
||||
|
||||
/** Called when a nick is dropped
|
||||
* @param nick The nick
|
||||
*/
|
||||
@@ -946,13 +953,20 @@ class CoreExport Module
|
||||
*/
|
||||
virtual void OnNickAddAccess(NickCore *nc, const std::string &entry) { }
|
||||
|
||||
/** called from NickCore::EraseAccess()
|
||||
/** Called from NickCore::EraseAccess()
|
||||
* @param nc pointer to the NickCore
|
||||
* @param entry The access mask
|
||||
*/
|
||||
virtual void OnNickEraseAccess(NickCore *nc, const std::string &entry) { }
|
||||
|
||||
/** called when a vhost is deleted
|
||||
/** Called when a user requests info for a nick
|
||||
* @param u The user requesting info
|
||||
* @param na The nick the user is requesting info from
|
||||
* @param ShowHidden true if we should show the user everything
|
||||
*/
|
||||
virtual void OnNickInfo(User *u, NickAlias *na, bool ShowHidden) { }
|
||||
|
||||
/** Called when a vhost is deleted
|
||||
* @param na The nickalias of the vhost
|
||||
*/
|
||||
virtual void OnDeleteVhost(NickAlias *na) { }
|
||||
@@ -1077,11 +1091,13 @@ enum Implementation
|
||||
I_OnNickRegister, I_OnNickSuspended, I_OnNickUnsuspended,
|
||||
I_OnDelNick, I_OnDelCore, I_OnChangeCoreDisplay,
|
||||
I_OnDelNickRequest, I_OnMakeNickRequest, I_OnNickClearAccess, I_OnNickAddAccess, I_OnNickEraseAccess,
|
||||
I_OnNickInfo,
|
||||
|
||||
/* ChanServ */
|
||||
I_OnChanServHelp, I_OnChanForbidden, I_OnChanSuspend, I_OnChanDrop, I_OnPreChanExpire, I_OnChanExpire, I_OnAccessAdd, I_OnAccessChange,
|
||||
I_OnAccessDel, I_OnAccessClear, I_OnLevelChange, I_OnChanRegistered, I_OnChanUnsuspend, I_OnDelChan, I_OnChannelCreate,
|
||||
I_OnChannelDelete, I_OnAkickAdd, I_OnAkickDel,
|
||||
I_OnChanInfo,
|
||||
|
||||
/* BotServ */
|
||||
I_OnBotServHelp, I_OnBotJoin, I_OnBotKick, I_OnBotCreate, I_OnBotChange, I_OnBotDelete, I_OnBotAssign, I_OnBotUnAssign,
|
||||
|
||||
+4
-2
@@ -44,7 +44,7 @@ class CommandCSInfo : public Command
|
||||
char buf[BUFSIZE];
|
||||
struct tm *tm;
|
||||
bool has_auspex = u->IsIdentified() && u->Account()->HasPriv("chanserv/auspex");
|
||||
int show_all = 0;
|
||||
bool show_all = false;
|
||||
time_t expt;
|
||||
|
||||
ci = cs_findchan(chan);
|
||||
@@ -64,7 +64,7 @@ class CommandCSInfo : public Command
|
||||
|
||||
/* Should we show all fields? Only for sadmins and identified users */
|
||||
if (!param.empty() && param == "ALL" && (check_access(u, ci, CA_INFO) || has_auspex))
|
||||
show_all = 1;
|
||||
show_all = true;
|
||||
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_INFO_HEADER, chan);
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_INFO_NO_FOUNDER, ci->founder->display);
|
||||
@@ -138,6 +138,8 @@ class CommandCSInfo : public Command
|
||||
notice_lang(Config.s_ChanServ, u, CHAN_X_SUSPENDED, ci->forbidby, (ci->forbidreason ? ci->forbidreason : getstring(u, NO_REASON)));
|
||||
}
|
||||
|
||||
FOREACH_MOD(I_OnChanInfo, OnChanInfo(u, ci, show_all));
|
||||
|
||||
if (!show_all && (check_access(u, ci, CA_INFO) || has_auspex))
|
||||
notice_lang(Config.s_ChanServ, u, NICK_INFO_FOR_MORE, Config.s_ChanServ, ci->name.c_str());
|
||||
return MOD_CONT;
|
||||
|
||||
@@ -178,6 +178,8 @@ class CommandNSInfo : public Command
|
||||
}
|
||||
}
|
||||
|
||||
FOREACH_MOD(I_OnNickInfo, OnNickInfo(u, na, show_hidden));
|
||||
|
||||
if (!show_hidden && u->Account() && (na->nc == u->Account() || has_auspex))
|
||||
notice_lang(Config.s_NickServ, u, NICK_INFO_FOR_MORE, Config.s_NickServ, na->nick);
|
||||
}
|
||||
|
||||
+16
-35
@@ -409,8 +409,8 @@ class OSInfo : public Module
|
||||
this->InsertLanguage(LANG_RU, LANG_NUM_STRINGS, langtable_ru);
|
||||
this->InsertLanguage(LANG_IT, LANG_NUM_STRINGS, langtable_it);
|
||||
|
||||
Implementation i[] = { I_OnNickServHelp, I_OnChanServHelp, I_OnPostCommand, I_OnDatabaseReadMetadata, I_OnDatabaseWriteMetadata };
|
||||
ModuleManager::Attach(i, this, 5);
|
||||
Implementation i[] = { I_OnNickServHelp, I_OnChanServHelp, I_OnNickInfo, I_OnChanInfo, I_OnDatabaseReadMetadata, I_OnDatabaseWriteMetadata };
|
||||
ModuleManager::Attach(i, this, 6);
|
||||
}
|
||||
|
||||
~OSInfo()
|
||||
@@ -439,42 +439,23 @@ class OSInfo : public Module
|
||||
}
|
||||
}
|
||||
|
||||
void OnPostCommand(User *u, const std::string &service, const ci::string &command, const std::vector<ci::string> ¶ms)
|
||||
void OnNickInfo(User *u, NickAlias *na, bool)
|
||||
{
|
||||
if (command == "INFO")
|
||||
if (is_oper(u))
|
||||
{
|
||||
if (service == Config.s_NickServ)
|
||||
{
|
||||
const char *nick = params[0].c_str();
|
||||
NickAlias *na = NULL;
|
||||
char *c;
|
||||
if (na->nc->GetExtArray("os_info", c))
|
||||
u->SendMessage(Config.s_NickServ, " OperInfo: %s", c);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_oper(u)) /* Only show our goodies to opers */
|
||||
{
|
||||
if ((na = findnick(nick))) /* ok we've found the user */
|
||||
{
|
||||
/* If we have any info on this user */
|
||||
char *c;
|
||||
if (na->nc->GetExtArray("os_info", c))
|
||||
u->SendMessage(Config.s_NickServ, " OperInfo: %s", c);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (service == Config.s_ChanServ)
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
ChannelInfo *ci = NULL;
|
||||
|
||||
if (is_oper(u)) /* Only show our goodies to opers */
|
||||
{
|
||||
if ((ci = cs_findchan(chan)))
|
||||
{
|
||||
/* If we have any info on this channel */
|
||||
char *c;
|
||||
if (ci->GetExtArray("os_info", c))
|
||||
u->SendMessage(Config.s_ChanServ, " OperInfo: %s", c);
|
||||
}
|
||||
}
|
||||
}
|
||||
void OnChanInfo(User *u, ChannelInfo *ci, bool)
|
||||
{
|
||||
if (is_oper(u))
|
||||
{
|
||||
char *c;
|
||||
if (ci->GetExtArray("os_info", c))
|
||||
u->SendMessage(Config.s_ChanServ, " OperInfo: %s", c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user