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:
@@ -22,6 +22,13 @@ class CommandCSUnban : public Command
|
||||
|
||||
void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) 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
|
||||
|
||||
Reference in New Issue
Block a user