mirror of
https://github.com/anope/anope.git
synced 2026-07-03 21:03:13 +02:00
Adds check for using commands on non-registered channels before the
commands are called git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2336 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
@@ -62,13 +62,14 @@ class CommandCSAppendTopic : public Command
|
||||
const char *chan = params[0].c_str();
|
||||
const char *newtopic = params[1].c_str();
|
||||
char topic[1024];
|
||||
Channel *c;
|
||||
Channel *c = findchan(chan);
|
||||
ChannelInfo *ci;
|
||||
|
||||
if (!(c = findchan(chan)))
|
||||
if (c)
|
||||
ci = c->ci;
|
||||
|
||||
if (!c)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan);
|
||||
else if (!(ci = c->ci))
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
|
||||
else if (ci->flags & CI_FORBIDDEN)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
else if (!check_access(u, ci, CA_TOPIC))
|
||||
|
||||
@@ -182,13 +182,14 @@ class CommandCSEnforce : public Command
|
||||
{
|
||||
const char *chan = params[0].c_str();
|
||||
const char *what = params.size() > 1 ? params[1].c_str() : NULL;
|
||||
Channel *c;
|
||||
Channel *c = findchan(chan);
|
||||
ChannelInfo *ci;
|
||||
|
||||
if (!(c = findchan(chan)))
|
||||
if (c)
|
||||
ci = c->ci;
|
||||
|
||||
if (!c)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan);
|
||||
else if (!(ci = c->ci))
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
|
||||
else if (ci->flags & CI_FORBIDDEN)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
else if (!check_access(u, ci, CA_AKICK))
|
||||
|
||||
@@ -203,13 +203,9 @@ int delBan(int argc, char **argv)
|
||||
|
||||
int canBanUser(Channel * c, User * u, User * u2)
|
||||
{
|
||||
ChannelInfo *ci;
|
||||
ChannelInfo *ci = c->ci;
|
||||
int ok = 0;
|
||||
if (!(ci = c->ci))
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
|
||||
else if (ci->flags & CI_FORBIDDEN)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, c->name);
|
||||
else if (!check_access(u, ci, CA_BAN))
|
||||
if (!check_access(u, ci, CA_BAN))
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
else if (ircd->except && is_excepted(ci, u2))
|
||||
notice_lang(s_ChanServ, u, CHAN_EXCEPTED, u2->nick, ci->name);
|
||||
|
||||
+14
-24
@@ -146,7 +146,7 @@ class CommandCSOInfo : public Command
|
||||
const char *chan = params[1].c_str();
|
||||
const char *info = params.size() > 2 ? params[2].c_str() : NULL;
|
||||
char *c;
|
||||
ChannelInfo *ci = NULL;
|
||||
ChannelInfo *ci = cs_findchan(chan);
|
||||
|
||||
if (!info)
|
||||
{
|
||||
@@ -154,19 +154,14 @@ class CommandCSOInfo : public Command
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if ((ci = cs_findchan(chan)))
|
||||
if (ci->GetExt("os_info", c))
|
||||
{
|
||||
if (ci->GetExt("os_info", c))
|
||||
{
|
||||
delete [] c;
|
||||
ci->Shrink("os_info");
|
||||
}
|
||||
/* Add the module data to the channel */
|
||||
ci->Extend("os_info", sstrdup(info));
|
||||
me->NoticeLang(s_ChanServ, u, OCINFO_ADD_SUCCESS, chan);
|
||||
delete [] c;
|
||||
ci->Shrink("os_info");
|
||||
}
|
||||
else
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
|
||||
/* Add the module data to the channel */
|
||||
ci->Extend("os_info", sstrdup(info));
|
||||
me->NoticeLang(s_ChanServ, u, OCINFO_ADD_SUCCESS, chan);
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -174,21 +169,16 @@ class CommandCSOInfo : public Command
|
||||
CommandReturn DoDel(User *u, std::vector<std::string> ¶ms)
|
||||
{
|
||||
const char *chan = params[1].c_str();
|
||||
ChannelInfo *ci = NULL;
|
||||
ChannelInfo *ci = cs_findchan(chan);
|
||||
|
||||
if ((ci = cs_findchan(chan)))
|
||||
/* Del the module data from the channel */
|
||||
char *c;
|
||||
if (ci->GetExt("os_info", c))
|
||||
{
|
||||
/* Del the module data from the channel */
|
||||
char *c;
|
||||
if (ci->GetExt("os_info", c))
|
||||
{
|
||||
delete [] c;
|
||||
ci->Shrink("os_info");
|
||||
}
|
||||
me->NoticeLang(s_ChanServ, u, OCINFO_DEL_SUCCESS, chan);
|
||||
delete [] c;
|
||||
ci->Shrink("os_info");
|
||||
}
|
||||
else
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan);
|
||||
me->NoticeLang(s_ChanServ, u, OCINFO_DEL_SUCCESS, chan);
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user