1
0
mirror of https://github.com/anope/anope.git synced 2026-07-10 04:23:13 +02:00

Add "virtual mode" support

This allows fully tracking extbans and other modes set by a different
underlying mode, such as InspIRCd's namedmodes

Add two configuration options to cs_ban to configure which mode is set
and whether or not to kick banned users.

Add default "mute" fantasy command to botserv.example.conf
This commit is contained in:
Adam
2014-04-25 16:51:06 -04:00
parent 4fa2a00bd5
commit 6a03eb69eb
14 changed files with 510 additions and 148 deletions
+12 -3
View File
@@ -22,6 +22,13 @@ class CommandCSUnban : public Command
void Execute(CommandSource &source, const std::vector<Anope::string> &params) anope_override
{
ChannelMode *cm = ModeManager::FindChannelModeByName("BAN");
if (!cm)
return;
std::vector<ChannelMode *> modes = cm->listeners;
modes.push_back(cm);
if (params.empty())
{
if (!source.GetUser())
@@ -38,8 +45,9 @@ class CommandCSUnban : public Command
if (!ci->c || !source.AccessFor(ci).HasPriv("UNBAN"))
continue;
if (ci->c->Unban(source.GetUser(), true))
++count;
for (unsigned j = 0; j < modes.size(); ++j)
if (ci->c->Unban(source.GetUser(), modes[j]->name, true))
++count;
}
Log(LOG_COMMAND, source, this, NULL) << "on all channels";
@@ -80,7 +88,8 @@ class CommandCSUnban : public Command
bool override = !source.AccessFor(ci).HasPriv("UNBAN") && source.HasPriv("chanserv/kick");
Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to unban " << u2->nick;
ci->c->Unban(u2, source.GetUser() == u2);
for (unsigned i = 0; i < modes.size(); ++i)
ci->c->Unban(u2, modes[i]->name, source.GetUser() == u2);
if (u2 == source.GetUser())
source.Reply(_("You have been unbanned from \002%s\002."), ci->c->name.c_str());
else