mirror of
https://github.com/anope/anope.git
synced 2026-06-27 06:26:37 +02:00
Change the mode name code to use Flags names in preparation for extban support
This commit is contained in:
+43
-47
@@ -31,7 +31,7 @@ const Anope::string UserModeNameStrings[] = {
|
||||
"UMODE_REGPRIV", "UMODE_PROTECTED", "UMODE_NO_CTCP", "UMODE_WEBTV", "UMODE_WEBIRC", "UMODE_WHOIS", "UMODE_ADMIN", "UMODE_DEAF",
|
||||
"UMODE_GLOBOPS", "UMODE_HELPOP", "UMODE_INVIS", "UMODE_OPER", "UMODE_PRIV", "UMODE_GOD", "UMODE_REGISTERED",
|
||||
"UMODE_SNOMASK", "UMODE_VHOST", "UMODE_WALLOPS", "UMODE_CLOAK", "UMODE_SSL", "UMODE_SOFTCALLERID", "UMODE_CALLERID",
|
||||
"UMODE_COMMONCHANS", "UMODE_HIDDEN", "UMODE_STRIPCOLOR", "UMODE_INVISIBLE_OPER",
|
||||
"UMODE_COMMONCHANS", "UMODE_HIDDEN", "UMODE_STRIPCOLOR", "UMODE_INVISIBLE_OPER", "UMODE_RESTRICTED"
|
||||
|
||||
""
|
||||
};
|
||||
@@ -65,20 +65,20 @@ const Anope::string ChannelModeNameStrings[] = {
|
||||
"CMODE_BEGIN",
|
||||
|
||||
/* Channel modes */
|
||||
"CMODE_BLOCKCOLOR", " CMODE_FLOOD", " CMODE_INVITE", " CMODE_KEY", " CMODE_LIMIT", " CMODE_MODERATED", " CMODE_NOEXTERNAL",
|
||||
"CMODE_PRIVATE", " CMODE_REGISTERED", " CMODE_SECRET", " CMODE_TOPIC", " CMODE_AUDITORIUM", " CMODE_SSL", " CMODE_ADMINONLY",
|
||||
"CMODE_NOCTCP", " CMODE_FILTER", " CMODE_NOKNOCK", " CMODE_REDIRECT", " CMODE_REGMODERATED", " CMODE_NONICK", " CMODE_OPERONLY",
|
||||
"CMODE_NOKICK", " CMODE_REGISTEREDONLY", " CMODE_STRIPCOLOR", " CMODE_NONOTICE", " CMODE_NOINVITE", " CMODE_ALLINVITE",
|
||||
"CMODE_BLOCKCAPS", " CMODE_PERM", " CMODE_NICKFLOOD", " CMODE_JOINFLOOD", " CMODE_DELAYEDJOIN", " CMODE_NOREJOIN",
|
||||
"CMODE_BLOCKCOLOR", "CMODE_FLOOD", "CMODE_INVITE", "CMODE_KEY", "CMODE_LIMIT", "CMODE_MODERATED", "CMODE_NOEXTERNAL",
|
||||
"CMODE_PRIVATE", "CMODE_REGISTERED", "CMODE_SECRET", "CMODE_TOPIC", "CMODE_AUDITORIUM", "CMODE_SSL", "CMODE_ADMINONLY",
|
||||
"CMODE_NOCTCP", "CMODE_FILTER", "CMODE_NOKNOCK", "CMODE_REDIRECT", "CMODE_REGMODERATED", "CMODE_NONICK", "CMODE_OPERONLY",
|
||||
"CMODE_NOKICK", "CMODE_REGISTEREDONLY", "CMODE_STRIPCOLOR", "CMODE_NONOTICE", "CMODE_NOINVITE", "CMODE_ALLINVITE",
|
||||
"CMODE_BLOCKCAPS", "CMODE_PERM", "CMODE_NICKFLOOD", "CMODE_JOINFLOOD", "CMODE_DELAYEDJOIN", "CMODE_NOREJOIN",
|
||||
"CMODE_BANDWIDTH",
|
||||
|
||||
/* b/e/I */
|
||||
"CMODE_BAN", " CMODE_EXCEPT",
|
||||
"CMODE_BAN", "CMODE_EXCEPT",
|
||||
"CMODE_INVITEOVERRIDE",
|
||||
|
||||
/* v/h/o/a/q */
|
||||
"CMODE_VOICE", " CMODE_HALFOP", " CMODE_OP",
|
||||
"CMODE_PROTECT", " CMODE_OWNER",
|
||||
"CMODE_VOICE", "CMODE_HALFOP", "CMODE_OP",
|
||||
"CMODE_PROTECT", "CMODE_OWNER",
|
||||
|
||||
""
|
||||
};
|
||||
@@ -115,8 +115,6 @@ class CoreExport Mode : public Base
|
||||
public:
|
||||
/* Class of mode this is */
|
||||
ModeClass Class;
|
||||
/* The mode name, as a string */
|
||||
Anope::string NameAsString;
|
||||
/* Mode char for this */
|
||||
char ModeChar;
|
||||
/* Type of mode this is */
|
||||
@@ -124,11 +122,10 @@ class CoreExport Mode : public Base
|
||||
|
||||
/** Default constructor
|
||||
* @param mClass The type of mode this is
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
* @param type The mode type
|
||||
*/
|
||||
Mode(ModeClass mClass, const Anope::string &mNameAsString, char modeChar, ModeType type);
|
||||
Mode(ModeClass mClass, char modeChar, ModeType type);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
@@ -145,14 +142,17 @@ class CoreExport UserMode : public Mode
|
||||
|
||||
/** Default constructor
|
||||
* @param nName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
UserMode(UserModeName mName, const Anope::string &mNameAsString, char modeChar);
|
||||
UserMode(UserModeName mName, char modeChar);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
virtual ~UserMode();
|
||||
|
||||
/** Returns the mode name as a string
|
||||
*/
|
||||
const Anope::string NameAsString();
|
||||
};
|
||||
|
||||
class CoreExport UserModeParam : public UserMode
|
||||
@@ -160,10 +160,9 @@ class CoreExport UserModeParam : public UserMode
|
||||
public:
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
UserModeParam(UserModeName mName, const Anope::string &mNameAsString, char modeChar);
|
||||
UserModeParam(UserModeName mName, char modeChar);
|
||||
|
||||
/** Check if the param is valid
|
||||
* @param value The param
|
||||
@@ -182,10 +181,9 @@ class CoreExport ChannelMode : public Mode
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
ChannelMode(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar);
|
||||
ChannelMode(ChannelModeName mName, char modeChar);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
@@ -196,6 +194,10 @@ class CoreExport ChannelMode : public Mode
|
||||
* @param u The user, or NULL
|
||||
*/
|
||||
bool CanSet(User *u) const;
|
||||
|
||||
/** Returns the mode name as a string
|
||||
*/
|
||||
const Anope::string NameAsString();
|
||||
};
|
||||
|
||||
|
||||
@@ -206,10 +208,9 @@ class CoreExport ChannelModeList : public ChannelMode
|
||||
public:
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
ChannelModeList(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar);
|
||||
ChannelModeList(ChannelModeName mName, char modeChar);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
@@ -242,11 +243,10 @@ class CoreExport ChannelModeParam : public ChannelMode
|
||||
public:
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
* @param MinusArg true if this mode sends no arg when unsetting
|
||||
*/
|
||||
ChannelModeParam(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar, bool MinusArg = false);
|
||||
ChannelModeParam(ChannelModeName mName, char modeChar, bool MinusArg = false);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
@@ -272,11 +272,10 @@ class CoreExport ChannelModeStatus : public ChannelMode
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
* @param mSymbol The symbol for the mode, eg @ % +
|
||||
*/
|
||||
ChannelModeStatus(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar, char mSymbol);
|
||||
ChannelModeStatus(ChannelModeName mName, char modeChar, char mSymbol);
|
||||
|
||||
/** Default destructor
|
||||
*/
|
||||
@@ -288,7 +287,7 @@ class CoreExport ChannelModeStatus : public ChannelMode
|
||||
class CoreExport ChannelModeBan : public ChannelModeList
|
||||
{
|
||||
public:
|
||||
ChannelModeBan(char modeChar) : ChannelModeList(CMODE_BAN, "CMODE_BAN", modeChar) { }
|
||||
ChannelModeBan(char modeChar) : ChannelModeList(CMODE_BAN, modeChar) { }
|
||||
|
||||
void OnAdd(Channel *chan, const Anope::string &mask);
|
||||
|
||||
@@ -300,7 +299,7 @@ class CoreExport ChannelModeBan : public ChannelModeList
|
||||
class CoreExport ChannelModeExcept : public ChannelModeList
|
||||
{
|
||||
public:
|
||||
ChannelModeExcept(char modeChar) : ChannelModeList(CMODE_EXCEPT, "CMODE_EXCEPT", modeChar) { }
|
||||
ChannelModeExcept(char modeChar) : ChannelModeList(CMODE_EXCEPT, modeChar) { }
|
||||
|
||||
void OnAdd(Channel *chan, const Anope::string &mask);
|
||||
|
||||
@@ -312,7 +311,7 @@ class CoreExport ChannelModeExcept : public ChannelModeList
|
||||
class CoreExport ChannelModeInvex : public ChannelModeList
|
||||
{
|
||||
public:
|
||||
ChannelModeInvex(char modeChar) : ChannelModeList(CMODE_INVITEOVERRIDE, "CMODE_INVITEOVERRIDE", modeChar) { }
|
||||
ChannelModeInvex(char modeChar) : ChannelModeList(CMODE_INVITEOVERRIDE, modeChar) { }
|
||||
|
||||
void OnAdd(Channel *chan, const Anope::string &mask);
|
||||
|
||||
@@ -325,7 +324,7 @@ class CoreExport ChannelModeInvex : public ChannelModeList
|
||||
class CoreExport ChannelModeKey : public ChannelModeParam
|
||||
{
|
||||
public:
|
||||
ChannelModeKey(char modeChar) : ChannelModeParam(CMODE_KEY, "CMODE_KEY", modeChar) { }
|
||||
ChannelModeKey(char modeChar) : ChannelModeParam(CMODE_KEY, modeChar) { }
|
||||
|
||||
bool IsValid(const Anope::string &value) const;
|
||||
};
|
||||
@@ -335,7 +334,7 @@ class CoreExport ChannelModeKey : public ChannelModeParam
|
||||
class ChannelModeFlood : public ChannelModeParam
|
||||
{
|
||||
public:
|
||||
ChannelModeFlood(char modeChar, bool minusNoArg = false) : ChannelModeParam(CMODE_FLOOD, "CMODE_FLOOD", modeChar, minusNoArg) { }
|
||||
ChannelModeFlood(char modeChar, bool minusNoArg = false) : ChannelModeParam(CMODE_FLOOD, modeChar, minusNoArg) { }
|
||||
|
||||
bool IsValid(const Anope::string &value) const;
|
||||
};
|
||||
@@ -346,7 +345,7 @@ class ChannelModeFlood : public ChannelModeParam
|
||||
class CoreExport ChannelModeAdmin : public ChannelMode
|
||||
{
|
||||
public:
|
||||
ChannelModeAdmin(char modeChar) : ChannelMode(CMODE_ADMINONLY, "CMODE_ADMINONLY", modeChar) { }
|
||||
ChannelModeAdmin(char modeChar) : ChannelMode(CMODE_ADMINONLY, modeChar) { }
|
||||
|
||||
/* Opers only */
|
||||
bool CanSet(User *u) const;
|
||||
@@ -358,7 +357,7 @@ class CoreExport ChannelModeAdmin : public ChannelMode
|
||||
class CoreExport ChannelModeOper : public ChannelMode
|
||||
{
|
||||
public:
|
||||
ChannelModeOper(char modeChar) : ChannelMode(CMODE_OPERONLY, "CMODE_OPERONLY", modeChar) { }
|
||||
ChannelModeOper(char modeChar) : ChannelMode(CMODE_OPERONLY, modeChar) { }
|
||||
|
||||
/* Opers only */
|
||||
bool CanSet(User *u) const;
|
||||
@@ -370,7 +369,7 @@ class CoreExport ChannelModeOper : public ChannelMode
|
||||
class CoreExport ChannelModeRegistered : public ChannelMode
|
||||
{
|
||||
public:
|
||||
ChannelModeRegistered(char modeChar) : ChannelMode(CMODE_REGISTERED, "CMODE_REGISTERED", modeChar) { }
|
||||
ChannelModeRegistered(char modeChar) : ChannelMode(CMODE_REGISTERED, modeChar) { }
|
||||
|
||||
/* No one mlocks +r */
|
||||
bool CanSet(User *u) const;
|
||||
@@ -437,18 +436,9 @@ class CoreExport ModeManager
|
||||
static void StackerAddInternal(BotInfo *bi, Base *Object, Mode *mode, bool Set, const Anope::string &Param, StackerType Type);
|
||||
|
||||
public:
|
||||
/* List of all modes Anope knows about */
|
||||
static std::map<Anope::string, Mode *> Modes;
|
||||
|
||||
/* User modes */
|
||||
static std::map<char, UserMode *> UserModesByChar;
|
||||
static std::map<UserModeName, UserMode *> UserModesByName;
|
||||
/* Channel modes */
|
||||
static std::map<char, ChannelMode *> ChannelModesByChar;
|
||||
static std::map<ChannelModeName, ChannelMode *> ChannelModesByName;
|
||||
/* Although there are two different maps for UserModes and ChannelModes
|
||||
* the pointers in each are the same. This is used to increase efficiency.
|
||||
*/
|
||||
/* List of all modes Anope knows about */
|
||||
static std::vector<ChannelMode *> ChannelModes;
|
||||
static std::vector<UserMode *> UserModes;
|
||||
|
||||
/** Add a user mode to Anope
|
||||
* @param um A UserMode or UserMode derived class
|
||||
@@ -486,11 +476,17 @@ class CoreExport ModeManager
|
||||
*/
|
||||
static UserMode *FindUserModeByName(UserModeName Name);
|
||||
|
||||
/** Find a mode by name
|
||||
/** Find channel mode by string
|
||||
* @param name The mode name
|
||||
* @return The mode
|
||||
*/
|
||||
static Mode *FindModeByName(const Anope::string &name);
|
||||
static ChannelMode *FindChannelModeByString(const Anope::string &name);
|
||||
|
||||
/** Find user mode by string
|
||||
* @param name The mode name
|
||||
* @return The mode
|
||||
*/
|
||||
static UserMode *FindUserModeByString(const Anope::string &name);
|
||||
|
||||
/** Gets the channel mode char for a symbol (eg + returns v)
|
||||
* @param Value The symbol
|
||||
|
||||
@@ -164,16 +164,13 @@ class CommandCSMode : public Command
|
||||
case '*':
|
||||
if (adding == -1)
|
||||
break;
|
||||
for (std::map<Anope::string, Mode *>::const_iterator it = ModeManager::Modes.begin(), it_end = ModeManager::Modes.end(); it != it_end; ++it)
|
||||
for (unsigned j = 0; j < ModeManager::ChannelModes.size(); ++j)
|
||||
{
|
||||
Mode *m = it->second;
|
||||
if (m->Class == MC_CHANNEL)
|
||||
ChannelMode *cm = ModeManager::ChannelModes[j];
|
||||
if (cm->CanSet(u))
|
||||
{
|
||||
ChannelMode *cm = debug_cast<ChannelMode *>(m);
|
||||
if (cm->Type == MODE_REGULAR || (!adding && cm->Type == MODE_PARAM))
|
||||
{
|
||||
if (!cm->CanSet(u))
|
||||
continue;
|
||||
if (adding)
|
||||
ci->c->SetMode(NULL, cm);
|
||||
else
|
||||
|
||||
@@ -848,7 +848,7 @@ class DBPlain : public Module
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(ml.name);
|
||||
if (!cm || cm->Type != MODE_REGULAR)
|
||||
continue;
|
||||
db_buffer << " " << cm->NameAsString;
|
||||
db_buffer << " " << cm->NameAsString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -870,7 +870,7 @@ class DBPlain : public Module
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(ml.name);
|
||||
if (!cm || cm->Type != MODE_REGULAR)
|
||||
continue;
|
||||
db_buffer << " " << cm->NameAsString;
|
||||
db_buffer << " " << cm->NameAsString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -895,7 +895,7 @@ class DBPlain : public Module
|
||||
continue;
|
||||
|
||||
if (!ml.param.empty())
|
||||
db_buffer << "MD MLP" << (ml.set ? " " : "_OFF ") << cm->NameAsString << " " << ml.param << endl;
|
||||
db_buffer << "MD MLP" << (ml.set ? " " : "_OFF ") << cm->NameAsString() << " " << ml.param << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ static Anope::string MakeMLock(ChannelInfo *ci, bool status)
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(ml.name);
|
||||
if (!cm || cm->Type != MODE_REGULAR)
|
||||
continue;
|
||||
ret += " " + cm->NameAsString;
|
||||
ret += " " + cm->NameAsString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ static Anope::string GetMLockParams(ChannelInfo *ci, bool onoff)
|
||||
{
|
||||
ChannelMode *cm = ModeManager::FindChannelModeByName(ml.name);
|
||||
if (cm)
|
||||
ret += " " + cm->NameAsString + " " + ml.param;
|
||||
ret += " " + cm->NameAsString() + " " + ml.param;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,9 +163,9 @@ class BahamutIRCdProto : public IRCDProto
|
||||
{
|
||||
send_cmd(user->nick, "SJOIN %ld %s", static_cast<long>(c->creation_time), c->name.c_str());
|
||||
if (status)
|
||||
for (size_t i = CMODE_BEGIN + 1; i != CMODE_END; ++i)
|
||||
if (status->HasFlag(static_cast<ChannelModeName>(i)))
|
||||
c->SetMode(user, static_cast<ChannelModeName>(i), user->nick, false);
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
|
||||
c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false);
|
||||
}
|
||||
|
||||
void SendAkill(User *, const XLine *x)
|
||||
@@ -551,38 +551,38 @@ class ProtoBahamut : public Module
|
||||
void AddModes()
|
||||
{
|
||||
/* Add user modes */
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SERV_ADMIN, "UMODE_SERV_ADMIN", 'A'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, "UMODE_REGPRIV", 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, "UMODE_ADMIN", 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, "UMODE_SNOMASK", 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, "UMODE_DEAF", 'd'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SERV_ADMIN, 'A'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, 'd'));
|
||||
|
||||
/* b/e/I */
|
||||
ModeManager::AddChannelMode(new ChannelModeBan('b'));
|
||||
|
||||
/* v/h/o/a/q */
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@'));
|
||||
|
||||
/* Add channel modes */
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelModeFlood('f'));
|
||||
ModeManager::AddChannelMode(new ChannelModeKey('k'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelModeRegistered('r'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, "CMODE_REGMODERATED", 'M'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, 'M'));
|
||||
ModeManager::AddChannelMode(new ChannelModeOper('O'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R'));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -113,9 +113,9 @@ class InspIRCdTS6Proto : public IRCDProto
|
||||
* merge these modes with +nrt and other mlocked modes
|
||||
*/
|
||||
if (status)
|
||||
for (size_t i = CMODE_BEGIN + 1; i != CMODE_END; ++i)
|
||||
if (status->HasFlag(static_cast<ChannelModeName>(i)))
|
||||
c->SetMode(user, static_cast<ChannelModeName>(i), user->nick, false);
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
|
||||
c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false);
|
||||
}
|
||||
|
||||
/* UNSQLINE */
|
||||
|
||||
@@ -158,9 +158,9 @@ class InspIRCdProto : public IRCDProto
|
||||
{
|
||||
send_cmd(user->nick, "JOIN %s %ld", c->name.c_str(), static_cast<long>(c->creation_time));
|
||||
if (status)
|
||||
for (size_t i = CMODE_BEGIN + 1; i != CMODE_END; ++i)
|
||||
if (status->HasFlag(static_cast<ChannelModeName>(i)))
|
||||
c->SetMode(user, static_cast<ChannelModeName>(i), user->nick, false);
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
|
||||
c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false);
|
||||
}
|
||||
|
||||
/* UNSQLINE */
|
||||
@@ -383,7 +383,7 @@ class InspircdIRCdMessage : public IRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeInvex('I'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,7 +396,7 @@ class InspircdIRCdMessage : public IRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeKey('k'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -409,13 +409,13 @@ class InspircdIRCdMessage : public IRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeFlood('f'));
|
||||
continue;
|
||||
case 'l':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l', true));
|
||||
continue;
|
||||
case 'L':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, "CMODE_REDIRECT", 'L', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, 'L', true));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,67 +425,67 @@ class InspircdIRCdMessage : public IRCdMessage
|
||||
switch (modebuf[t])
|
||||
{
|
||||
case 'i':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
continue;
|
||||
case 'm':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
continue;
|
||||
case 'n':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
continue;
|
||||
case 'p':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, 'p'));
|
||||
continue;
|
||||
case 's':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
continue;
|
||||
case 't':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
continue;
|
||||
case 'r':
|
||||
ModeManager::AddChannelMode(new ChannelModeRegistered('r'));
|
||||
continue;
|
||||
case 'c':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, 'c'));
|
||||
continue;
|
||||
case 'u':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_AUDITORIUM, "CMODE_AUDITORIUM", 'u'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_AUDITORIUM, 'u'));
|
||||
continue;
|
||||
case 'z':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, "CMODE_SSL", 'z'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'z'));
|
||||
continue;
|
||||
case 'A':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_ALLINVITE, "CMODE_ALLINVITE", 'A'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_ALLINVITE, 'A'));
|
||||
continue;
|
||||
case 'C':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOCTCP, "CMODE_NOCTCP", 'C'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOCTCP, 'C'));
|
||||
continue;
|
||||
case 'G':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, "CMODE_FILTER", 'G'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, 'G'));
|
||||
continue;
|
||||
case 'K':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKNOCK, "CMODE_NOKNOCK", 'K'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKNOCK, 'K'));
|
||||
continue;
|
||||
case 'N':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONICK, "CMODE_NONICK", 'N'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONICK, 'N'));
|
||||
continue;
|
||||
case 'O':
|
||||
ModeManager::AddChannelMode(new ChannelModeOper('O'));
|
||||
continue;
|
||||
case 'Q':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, "CMODE_NOKICK", 'Q'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, 'Q'));
|
||||
continue;
|
||||
case 'R':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R'));
|
||||
continue;
|
||||
case 'S':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, "CMODE_STRIPCOLOR", 'S'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, 'S'));
|
||||
continue;
|
||||
case 'V':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOINVITE, "CMODE_NOINVITE", 'V'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOINVITE, 'V'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -499,19 +499,19 @@ class InspircdIRCdMessage : public IRCdMessage
|
||||
switch (modes[t])
|
||||
{
|
||||
case 'q':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", 'q', '~'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, 'q', '~'));
|
||||
continue;
|
||||
case 'a':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, "CMODE_PROTECT", 'a', '&'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, 'a', '&'));
|
||||
continue;
|
||||
case 'o':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@'));
|
||||
continue;
|
||||
case 'h':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, "CMODE_HALFOP", 'h', '%'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, 'h', '%'));
|
||||
continue;
|
||||
case 'v':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+'));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -868,13 +868,13 @@ class ProtoInspIRCd : public Module
|
||||
|
||||
void AddModes()
|
||||
{
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CALLERID, "UMODE_CALLERID", 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HELPOP, "UMODE_HELPOP", 'h'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, "UMODE_CLOAK", 'x'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CALLERID, 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HELPOP, 'h'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x'));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -398,13 +398,13 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage
|
||||
continue;
|
||||
/* InspIRCd sends q and a here if they have no prefixes */
|
||||
case 'q':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", 'q', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, 'q', '@'));
|
||||
continue;
|
||||
case 'a':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT , "CMODE_PROTECT", 'a', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT , 'a', '@'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -417,7 +417,7 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeKey('k'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -427,25 +427,25 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage
|
||||
switch (modebuf[t])
|
||||
{
|
||||
case 'F':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_NICKFLOOD, "CMODE_NICKFLOOD", 'F', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_NICKFLOOD, 'F', true));
|
||||
continue;
|
||||
case 'J':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_NOREJOIN, "CMODE_NOREJOIN", 'J', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_NOREJOIN, 'J', true));
|
||||
continue;
|
||||
case 'L':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, "CMODE_REDIRECT", 'L', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, 'L', true));
|
||||
continue;
|
||||
case 'f':
|
||||
ModeManager::AddChannelMode(new ChannelModeFlood('f', true));
|
||||
continue;
|
||||
case 'j':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_JOINFLOOD, "CMODE_JOINFLOOD", 'j', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_JOINFLOOD, 'j', true));
|
||||
continue;
|
||||
case 'l':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l', true));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,79 +455,79 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage
|
||||
switch (modebuf[t])
|
||||
{
|
||||
case 'A':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_ALLINVITE, "CMODE_ALLINVITE", 'A'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_ALLINVITE, 'A'));
|
||||
continue;
|
||||
case 'B':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCAPS, "CMODE_BLOCKCAPS", 'B'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCAPS, 'B'));
|
||||
continue;
|
||||
case 'C':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOCTCP, "CMODE_NOCTCP", 'C'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOCTCP, 'C'));
|
||||
continue;
|
||||
case 'D':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_DELAYEDJOIN, "CMODE_DELAYEDJOIN", 'D'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_DELAYEDJOIN, 'D'));
|
||||
continue;
|
||||
case 'G':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, "CMODE_FILTER", 'G'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, 'G'));
|
||||
continue;
|
||||
case 'K':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKNOCK, "CMODE_NOKNOCK", 'K'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKNOCK, 'K'));
|
||||
continue;
|
||||
case 'M':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, "CMODE_REGMODERATED", 'M'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, 'M'));
|
||||
continue;
|
||||
case 'N':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONICK, "CMODE_NONICK", 'N'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONICK, 'N'));
|
||||
continue;
|
||||
case 'O':
|
||||
ModeManager::AddChannelMode(new ChannelModeOper('O'));
|
||||
continue;
|
||||
case 'P':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, "CMODE_PERM", 'P'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, 'P'));
|
||||
continue;
|
||||
case 'Q':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, "CMODE_NOKICK", 'Q'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, 'Q'));
|
||||
continue;
|
||||
case 'R':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R'));
|
||||
continue;
|
||||
case 'S':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, "CMODE_STRIPCOLOR", 'S'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, 'S'));
|
||||
continue;
|
||||
case 'T':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONOTICE, "CMODE_NONOTICE", 'T'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONOTICE, 'T'));
|
||||
continue;
|
||||
case 'c':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, 'c'));
|
||||
continue;
|
||||
case 'i':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
continue;
|
||||
case 'm':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
continue;
|
||||
case 'n':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
continue;
|
||||
case 'p':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, 'p'));
|
||||
continue;
|
||||
case 'r':
|
||||
ModeManager::AddChannelMode(new ChannelModeRegistered('r'));
|
||||
continue;
|
||||
case 's':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
continue;
|
||||
case 't':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
continue;
|
||||
case 'u':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_AUDITORIUM, "CMODE_AUDITORIUM", 'u'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_AUDITORIUM, 'u'));
|
||||
continue;
|
||||
case 'z':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, "CMODE_SSL", 'z'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'z'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -544,61 +544,61 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage
|
||||
switch (modebuf[t])
|
||||
{
|
||||
case 'h':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HELPOP, "UMODE_HELPOP", 'h'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HELPOP, 'h'));
|
||||
continue;
|
||||
case 'B':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_BOT, "UMODE_BOT", 'B'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_BOT, 'B'));
|
||||
continue;
|
||||
case 'G':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_FILTER, "UMODE_FILTER", 'G'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_FILTER, 'G'));
|
||||
continue;
|
||||
case 'H':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HIDEOPER, "UMODE_HIDEOPER", 'H'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HIDEOPER, 'H'));
|
||||
continue;
|
||||
case 'I':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PRIV, "UMODE_PRIV", 'I'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PRIV, 'I'));
|
||||
continue;
|
||||
case 'Q':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HIDDEN, "UMODE_HIDDEN", 'Q'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HIDDEN, 'Q'));
|
||||
continue;
|
||||
case 'R':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, "UMODE_REGPRIV", 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, 'R'));
|
||||
continue;
|
||||
case 'S':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_STRIPCOLOR, "UMODE_STRIPCOLOR", 'S'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_STRIPCOLOR, 'S'));
|
||||
continue;
|
||||
case 'W':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WHOIS, "UMODE_WHOIS", 'W'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WHOIS, 'W'));
|
||||
continue;
|
||||
case 'c':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_COMMONCHANS, "UMODE_COMMONCHANS", 'c'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_COMMONCHANS, 'c'));
|
||||
continue;
|
||||
case 'g':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CALLERID, "UMODE_CALLERID", 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CALLERID, 'g'));
|
||||
continue;
|
||||
case 'i':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
continue;
|
||||
case 'k':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PROTECTED, "UMODE_PROTECTED", 'k'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PROTECTED, 'k'));
|
||||
continue;
|
||||
case 'o':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
continue;
|
||||
case 'r':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, 'r'));
|
||||
continue;
|
||||
case 'w':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
continue;
|
||||
case 'x':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, "UMODE_CLOAK", 'x'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x'));
|
||||
continue;
|
||||
case 'd':
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, "UMODE_DEAF", 'd'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, 'd'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_END, "", modebuf[t]));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -613,19 +613,19 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage
|
||||
switch (modes[t])
|
||||
{
|
||||
case 'q':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", 'q', chars[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, 'q', chars[t]));
|
||||
continue;
|
||||
case 'a':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, "CMODE_PROTECT", 'a', chars[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, 'a', chars[t]));
|
||||
continue;
|
||||
case 'o':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', chars[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', chars[t]));
|
||||
continue;
|
||||
case 'h':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, "CMODE_HALFOP", 'h', chars[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, 'h', chars[t]));
|
||||
continue;
|
||||
case 'v':
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', chars[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', chars[t]));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -381,86 +381,86 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
ChannelMode *cm = NULL;
|
||||
|
||||
if (modename.equals_cs("admin"))
|
||||
cm = new ChannelModeStatus(CMODE_PROTECT, "CMODE_PROTECT", modechar[1], modechar[0]);
|
||||
cm = new ChannelModeStatus(CMODE_PROTECT, modechar[1], modechar[0]);
|
||||
else if (modename.equals_cs("allowinvite"))
|
||||
cm = new ChannelMode(CMODE_ALLINVITE, "CMODE_ALLINVITE", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_ALLINVITE, modechar[0]);
|
||||
else if (modename.equals_cs("auditorium"))
|
||||
cm = new ChannelMode(CMODE_AUDITORIUM, "CMODE_AUDITORIUM", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_AUDITORIUM, modechar[0]);
|
||||
else if (modename.equals_cs("ban"))
|
||||
cm = new ChannelModeBan(modechar[0]);
|
||||
else if (modename.equals_cs("banexception"))
|
||||
cm = new ChannelModeExcept(modechar[0]);
|
||||
else if (modename.equals_cs("blockcaps"))
|
||||
cm = new ChannelMode(CMODE_BLOCKCAPS, "CMODE_BLOCKCAPS", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_BLOCKCAPS, modechar[0]);
|
||||
else if (modename.equals_cs("blockcolor"))
|
||||
cm = new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_BLOCKCOLOR, modechar[0]);
|
||||
else if (modename.equals_cs("c_registered"))
|
||||
cm = new ChannelModeRegistered(modechar[0]);
|
||||
else if (modename.equals_cs("censor"))
|
||||
cm = new ChannelMode(CMODE_FILTER, "CMODE_FILTER", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_FILTER, modechar[0]);
|
||||
else if (modename.equals_cs("delayjoin"))
|
||||
cm = new ChannelMode(CMODE_DELAYEDJOIN, "CMODE_DELAYEDJOIN", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_DELAYEDJOIN, modechar[0]);
|
||||
else if (modename.equals_cs("flood"))
|
||||
cm = new ChannelModeFlood(modechar[0], true);
|
||||
else if (modename.equals_cs("founder"))
|
||||
cm = new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", modechar[1], modechar[0]);
|
||||
cm = new ChannelModeStatus(CMODE_OWNER, modechar[1], modechar[0]);
|
||||
else if (modename.equals_cs("halfop"))
|
||||
cm = new ChannelModeStatus(CMODE_HALFOP, "CMODE_HALFOP", modechar[1], modechar[0]);
|
||||
cm = new ChannelModeStatus(CMODE_HALFOP, modechar[1], modechar[0]);
|
||||
else if (modename.equals_cs("invex"))
|
||||
cm = new ChannelModeInvex(modechar[0]);
|
||||
else if (modename.equals_cs("inviteonly"))
|
||||
cm = new ChannelMode(CMODE_INVITE, "CMODE_INVITE", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_INVITE, modechar[0]);
|
||||
else if (modename.equals_cs("joinflood"))
|
||||
cm = new ChannelModeParam(CMODE_JOINFLOOD, "CMODE_JOINFLOOD", modechar[0], true);
|
||||
cm = new ChannelModeParam(CMODE_JOINFLOOD, modechar[0], true);
|
||||
else if (modename.equals_cs("key"))
|
||||
cm = new ChannelModeKey(modechar[0]);
|
||||
else if (modename.equals_cs("kicknorejoin"))
|
||||
cm = new ChannelModeParam(CMODE_NOREJOIN, "CMODE_NOREJOIN", modechar[0], true);
|
||||
cm = new ChannelModeParam(CMODE_NOREJOIN, modechar[0], true);
|
||||
else if (modename.equals_cs("limit"))
|
||||
cm = new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", modechar[0], true);
|
||||
cm = new ChannelModeParam(CMODE_LIMIT, modechar[0], true);
|
||||
else if (modename.equals_cs("moderated"))
|
||||
cm = new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_MODERATED, modechar[0]);
|
||||
else if (modename.equals_cs("nickflood"))
|
||||
cm = new ChannelModeParam(CMODE_NICKFLOOD, "CMODE_NICKFLOOD", modechar[0], true);
|
||||
cm = new ChannelModeParam(CMODE_NICKFLOOD, modechar[0], true);
|
||||
else if (modename.equals_cs("noctcp"))
|
||||
cm = new ChannelMode(CMODE_NOCTCP, "CMODE_NOCTCP", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_NOCTCP, modechar[0]);
|
||||
else if (modename.equals_cs("noextmsg"))
|
||||
cm = new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_NOEXTERNAL, modechar[0]);
|
||||
else if (modename.equals_cs("nokick"))
|
||||
cm = new ChannelMode(CMODE_NOKICK, "CMODE_NOKICK", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_NOKICK, modechar[0]);
|
||||
else if (modename.equals_cs("noknock"))
|
||||
cm = new ChannelMode(CMODE_NOKNOCK, "CMODE_NOKNOCK", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_NOKNOCK, modechar[0]);
|
||||
else if (modename.equals_cs("nonick"))
|
||||
cm = new ChannelMode(CMODE_NONICK, "CMODE_NONICK", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_NONICK, modechar[0]);
|
||||
else if (modename.equals_cs("nonotice"))
|
||||
cm = new ChannelMode(CMODE_NONOTICE, "CMODE_NONOTICE", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_NONOTICE, modechar[0]);
|
||||
else if (modename.equals_cs("op"))
|
||||
cm = new ChannelModeStatus(CMODE_OP, "CMODE_OP", modechar[1], modechar[0]);
|
||||
cm = new ChannelModeStatus(CMODE_OP, modechar[1], modechar[0]);
|
||||
else if (modename.equals_cs("operonly"))
|
||||
cm = new ChannelModeOper(modechar[0]);
|
||||
else if (modename.equals_cs("permanent"))
|
||||
cm = new ChannelMode(CMODE_PERM, "CMODE_PERM", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_PERM, modechar[0]);
|
||||
else if (modename.equals_cs("private"))
|
||||
cm = new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_PRIVATE, modechar[0]);
|
||||
else if (modename.equals_cs("redirect"))
|
||||
cm = new ChannelModeParam(CMODE_REDIRECT, "CMODE_REDIRECT", modechar[0], true);
|
||||
cm = new ChannelModeParam(CMODE_REDIRECT, modechar[0], true);
|
||||
else if (modename.equals_cs("reginvite"))
|
||||
cm = new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_REGISTEREDONLY, modechar[0]);
|
||||
else if (modename.equals_cs("regmoderated"))
|
||||
cm = new ChannelMode(CMODE_REGMODERATED, "CMODE_REGMODERATED", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_REGMODERATED, modechar[0]);
|
||||
else if (modename.equals_cs("secret"))
|
||||
cm = new ChannelMode(CMODE_SECRET, "CMODE_SECRET", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_SECRET, modechar[0]);
|
||||
else if (modename.equals_cs("sslonly"))
|
||||
cm = new ChannelMode(CMODE_SSL, "CMODE_SSL", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_SSL, modechar[0]);
|
||||
else if (modename.equals_cs("stripcolor"))
|
||||
cm = new ChannelMode(CMODE_STRIPCOLOR, "CMODE_STRIPCOLOR", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_STRIPCOLOR, modechar[0]);
|
||||
else if (modename.equals_cs("topiclock"))
|
||||
cm = new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", modechar[0]);
|
||||
cm = new ChannelMode(CMODE_TOPIC, modechar[0]);
|
||||
else if (modename.equals_cs("voice"))
|
||||
cm = new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", modechar[1], modechar[0]);
|
||||
cm = new ChannelModeStatus(CMODE_VOICE, modechar[1], modechar[0]);
|
||||
/* Unknown status mode, (customprefix) - add it */
|
||||
else if (modechar.length() == 2)
|
||||
cm = new ChannelModeStatus(CMODE_END, modechar[0], modechar[1], modechar[0]);
|
||||
cm = new ChannelModeStatus(CMODE_END, modechar[1], modechar[0]);
|
||||
/* else don't do anything here, we will get it in CAPAB CAPABILITIES */
|
||||
|
||||
if (cm)
|
||||
@@ -481,46 +481,44 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
UserMode *um = NULL;
|
||||
|
||||
if (modename.equals_cs("bot"))
|
||||
um = new UserMode(UMODE_BOT, "UMODE_BOT", modechar[0]);
|
||||
um = new UserMode(UMODE_BOT, modechar[0]);
|
||||
else if (modename.equals_cs("callerid"))
|
||||
um = new UserMode(UMODE_CALLERID, "UMODE_CALLERID", modechar[0]);
|
||||
um = new UserMode(UMODE_CALLERID, modechar[0]);
|
||||
else if (modename.equals_cs("cloak"))
|
||||
um = new UserMode(UMODE_CLOAK, "UMODE_CLOAK", modechar[0]);
|
||||
um = new UserMode(UMODE_CLOAK, modechar[0]);
|
||||
else if (modename.equals_cs("deaf"))
|
||||
um = new UserMode(UMODE_DEAF, "UMODE_DEAF", modechar[0]);
|
||||
um = new UserMode(UMODE_DEAF, modechar[0]);
|
||||
else if (modename.equals_cs("deaf_commonchan"))
|
||||
um = new UserMode(UMODE_COMMONCHANS, "UMODE_COMMONCHANS", modechar[0]);
|
||||
um = new UserMode(UMODE_COMMONCHANS, modechar[0]);
|
||||
else if (modename.equals_cs("helpop"))
|
||||
um = new UserMode(UMODE_HELPOP, "UMODE_HELPOP", modechar[0]);
|
||||
um = new UserMode(UMODE_HELPOP, modechar[0]);
|
||||
else if (modename.equals_cs("hidechans"))
|
||||
um = new UserMode(UMODE_PRIV, "UMODE_PRIV", modechar[0]);
|
||||
um = new UserMode(UMODE_PRIV, modechar[0]);
|
||||
else if (modename.equals_cs("hideoper"))
|
||||
um = new UserMode(UMODE_HIDEOPER, "UMODE_HIDEOPER", modechar[0]);
|
||||
um = new UserMode(UMODE_HIDEOPER, modechar[0]);
|
||||
else if (modename.equals_cs("invisible"))
|
||||
um = new UserMode(UMODE_INVIS, "UMODE_INVIS", modechar[0]);
|
||||
um = new UserMode(UMODE_INVIS, modechar[0]);
|
||||
else if (modename.equals_cs("invis-oper"))
|
||||
um = new UserMode(UMODE_INVISIBLE_OPER, "UMODE_INVISIBLE_OPER", modechar[0]);
|
||||
um = new UserMode(UMODE_INVISIBLE_OPER, modechar[0]);
|
||||
else if (modename.equals_cs("oper"))
|
||||
um = new UserMode(UMODE_OPER, "UMODE_OPER", modechar[0]);
|
||||
um = new UserMode(UMODE_OPER, modechar[0]);
|
||||
else if (modename.equals_cs("regdeaf"))
|
||||
um = new UserMode(UMODE_REGPRIV, "UMODE_REGPRIV", modechar[0]);
|
||||
um = new UserMode(UMODE_REGPRIV, modechar[0]);
|
||||
else if (modename.equals_cs("servprotect"))
|
||||
{
|
||||
um = new UserMode(UMODE_PROTECTED, "UMODE_PROTECTED", modechar[0]);
|
||||
ircd->pseudoclient_mode = "+Ik";
|
||||
um = new UserMode(UMODE_PROTECTED, modechar[0]);
|
||||
ircd->pseudoclient_mode = "+Ik"; // XXX
|
||||
}
|
||||
else if (modename.equals_cs("showwhois"))
|
||||
um = new UserMode(UMODE_WHOIS, "UMODE_WHOIS", modechar[0]);
|
||||
else if (modename.equals_cs("snomask"))
|
||||
continue; // XXX
|
||||
um = new UserMode(UMODE_WHOIS, modechar[0]);
|
||||
else if (modename.equals_cs("u_censor"))
|
||||
um = new UserMode(UMODE_FILTER, "UMODE_FILTER", modechar[0]);
|
||||
um = new UserMode(UMODE_FILTER, modechar[0]);
|
||||
else if (modename.equals_cs("u_registered"))
|
||||
um = new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", modechar[0]);
|
||||
um = new UserMode(UMODE_REGISTERED, modechar[0]);
|
||||
else if (modename.equals_cs("u_stripcolor"))
|
||||
um = new UserMode(UMODE_STRIPCOLOR, "UMODE_STRIPCOLOR", modechar[0]);
|
||||
um = new UserMode(UMODE_STRIPCOLOR, modechar[0]);
|
||||
else if (modename.equals_cs("wallops"))
|
||||
um = new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", modechar[0]);
|
||||
um = new UserMode(UMODE_WALLOPS, modechar[0]);
|
||||
|
||||
if (um)
|
||||
ModeManager::AddUserMode(um);
|
||||
@@ -569,7 +567,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
{
|
||||
if (ModeManager::FindChannelModeByChar(modebuf[t]))
|
||||
continue;
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t]));
|
||||
}
|
||||
|
||||
sep.GetToken(modebuf);
|
||||
@@ -577,7 +575,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
{
|
||||
if (ModeManager::FindChannelModeByChar(modebuf[t]))
|
||||
continue;
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t]));
|
||||
}
|
||||
|
||||
sep.GetToken(modebuf);
|
||||
@@ -585,7 +583,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
{
|
||||
if (ModeManager::FindChannelModeByChar(modebuf[t]))
|
||||
continue;
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, true));
|
||||
}
|
||||
|
||||
sep.GetToken(modebuf);
|
||||
@@ -593,7 +591,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
{
|
||||
if (ModeManager::FindChannelModeByChar(modebuf[t]))
|
||||
continue;
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
else if (capab.find("USERMODES") != Anope::string::npos)
|
||||
@@ -607,11 +605,11 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage
|
||||
|
||||
if (sep.GetToken(modebuf))
|
||||
for (size_t t = 0, end = modebuf.length(); t < end; ++t)
|
||||
ModeManager::AddUserMode(new UserModeParam(UMODE_END, "", modebuf[t]));
|
||||
ModeManager::AddUserMode(new UserModeParam(UMODE_END, modebuf[t]));
|
||||
|
||||
if (sep.GetToken(modebuf))
|
||||
for (size_t t = 0, end = modebuf.length(); t < end; ++t)
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_END, "", modebuf[t]));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_END, modebuf[t]));
|
||||
}
|
||||
else if (capab.find("MAXMODES=") != Anope::string::npos)
|
||||
{
|
||||
|
||||
+20
-20
@@ -61,9 +61,9 @@ class ngIRCdProto : public IRCDProto
|
||||
{
|
||||
send_cmd(user->nick, "JOIN %s", c->name.c_str());
|
||||
if (status)
|
||||
for (size_t i = CMODE_BEGIN + 1; i != CMODE_END; ++i)
|
||||
if (status->HasFlag(static_cast<ChannelModeName>(i)))
|
||||
c->SetMode(user, static_cast<ChannelModeName>(i), user->nick, false);
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
|
||||
c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false);
|
||||
}
|
||||
|
||||
void SendSVSKillInternal(const BotInfo *source, const User *user, const Anope::string &buf)
|
||||
@@ -416,33 +416,33 @@ class ProtongIRCd : public Module
|
||||
void AddModes()
|
||||
{
|
||||
/* Add user modes */
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, "UMODE_ADMIN", 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_RESTRICTED, "UMODE_RESTRICTED", 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, "UMODE_SNOMASK", 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, "UMODE_CLOAK", 'x'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_RESTRICTED, 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x'));
|
||||
|
||||
/* b/e/I */
|
||||
ModeManager::AddChannelMode(new ChannelModeBan('b'));
|
||||
ModeManager::AddChannelMode(new ChannelModeInvex('I'));
|
||||
|
||||
/* v/h/o/a/q */
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@'));
|
||||
|
||||
/* Add channel modes */
|
||||
// channel modes: biIklmnoPstvz
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelModeKey('k'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, "CMODE_PERM", 'P'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, "CMODE_SSL", 'z'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, 'P'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'z'));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
+37
-37
@@ -124,9 +124,9 @@ class PlexusProto : public IRCDProto
|
||||
{
|
||||
send_cmd(Config->Numeric, "SJOIN %ld %s +%s :%s", static_cast<long>(c->creation_time), c->name.c_str(), c->GetModes(true, true).c_str(), user->GetUID().c_str());
|
||||
if (status)
|
||||
for (size_t i = CMODE_BEGIN + 1; i != CMODE_END; ++i)
|
||||
if (status->HasFlag(static_cast<ChannelModeName>(i)))
|
||||
c->SetMode(user, static_cast<ChannelModeName>(i), user->nick, false);
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
|
||||
c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false);
|
||||
}
|
||||
|
||||
void SendAkill(User *, const XLine *x)
|
||||
@@ -579,21 +579,21 @@ class ProtoPlexus : public Module
|
||||
void AddModes()
|
||||
{
|
||||
/* Add user modes */
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, "UMODE_ADMIN", 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, "UMODE_SNOMASK", 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, "UMODE_DEAF", 'D'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SOFTCALLERID, "UMODE_SOFTCALLERID", 'G'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NETADMIN, "UMODE_NETADMIN", 'M'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, "UMODE_REGPRIV", 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SSL, "UMODE_SSL", 'S'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WEBIRC, "UMODE_WEBIRC", 'W'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CALLERID, "UMODE_CALLERID", 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PRIV, "UMODE_PRIV", 'p'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, "UMODE_CLOAK", 'x'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, 'D'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SOFTCALLERID, 'G'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NETADMIN, 'M'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SSL, 'S'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WEBIRC, 'W'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CALLERID, 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PRIV, 'p'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x'));
|
||||
|
||||
/* b/e/I */
|
||||
ModeManager::AddChannelMode(new ChannelModeBan('b'));
|
||||
@@ -602,31 +602,31 @@ class ProtoPlexus : public Module
|
||||
|
||||
/* l/k */
|
||||
ModeManager::AddChannelMode(new ChannelModeKey('k'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l'));
|
||||
|
||||
/* v/h/o/a/q */
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, "CMODE_HALFOP", 'h', '%'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, "CMODE_PROTECT", 'a', '&'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", 'q', '~'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, 'h', '%'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, 'a', '&'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, 'q', '~'));
|
||||
|
||||
/* Add channel modes */
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BANDWIDTH, "CMODE_BANDWIDTH", 'B'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, "CMODE_REGMODERATED", 'M'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONOTICE, "CMODE_NONOTICE", 'N'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BANDWIDTH, 'B'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, 'M'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONOTICE, 'N'));
|
||||
ModeManager::AddChannelMode(new ChannelModeOper('O'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R'));
|
||||
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, "CMODE_SSL", 'S'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, "CMODE_PERM", 'z'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'S'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PERM, 'z'));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
+14
-14
@@ -539,11 +539,11 @@ class ProtoRatbox : public Module
|
||||
void AddModes()
|
||||
{
|
||||
/* Add user modes */
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, "UMODE_ADMIN", 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, "UMODE_SNOMASK", 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
|
||||
/* b/e/I */
|
||||
ModeManager::AddChannelMode(new ChannelModeBan('b'));
|
||||
@@ -551,18 +551,18 @@ class ProtoRatbox : public Module
|
||||
ModeManager::AddChannelMode(new ChannelModeInvex('I'));
|
||||
|
||||
/* v/h/o/a/q */
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@'));
|
||||
|
||||
/* Add channel modes */
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelModeKey('k'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -173,9 +173,9 @@ class UnrealIRCdProto : public IRCDProto
|
||||
{
|
||||
send_cmd(Config->ServerName, "~ %ld %s :%s", static_cast<long>(c->creation_time), c->name.c_str(), user->nick.c_str());
|
||||
if (status)
|
||||
for (size_t i = CMODE_BEGIN + 1; i != CMODE_END; ++i)
|
||||
if (status->HasFlag(static_cast<ChannelModeName>(i)))
|
||||
c->SetMode(user, static_cast<ChannelModeName>(i), user->nick, false);
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
|
||||
c->SetMode(user, ModeManager::ChannelModes[i], user->nick, false);
|
||||
}
|
||||
|
||||
/* unsqline
|
||||
@@ -530,7 +530,7 @@ class Unreal32IRCdMessage : public IRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeInvex('I'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -546,10 +546,10 @@ class Unreal32IRCdMessage : public IRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeFlood('f'));
|
||||
continue;
|
||||
case 'L':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, "CMODE_REDIRECT", 'L'));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, 'L'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -559,13 +559,13 @@ class Unreal32IRCdMessage : public IRCdMessage
|
||||
switch (modebuf[t])
|
||||
{
|
||||
case 'l':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, 'l', true));
|
||||
continue;
|
||||
case 'j':
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_JOINFLOOD, "CMODE_JOINFLOOD", 'j', true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_JOINFLOOD, 'j', true));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true));
|
||||
ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -575,31 +575,31 @@ class Unreal32IRCdMessage : public IRCdMessage
|
||||
switch (modebuf[t])
|
||||
{
|
||||
case 'p':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, "CMODE_PRIVATE", 'p'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_PRIVATE, 'p'));
|
||||
continue;
|
||||
case 's':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, "CMODE_SECRET", 's'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SECRET, 's'));
|
||||
continue;
|
||||
case 'm':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", 'm'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_MODERATED, 'm'));
|
||||
continue;
|
||||
case 'n':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, "CMODE_NOEXTERNAL", 'n'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOEXTERNAL, 'n'));
|
||||
continue;
|
||||
case 't':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, "CMODE_TOPIC", 't'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_TOPIC, 't'));
|
||||
continue;
|
||||
case 'i':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, "CMODE_INVITE", 'i'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_INVITE, 'i'));
|
||||
continue;
|
||||
case 'r':
|
||||
ModeManager::AddChannelMode(new ChannelModeRegistered('r'));
|
||||
continue;
|
||||
case 'R':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R'));
|
||||
continue;
|
||||
case 'c':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, "CMODE_BLOCKCOLOR", 'c'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_BLOCKCOLOR, 'c'));
|
||||
continue;
|
||||
case 'O':
|
||||
ModeManager::AddChannelMode(new ChannelModeOper('O'));
|
||||
@@ -608,40 +608,40 @@ class Unreal32IRCdMessage : public IRCdMessage
|
||||
ModeManager::AddChannelMode(new ChannelModeAdmin('A'));
|
||||
continue;
|
||||
case 'Q':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, "CMODE_NOKICK", 'Q'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, 'Q'));
|
||||
continue;
|
||||
case 'K':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKNOCK, "CMODE_NOKNOCK", 'K'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKNOCK, 'K'));
|
||||
continue;
|
||||
case 'V':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOINVITE, "CMODE_NOINVITE", 'V'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOINVITE, 'V'));
|
||||
continue;
|
||||
case 'C':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOCTCP, "CMODE_NOCTCP", 'C'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NOCTCP, 'C'));
|
||||
continue;
|
||||
case 'u':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_AUDITORIUM, "CMODE_AUDITORIUM", 'u'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_AUDITORIUM, 'u'));
|
||||
continue;
|
||||
case 'z':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, "CMODE_SSL", 'z'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, 'z'));
|
||||
continue;
|
||||
case 'N':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONICK, "CMODE_NONICK", 'N'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONICK, 'N'));
|
||||
continue;
|
||||
case 'S':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, "CMODE_STRIPCOLOR", 'S'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, 'S'));
|
||||
continue;
|
||||
case 'M':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, "CMODE_REGMODERATED", 'M'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_REGMODERATED, 'M'));
|
||||
continue;
|
||||
case 'T':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONOTICE, "CMODE_NONOTICE", 'T'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_NONOTICE, 'T'));
|
||||
continue;
|
||||
case 'G':
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, "CMODE_FILTER", 'G'));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, 'G'));
|
||||
continue;
|
||||
default:
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t]));
|
||||
ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -993,39 +993,39 @@ class ProtoUnreal : public Module
|
||||
|
||||
void AddModes()
|
||||
{
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, "CMODE_HALFOP", 'h', '%'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, "CMODE_OP", 'o', '@'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_VOICE, 'v', '+'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_HALFOP, 'h', '%'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OP, 'o', '@'));
|
||||
/* Unreal sends +q as * and +a as ~ */
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, "CMODE_PROTECT", 'a', '~'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", 'q', '*'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT, 'a', '~'));
|
||||
ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_OWNER, 'q', '*'));
|
||||
|
||||
/* Add user modes */
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SERV_ADMIN, "UMODE_SERV_ADMIN", 'A'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_BOT, "UMODE_BOT", 'B'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CO_ADMIN, "UMODE_CO_ADMIN", 'C'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_FILTER, "UMODE_FILTER", 'G'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HIDEOPER, "UMODE_HIDEOPER", 'H'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NETADMIN, "UMODE_NETADMIN", 'N'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, "UMODE_REGPRIV", 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PROTECTED, "UMODE_PROTECTED", 'S'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NO_CTCP, "UMODE_NO_CTCP", 'T'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WEBTV, "UMODE_WEBTV", 'V'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WHOIS, "UMODE_WHOIS", 'W'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, "UMODE_ADMIN", 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, "UMODE_DEAF", 'd'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_GLOBOPS, "UMODE_GLOBOPS", 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HELPOP, "UMODE_HELPOP", 'h'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, "UMODE_INVIS", 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, "UMODE_OPER", 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PRIV, "UMODE_PRIV", 'p'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_GOD, "UMODE_GOD", 'q'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, "UMODE_REGISTERED", 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, "UMODE_SNOMASK", 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_VHOST, "UMODE_VHOST", 't'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, "UMODE_WALLOPS", 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, "UMODE_CLOAK", 'x'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SSL, "UMODE_SSL", 'z'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SERV_ADMIN, 'A'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_BOT, 'B'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CO_ADMIN, 'C'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_FILTER, 'G'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HIDEOPER, 'H'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NETADMIN, 'N'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGPRIV, 'R'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PROTECTED, 'S'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_NO_CTCP, 'T'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WEBTV, 'V'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WHOIS, 'W'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_ADMIN, 'a'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_DEAF, 'd'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_GLOBOPS, 'g'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_HELPOP, 'h'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_INVIS, 'i'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_OPER, 'o'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_PRIV, 'p'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_GOD, 'q'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_REGISTERED, 'r'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SNOMASK, 's'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_VHOST, 't'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_WALLOPS, 'w'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_CLOAK, 'x'));
|
||||
ModeManager::AddUserMode(new UserMode(UMODE_SSL, 'z'));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
+2
-4
@@ -74,14 +74,12 @@ void Channel::Reset()
|
||||
|
||||
if (findbot(uc->user->nick))
|
||||
{
|
||||
for (std::map<char, ChannelMode *>::iterator mit = ModeManager::ChannelModesByChar.begin(), mit_end = ModeManager::ChannelModesByChar.end(); mit != mit_end; ++mit)
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
ChannelMode *cm = mit->second;
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
|
||||
if (flags.HasFlag(cm->Name))
|
||||
{
|
||||
this->SetMode(NULL, cm, uc->user->nick, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+122
-101
@@ -13,17 +13,8 @@
|
||||
std::list<std::pair<Base *, StackerInfo *> > ModeManager::StackerObjects;
|
||||
|
||||
/* List of all modes Anope knows about */
|
||||
std::map<Anope::string, Mode *> ModeManager::Modes;
|
||||
|
||||
/* User modes */
|
||||
std::map<char, UserMode *> ModeManager::UserModesByChar;
|
||||
std::map<UserModeName, UserMode *> ModeManager::UserModesByName;
|
||||
/* Channel modes */
|
||||
std::map<char, ChannelMode *> ModeManager::ChannelModesByChar;
|
||||
std::map<ChannelModeName, ChannelMode *> ModeManager::ChannelModesByName;
|
||||
/* Although there are two different maps for UserModes and ChannelModes
|
||||
* the pointers in each are the same. This is used to increase efficiency.
|
||||
*/
|
||||
std::vector<ChannelMode *> ModeManager::ChannelModes;
|
||||
std::vector<UserMode *> ModeManager::UserModes;
|
||||
|
||||
/* Number of generic modes we support */
|
||||
unsigned GenericChannelModes = 0, GenericUserModes = 0;
|
||||
@@ -86,12 +77,12 @@ Anope::string ChannelStatus::BuildCharPrefixList() const
|
||||
{
|
||||
Anope::string ret;
|
||||
|
||||
for (std::map<char, ChannelMode *>::const_iterator it = ModeManager::ChannelModesByChar.begin(), it_end = ModeManager::ChannelModesByChar.end(); it != it_end; ++it)
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
if (this->HasFlag(it->second->Name))
|
||||
{
|
||||
ret += it->second->ModeChar;
|
||||
}
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
|
||||
if (this->HasFlag(cm->Name))
|
||||
ret += cm->ModeChar;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -101,12 +92,14 @@ Anope::string ChannelStatus::BuildModePrefixList() const
|
||||
{
|
||||
Anope::string ret;
|
||||
|
||||
for (std::map<char, ChannelMode *>::const_iterator it = ModeManager::ChannelModesByChar.begin(), it_end = ModeManager::ChannelModesByChar.end(); it != it_end; ++it)
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
if (this->HasFlag(it->second->Name))
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
|
||||
if (this->HasFlag(cm->Name))
|
||||
{
|
||||
ChannelModeStatus *cm = debug_cast<ChannelModeStatus *>(it->second);
|
||||
ret += cm->Symbol;
|
||||
ChannelModeStatus *cms = debug_cast<ChannelModeStatus *>(cm);
|
||||
ret += cms->Symbol;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,11 +108,10 @@ Anope::string ChannelStatus::BuildModePrefixList() const
|
||||
|
||||
/** Default constructor
|
||||
* @param mClass The type of mode this is
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
* @param modeType The mode type
|
||||
*/
|
||||
Mode::Mode(ModeClass mClass, const Anope::string &mNameAsString, char modeChar, ModeType modeType) : Class(mClass), NameAsString(mNameAsString), ModeChar(modeChar), Type(modeType)
|
||||
Mode::Mode(ModeClass mClass, char modeChar, ModeType modeType) : Class(mClass), ModeChar(modeChar), Type(modeType)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -131,10 +123,9 @@ Mode::~Mode()
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
UserMode::UserMode(UserModeName mName, const Anope::string &mNameAsString, char modeChar) : Mode(MC_USER, mNameAsString, modeChar, MODE_REGULAR), Name(mName)
|
||||
UserMode::UserMode(UserModeName mName, char modeChar) : Mode(MC_USER, modeChar, MODE_REGULAR), Name(mName)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -144,22 +135,29 @@ UserMode::~UserMode()
|
||||
{
|
||||
}
|
||||
|
||||
/** Returns the mode name as a string
|
||||
*/
|
||||
const Anope::string UserMode::NameAsString()
|
||||
{
|
||||
if (this->Name > UMODE_END)
|
||||
return this->ModeChar;
|
||||
return UserModeNameStrings[this->Name];
|
||||
}
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
UserModeParam::UserModeParam(UserModeName mName, const Anope::string &mNameAsString, char modeChar) : UserMode(mName, mNameAsString, modeChar)
|
||||
UserModeParam::UserModeParam(UserModeName mName, char modeChar) : UserMode(mName, modeChar)
|
||||
{
|
||||
this->Type = MODE_PARAM;
|
||||
}
|
||||
|
||||
/** Default constrcutor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
ChannelMode::ChannelMode(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar) : Mode(MC_CHANNEL, mNameAsString, modeChar, MODE_REGULAR), Name(mName)
|
||||
ChannelMode::ChannelMode(ChannelModeName mName, char modeChar) : Mode(MC_CHANNEL, modeChar, MODE_REGULAR), Name(mName)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -180,12 +178,20 @@ bool ChannelMode::CanSet(User *u) const
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Returns the mode name as a string
|
||||
*/
|
||||
const Anope::string ChannelMode::NameAsString()
|
||||
{
|
||||
if (this->Name > CMODE_END)
|
||||
return this->ModeChar;
|
||||
return ChannelModeNameStrings[this->Name];
|
||||
}
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
*/
|
||||
ChannelModeList::ChannelModeList(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar) : ChannelMode(mName, mNameAsString, modeChar)
|
||||
ChannelModeList::ChannelModeList(ChannelModeName mName, char modeChar) : ChannelMode(mName, modeChar)
|
||||
{
|
||||
this->Type = MODE_LIST;
|
||||
}
|
||||
@@ -198,11 +204,10 @@ ChannelModeList::~ChannelModeList()
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
* @param MinusArg true if the mode sends no arg when unsetting
|
||||
*/
|
||||
ChannelModeParam::ChannelModeParam(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar, bool MinusArg) : ChannelMode(mName, mNameAsString, modeChar), MinusNoArg(MinusArg)
|
||||
ChannelModeParam::ChannelModeParam(ChannelModeName mName, char modeChar, bool MinusArg) : ChannelMode(mName, modeChar), MinusNoArg(MinusArg)
|
||||
{
|
||||
this->Type = MODE_PARAM;
|
||||
}
|
||||
@@ -215,11 +220,10 @@ ChannelModeParam::~ChannelModeParam()
|
||||
|
||||
/** Default constructor
|
||||
* @param mName The mode name
|
||||
* @param mNameAsString The mode name as a string
|
||||
* @param modeChar The mode char
|
||||
* @param mSymbol The symbol for the mode, eg @ % +
|
||||
*/
|
||||
ChannelModeStatus::ChannelModeStatus(ChannelModeName mName, const Anope::string &mNameAsString, char modeChar, char mSymbol) : ChannelMode(mName, mNameAsString, modeChar), Symbol(mSymbol)
|
||||
ChannelModeStatus::ChannelModeStatus(ChannelModeName mName, char modeChar, char mSymbol) : ChannelMode(mName, modeChar), Symbol(mSymbol)
|
||||
{
|
||||
this->Type = MODE_STATUS;
|
||||
}
|
||||
@@ -545,22 +549,19 @@ void ModeManager::StackerAddInternal(BotInfo *bi, Base *Object, Mode *mode, bool
|
||||
*/
|
||||
bool ModeManager::AddUserMode(UserMode *um)
|
||||
{
|
||||
if (ModeManager::UserModesByChar.insert(std::make_pair(um->ModeChar, um)).second)
|
||||
if (ModeManager::FindUserModeByChar(um->ModeChar) != NULL)
|
||||
return false;
|
||||
|
||||
if (um->Name == UMODE_END)
|
||||
{
|
||||
if (um->Name == UMODE_END)
|
||||
{
|
||||
um->Name = static_cast<UserModeName>(UMODE_END + ++GenericUserModes);
|
||||
Log() << "ModeManager: Added generic support for user mode " << um->ModeChar;
|
||||
}
|
||||
ModeManager::UserModesByName.insert(std::make_pair(um->Name, um));
|
||||
ModeManager::Modes.insert(std::make_pair(um->NameAsString, um));
|
||||
|
||||
FOREACH_MOD(I_OnUserModeAdd, OnUserModeAdd(um));
|
||||
|
||||
return true;
|
||||
um->Name = static_cast<UserModeName>(UMODE_END + ++GenericUserModes);
|
||||
Log() << "ModeManager: Added generic support for user mode " << um->ModeChar;
|
||||
}
|
||||
ModeManager::UserModes.push_back(um);
|
||||
|
||||
return false;
|
||||
FOREACH_MOD(I_OnUserModeAdd, OnUserModeAdd(um));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Add a channel mode to Anope
|
||||
@@ -569,25 +570,22 @@ bool ModeManager::AddUserMode(UserMode *um)
|
||||
*/
|
||||
bool ModeManager::AddChannelMode(ChannelMode *cm)
|
||||
{
|
||||
if (ModeManager::ChannelModesByChar.insert(std::make_pair(cm->ModeChar, cm)).second)
|
||||
if (ModeManager::FindChannelModeByChar(cm->ModeChar) != NULL)
|
||||
return false;
|
||||
|
||||
if (cm->Name == CMODE_END)
|
||||
{
|
||||
if (cm->Name == CMODE_END)
|
||||
{
|
||||
cm->Name = static_cast<ChannelModeName>(CMODE_END + ++GenericChannelModes);
|
||||
Log() << "ModeManager: Added generic support for channel mode " << cm->ModeChar;
|
||||
}
|
||||
ModeManager::ChannelModesByName.insert(std::make_pair(cm->Name, cm));
|
||||
ModeManager::Modes.insert(std::make_pair(cm->NameAsString, cm));
|
||||
|
||||
/* Apply this mode to the new default mlock if its used */
|
||||
SetDefaultMLock(Config);
|
||||
|
||||
FOREACH_MOD(I_OnChannelModeAdd, OnChannelModeAdd(cm));
|
||||
|
||||
return true;
|
||||
cm->Name = static_cast<ChannelModeName>(CMODE_END + ++GenericChannelModes);
|
||||
Log() << "ModeManager: Added generic support for channel mode " << cm->ModeChar;
|
||||
}
|
||||
ModeManager::ChannelModes.push_back(cm);
|
||||
|
||||
return false;
|
||||
/* Apply this mode to the new default mlock if its used */
|
||||
SetDefaultMLock(Config);
|
||||
|
||||
FOREACH_MOD(I_OnChannelModeAdd, OnChannelModeAdd(cm));
|
||||
|
||||
return true;
|
||||
}
|
||||
/** Find a channel mode
|
||||
* @param Mode The mode
|
||||
@@ -595,10 +593,12 @@ bool ModeManager::AddChannelMode(ChannelMode *cm)
|
||||
*/
|
||||
ChannelMode *ModeManager::FindChannelModeByChar(char Mode)
|
||||
{
|
||||
std::map<char, ChannelMode *>::iterator it = ModeManager::ChannelModesByChar.find(Mode);
|
||||
|
||||
if (it != ModeManager::ChannelModesByChar.end())
|
||||
return it->second;
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
if (cm->ModeChar == Mode)
|
||||
return cm;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -609,25 +609,13 @@ ChannelMode *ModeManager::FindChannelModeByChar(char Mode)
|
||||
*/
|
||||
UserMode *ModeManager::FindUserModeByChar(char Mode)
|
||||
{
|
||||
std::map<char, UserMode *>::iterator it = ModeManager::UserModesByChar.find(Mode);
|
||||
for (unsigned i = 0; i < ModeManager::UserModes.size(); ++i)
|
||||
{
|
||||
UserMode *um = ModeManager::UserModes[i];
|
||||
if (um->ModeChar == Mode)
|
||||
return um;
|
||||
}
|
||||
|
||||
if (it != ModeManager::UserModesByChar.end())
|
||||
return it->second;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/** Find a mode by name
|
||||
* @param name The mode name
|
||||
* @return The mode
|
||||
*/
|
||||
Mode *ModeManager::FindModeByName(const Anope::string &name)
|
||||
{
|
||||
std::map<Anope::string, Mode *>::const_iterator it = ModeManager::Modes.find(name);
|
||||
|
||||
if (it != ModeManager::Modes.end())
|
||||
return it->second;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -637,10 +625,12 @@ Mode *ModeManager::FindModeByName(const Anope::string &name)
|
||||
*/
|
||||
ChannelMode *ModeManager::FindChannelModeByName(ChannelModeName Name)
|
||||
{
|
||||
std::map<ChannelModeName, ChannelMode *>::iterator it = ModeManager::ChannelModesByName.find(Name);
|
||||
|
||||
if (it != ModeManager::ChannelModesByName.end())
|
||||
return it->second;
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
if (cm->Name == Name)
|
||||
return cm;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -651,33 +641,64 @@ ChannelMode *ModeManager::FindChannelModeByName(ChannelModeName Name)
|
||||
*/
|
||||
UserMode *ModeManager::FindUserModeByName(UserModeName Name)
|
||||
{
|
||||
std::map<UserModeName, UserMode *>::iterator it = ModeManager::UserModesByName.find(Name);
|
||||
|
||||
if (it != ModeManager::UserModesByName.end())
|
||||
return it->second;
|
||||
for (unsigned i = 0; i < ModeManager::UserModes.size(); ++i)
|
||||
{
|
||||
UserMode *um = ModeManager::UserModes[i];
|
||||
if (um->Name == Name)
|
||||
return um;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/** Find channel mode by string
|
||||
* @param name The mode name
|
||||
* @return The mode
|
||||
*/
|
||||
ChannelMode *ModeManager::FindChannelModeByString(const Anope::string &name)
|
||||
{
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
if (cm->NameAsString() == name || Anope::string(cm->ModeChar) == name)
|
||||
return cm;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/** Find user mode by string
|
||||
* @param name The mode name
|
||||
* @return The mode
|
||||
*/
|
||||
UserMode *ModeManager::FindUserModeByString(const Anope::string &name)
|
||||
{
|
||||
for (size_t i = UMODE_BEGIN + 1; i != UMODE_END; ++i)
|
||||
{
|
||||
UserMode *um = ModeManager::FindUserModeByName(static_cast<UserModeName>(i));
|
||||
if (um != NULL && (um->NameAsString() == name || Anope::string(um->ModeChar) == name))
|
||||
return um;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/** Gets the channel mode char for a symbol (eg + returns v)
|
||||
* @param Value The symbol
|
||||
* @return The char
|
||||
*/
|
||||
char ModeManager::GetStatusChar(char Value)
|
||||
{
|
||||
std::map<char, ChannelMode *>::iterator it, it_end;
|
||||
ChannelMode *cm;
|
||||
ChannelModeStatus *cms;
|
||||
|
||||
for (it = ModeManager::ChannelModesByChar.begin(), it_end = ModeManager::ChannelModesByChar.end(); it != it_end; ++it)
|
||||
for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
|
||||
{
|
||||
cm = it->second;
|
||||
ChannelMode *cm = ModeManager::ChannelModes[i];
|
||||
if (cm->Type == MODE_STATUS)
|
||||
{
|
||||
cms = debug_cast<ChannelModeStatus *>(cm);
|
||||
ChannelModeStatus *cms = debug_cast<ChannelModeStatus *>(cm);
|
||||
|
||||
if (Value == cms->Symbol)
|
||||
return it->first;
|
||||
return cms->ModeChar;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-33
@@ -496,36 +496,29 @@ void ChannelInfo::LoadMLock()
|
||||
{
|
||||
this->ClearMLock();
|
||||
|
||||
std::vector<Anope::string> modenames_on, modenames_off;
|
||||
|
||||
// Force +r
|
||||
ChannelMode *chm = ModeManager::FindChannelModeByName(CMODE_REGISTERED);
|
||||
if (chm)
|
||||
this->SetMLock(chm, true);
|
||||
this->GetExtRegular("db_mlock_modes_on", modenames_on);
|
||||
this->GetExtRegular("db_mlock_modes_off", modenames_off);
|
||||
|
||||
if (!modenames_on.empty() || !modenames_off.empty())
|
||||
std::vector<Anope::string> modenames;
|
||||
if (this->GetExtRegular("db_mlock_modes_on", modenames))
|
||||
{
|
||||
for (std::vector<Anope::string>::iterator it = modenames_on.begin(), it_end = modenames_on.end(); it != it_end; ++it)
|
||||
for (std::vector<Anope::string>::iterator it = modenames.begin(), it_end = modenames.end(); it != it_end; ++it)
|
||||
{
|
||||
Mode *m = ModeManager::FindModeByName(*it);
|
||||
|
||||
if (m && m->NameAsString.equals_cs(*it))
|
||||
{
|
||||
ChannelMode *cm = debug_cast<ChannelMode *>(m);
|
||||
this->SetMLock(cm, true);
|
||||
}
|
||||
ChannelMode *m = ModeManager::FindChannelModeByString(*it);
|
||||
if (m)
|
||||
this->SetMLock(m, true);
|
||||
}
|
||||
for (std::vector<Anope::string>::iterator it = modenames_off.begin(), it_end = modenames_off.end(); it != it_end; ++it)
|
||||
{
|
||||
Mode *m = ModeManager::FindModeByName(*it);
|
||||
}
|
||||
|
||||
if (m && m->NameAsString.equals_cs(*it))
|
||||
{
|
||||
ChannelMode *cm = debug_cast<ChannelMode *>(m);
|
||||
this->SetMLock(cm, false);
|
||||
}
|
||||
if (this->GetExtRegular("db_mlock_modes_off", modenames))
|
||||
{
|
||||
for (std::vector<Anope::string>::iterator it = modenames.begin(), it_end = modenames.end(); it != it_end; ++it)
|
||||
{
|
||||
ChannelMode *m = ModeManager::FindChannelModeByString(*it);
|
||||
if (m)
|
||||
this->SetMLock(m, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,12 +527,9 @@ void ChannelInfo::LoadMLock()
|
||||
{
|
||||
for (std::vector<std::pair<Anope::string, Anope::string> >::iterator it = params.begin(), it_end = params.end(); it != it_end; ++it)
|
||||
{
|
||||
Mode *m = ModeManager::FindModeByName(it->first);
|
||||
if (m && m->Class == MC_CHANNEL)
|
||||
{
|
||||
ChannelMode *cm = debug_cast<ChannelMode *>(m);
|
||||
this->SetMLock(cm, true, it->second);
|
||||
}
|
||||
ChannelMode *m = ModeManager::FindChannelModeByString(it->first);
|
||||
if (m)
|
||||
this->SetMLock(m, true, it->second);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -547,12 +537,9 @@ void ChannelInfo::LoadMLock()
|
||||
{
|
||||
for (std::vector<std::pair<Anope::string, Anope::string> >::iterator it = params.begin(), it_end = params.end(); it != it_end; ++it)
|
||||
{
|
||||
Mode *m = ModeManager::FindModeByName(it->first);
|
||||
if (m && m->Class == MC_CHANNEL)
|
||||
{
|
||||
ChannelMode *cm = debug_cast<ChannelMode *>(m);
|
||||
this->SetMLock(cm, false, it->second);
|
||||
}
|
||||
ChannelMode *m = ModeManager::FindChannelModeByString(it->first);
|
||||
if (m)
|
||||
this->SetMLock(m, false, it->second);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user