mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
Simplify ModeHandler constructor
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11701 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
7892c8a031
commit
1524caf2f7
@ -406,10 +406,9 @@ class CoreExport Channel : public Extensible
|
||||
* the channel (to grant ops to them)
|
||||
* @param user The user to associate the privilage with
|
||||
* @param prefix The prefix character to associate
|
||||
* @param prefix_rank The rank (value) of this prefix character
|
||||
* @param adding True if adding the prefix, false when removing
|
||||
*/
|
||||
void SetPrefix(User* user, char prefix, unsigned int prefix_rank, bool adding);
|
||||
void SetPrefix(User* user, char prefix, bool adding);
|
||||
|
||||
/** Check if a user is banned on this channel
|
||||
* @param user A user to check against the banlist
|
||||
|
@ -70,6 +70,16 @@ enum PrefixModeValue
|
||||
OP_VALUE = 30000
|
||||
};
|
||||
|
||||
enum ParamSpec
|
||||
{
|
||||
/** No parameters */
|
||||
PARAM_NONE,
|
||||
/** Parameter required on mode setting only */
|
||||
PARAM_SETONLY,
|
||||
/** Parameter always required */
|
||||
PARAM_ALWAYS
|
||||
};
|
||||
|
||||
/**
|
||||
* Used by ModeHandler::ModeSet() to return the state of a mode upon a channel or user.
|
||||
* The pair contains an activity flag, true if the mode is set with the given parameter,
|
||||
@ -94,22 +104,14 @@ typedef std::pair<bool,std::string> ModePair;
|
||||
class CoreExport ModeHandler : public classbase
|
||||
{
|
||||
protected:
|
||||
/**
|
||||
* Creator/owner pointer
|
||||
*/
|
||||
InspIRCd* ServerInstance;
|
||||
/**
|
||||
* The mode letter you're implementing.
|
||||
*/
|
||||
char mode;
|
||||
/**
|
||||
* Number of parameters when being set
|
||||
|
||||
/** What kind of parameters does the mode take?
|
||||
*/
|
||||
int n_params_on;
|
||||
/**
|
||||
* Number of parameters when being unset
|
||||
*/
|
||||
int n_params_off;
|
||||
ParamSpec parameters_taken;
|
||||
/**
|
||||
* Mode is a 'list' mode. The behaviour
|
||||
* of your mode is now set entirely within
|
||||
@ -147,9 +149,10 @@ class CoreExport ModeHandler : public classbase
|
||||
/** The prefix char needed on channel to use this mode,
|
||||
* only checked for channel modes
|
||||
*/
|
||||
char prefixneeded;
|
||||
int levelrequired;
|
||||
|
||||
public:
|
||||
static InspIRCd* ServerInstance;
|
||||
/** Module that created this mode. NULL for core modes */
|
||||
Module* creator;
|
||||
|
||||
@ -169,11 +172,8 @@ class CoreExport ModeHandler : public classbase
|
||||
* and the rank values OP_VALUE, HALFOP_VALUE and VOICE_VALUE respectively. Any prefixes you define should have unique values proportional
|
||||
* to these three defaults or proportional to another mode in a module you depend on. See src/cmode_o.cpp as an example.
|
||||
* @param prefixrequired The prefix required to change this mode
|
||||
* @param translate The translation type for the argument(s) of this mode
|
||||
*/
|
||||
ModeHandler(InspIRCd* Instance, Module* me, char modeletter, int parameters_on, int parameters_off,
|
||||
bool listmode, ModeType type, bool operonly, char mprefix = 0,
|
||||
char prefixrequired = '%', TranslateType translate = TR_TEXT);
|
||||
ModeHandler(Module* me, char modeletter, ParamSpec params, ModeType type);
|
||||
/**
|
||||
* The default destructor does nothing
|
||||
*/
|
||||
@ -187,7 +187,7 @@ class CoreExport ModeHandler : public classbase
|
||||
* also implement GetPrefixRank() to return an integer
|
||||
* value for this mode prefix.
|
||||
*/
|
||||
char GetPrefix();
|
||||
inline char GetPrefix() const { return prefix; }
|
||||
/** Get number of items with this mode set on them
|
||||
*/
|
||||
virtual unsigned int GetCount();
|
||||
@ -205,15 +205,15 @@ class CoreExport ModeHandler : public classbase
|
||||
/**
|
||||
* Returns the mode's type
|
||||
*/
|
||||
ModeType GetModeType();
|
||||
inline ModeType GetModeType() const { return m_type; }
|
||||
/**
|
||||
* Returns the mode's parameter translation type
|
||||
*/
|
||||
TranslateType GetTranslateType();
|
||||
inline TranslateType GetTranslateType() const { return m_paramtype; }
|
||||
/**
|
||||
* Returns true if the mode can only be set/unset by an oper
|
||||
*/
|
||||
bool NeedsOper();
|
||||
inline bool NeedsOper() const { return oper; }
|
||||
/**
|
||||
* Returns the number of parameters for the mode. Any non-zero
|
||||
* value should be considered to be equivalent to one.
|
||||
@ -314,9 +314,7 @@ class CoreExport ModeHandler : public classbase
|
||||
*/
|
||||
virtual void RemoveMode(Channel* channel, irc::modestacker* stack = NULL);
|
||||
|
||||
char GetNeededPrefix();
|
||||
|
||||
void SetNeededPrefix(char needsprefix);
|
||||
inline unsigned int GetLevelRequired() const { return levelrequired; }
|
||||
};
|
||||
|
||||
/** A prebuilt mode handler which handles a simple user mode, e.g. no parameters, usable by any user, with no extra
|
||||
@ -327,8 +325,8 @@ class CoreExport ModeHandler : public classbase
|
||||
class CoreExport SimpleUserModeHandler : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SimpleUserModeHandler(InspIRCd* Instance, Module* Creator, char modeletter)
|
||||
: ModeHandler(Instance, Creator, modeletter, 0, 0, false, MODETYPE_USER, false) {}
|
||||
SimpleUserModeHandler(Module* Creator, char modeletter)
|
||||
: ModeHandler(Creator, modeletter, PARAM_NONE, MODETYPE_USER) {}
|
||||
virtual ~SimpleUserModeHandler() {}
|
||||
virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding);
|
||||
};
|
||||
@ -342,7 +340,7 @@ class CoreExport SimpleChannelModeHandler : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SimpleChannelModeHandler(InspIRCd* Instance, Module* Creator, char modeletter)
|
||||
: ModeHandler(Instance, Creator, modeletter, 0, 0, false, MODETYPE_CHANNEL, false) {}
|
||||
: ModeHandler(Creator, modeletter, PARAM_NONE, MODETYPE_CHANNEL) {}
|
||||
virtual ~SimpleChannelModeHandler() {}
|
||||
virtual ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding);
|
||||
};
|
||||
|
@ -142,10 +142,11 @@ class ListModeBase : public ModeHandler
|
||||
* @param ctag Configuration tag to get limits from
|
||||
*/
|
||||
ListModeBase(InspIRCd* Instance, Module* Creator, char modechar, const std::string &eolstr, unsigned int lnum, unsigned int eolnum, bool autotidy, const std::string &ctag = "banlist")
|
||||
: ModeHandler(Instance, Creator, modechar, 1, 1, true, MODETYPE_CHANNEL, false),
|
||||
: ModeHandler(Creator, modechar, PARAM_ALWAYS, MODETYPE_CHANNEL),
|
||||
listnumeric(lnum), endoflistnumeric(eolnum), endofliststring(eolstr), tidy(autotidy),
|
||||
configtag(ctag), extItem("listbase_mode_" + std::string(1, mode) + "_list", Creator)
|
||||
{
|
||||
list = true;
|
||||
this->DoRehash();
|
||||
Extensible::Register(&extItem);
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ Channel* Channel::ForceChan(InspIRCd* Instance, Channel* Ptr, User* user, const
|
||||
if (mh)
|
||||
{
|
||||
/* Set, and make sure that the mode handler knows this mode was now set */
|
||||
Ptr->SetPrefix(user, mh->GetModeChar(), mh->GetPrefixRank(), true);
|
||||
Ptr->SetPrefix(user, mh->GetModeChar(), true);
|
||||
mh->OnModeChange(Instance->FakeClient, Instance->FakeClient, Ptr, nick, true);
|
||||
}
|
||||
}
|
||||
@ -976,7 +976,7 @@ unsigned int Channel::GetPrefixValue(User* user)
|
||||
return bestrank;
|
||||
}
|
||||
|
||||
void Channel::SetPrefix(User* user, char prefix, unsigned int prefix_value, bool adding)
|
||||
void Channel::SetPrefix(User* user, char prefix, bool adding)
|
||||
{
|
||||
ModeHandler* delta_mh = ServerInstance->Modes->FindMode(prefix, MODETYPE_CHANNEL);
|
||||
if (!delta_mh)
|
||||
|
74
src/mode.cpp
74
src/mode.cpp
@ -49,8 +49,11 @@
|
||||
/* +s (server notice masks) */
|
||||
#include "modes/umode_s.h"
|
||||
|
||||
ModeHandler::ModeHandler(InspIRCd* Instance, Module* Creator, char modeletter, int parameters_on, int parameters_off, bool listmode, ModeType type, bool operonly, char mprefix, char prefixrequired, TranslateType translate)
|
||||
: ServerInstance(Instance), mode(modeletter), n_params_on(parameters_on), n_params_off(parameters_off), list(listmode), m_type(type), m_paramtype(translate), oper(operonly), prefix(mprefix), count(0), prefixneeded(prefixrequired), creator(Creator)
|
||||
InspIRCd* ModeHandler::ServerInstance;
|
||||
|
||||
ModeHandler::ModeHandler(Module* Creator, char modeletter, ParamSpec Params, ModeType type)
|
||||
: mode(modeletter), parameters_taken(Params), list(false), m_type(type), m_paramtype(TR_TEXT),
|
||||
oper(false), prefix(0), count(0), levelrequired(HALFOP_VALUE), creator(Creator)
|
||||
{
|
||||
}
|
||||
|
||||
@ -63,18 +66,6 @@ bool ModeHandler::IsListMode()
|
||||
return list;
|
||||
}
|
||||
|
||||
char ModeHandler::GetNeededPrefix()
|
||||
{
|
||||
if (prefixneeded == '%' && !ServerInstance->Config->AllowHalfop)
|
||||
return '@';
|
||||
return prefixneeded;
|
||||
}
|
||||
|
||||
void ModeHandler::SetNeededPrefix(char needsprefix)
|
||||
{
|
||||
prefixneeded = needsprefix;
|
||||
}
|
||||
|
||||
unsigned int ModeHandler::GetPrefixRank()
|
||||
{
|
||||
return 0;
|
||||
@ -91,29 +82,18 @@ void ModeHandler::ChangeCount(int modifier)
|
||||
ServerInstance->Logs->Log("MODE", DEBUG,"Change count for mode %c is now %d", mode, count);
|
||||
}
|
||||
|
||||
ModeType ModeHandler::GetModeType()
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
||||
TranslateType ModeHandler::GetTranslateType()
|
||||
{
|
||||
return m_paramtype;
|
||||
}
|
||||
|
||||
bool ModeHandler::NeedsOper()
|
||||
{
|
||||
return oper;
|
||||
}
|
||||
|
||||
char ModeHandler::GetPrefix()
|
||||
{
|
||||
return prefix;
|
||||
}
|
||||
|
||||
int ModeHandler::GetNumParams(bool adding)
|
||||
{
|
||||
return adding ? n_params_on : n_params_off;
|
||||
switch (parameters_taken)
|
||||
{
|
||||
case PARAM_ALWAYS:
|
||||
return 1;
|
||||
case PARAM_SETONLY:
|
||||
return adding ? 1 : 0;
|
||||
case PARAM_NONE:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
char ModeHandler::GetModeChar()
|
||||
@ -292,23 +272,7 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, bool
|
||||
|
||||
if (chan && !SkipACL && (MOD_RESULT != MOD_RES_ALLOW))
|
||||
{
|
||||
char needed = mh->GetNeededPrefix();
|
||||
ModeHandler* prefixmode = FindPrefix(needed);
|
||||
|
||||
/* If the mode defined by the handler is not '\0', but the handler for it
|
||||
* cannot be found, they probably dont have the right module loaded to implement
|
||||
* the prefix they want to compare the mode against, e.g. '&' for m_chanprotect.
|
||||
* Revert to checking against the minimum core prefix, '%'.
|
||||
*/
|
||||
if (needed && !prefixmode)
|
||||
{
|
||||
needed = ServerInstance->Config->AllowHalfop ? '%' : '@';
|
||||
prefixmode = FindPrefix(needed);
|
||||
}
|
||||
|
||||
if (needed)
|
||||
{
|
||||
unsigned int neededrank = prefixmode->GetPrefixRank();
|
||||
unsigned int neededrank = mh->GetLevelRequired();
|
||||
/* Compare our rank on the channel against the rank of the required prefix,
|
||||
* allow if >= ours. Because mIRC and xchat throw a tizz if the modes shown
|
||||
* in NAMES(X) are not in rank order, we know the most powerful mode is listed
|
||||
@ -318,12 +282,13 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, bool
|
||||
if (ourrank < neededrank)
|
||||
{
|
||||
/* Bog off */
|
||||
// TODO replace with a real search for the proper prefix
|
||||
char needed = neededrank > HALFOP_VALUE ? '@' : '%';
|
||||
user->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :You must have channel privilege %c or above to %sset channel mode %c",
|
||||
user->nick.c_str(), chan->name.c_str(), needed, adding ? "" : "un", modechar);
|
||||
return MODEACTION_DENY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char handler_id = (modechar - 'A') | mask;
|
||||
|
||||
@ -378,7 +343,7 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, bool
|
||||
{
|
||||
User* user_to_prefix = ServerInstance->FindNick(parameter);
|
||||
if (user_to_prefix)
|
||||
chan->SetPrefix(user_to_prefix, modechar, mh->GetPrefixRank(), adding);
|
||||
chan->SetPrefix(user_to_prefix, modechar, adding);
|
||||
}
|
||||
|
||||
for (ModeWatchIter watchers = modewatchers[handler_id].begin(); watchers != modewatchers[handler_id].end(); watchers++)
|
||||
@ -978,6 +943,7 @@ void ModeHandler::RemoveMode(Channel* channel, irc::modestacker* stack)
|
||||
|
||||
ModeParser::ModeParser(InspIRCd* Instance) : ServerInstance(Instance)
|
||||
{
|
||||
ModeHandler::ServerInstance = Instance;
|
||||
ModeHandler* modes[] =
|
||||
{
|
||||
new ModeChannelSecret(Instance),
|
||||
|
@ -25,8 +25,9 @@
|
||||
#include "hashcomp.h"
|
||||
#include "modes/cmode_b.h"
|
||||
|
||||
ModeChannelBan::ModeChannelBan(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'b', 1, 1, true, MODETYPE_CHANNEL, false)
|
||||
ModeChannelBan::ModeChannelBan(InspIRCd* Instance) : ModeHandler(NULL, 'b', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
list = true;
|
||||
}
|
||||
|
||||
ModeAction ModeChannelBan::OnModeChange(User* source, User*, Channel* channel, std::string ¶meter, bool adding)
|
||||
|
@ -19,8 +19,12 @@
|
||||
#include "modules.h"
|
||||
#include "modes/cmode_h.h"
|
||||
|
||||
ModeChannelHalfOp::ModeChannelHalfOp(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'h', 1, 1, true, MODETYPE_CHANNEL, false, '%', '@', TR_NICK)
|
||||
ModeChannelHalfOp::ModeChannelHalfOp(InspIRCd* Instance) : ModeHandler(NULL, 'h', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
list = true;
|
||||
prefix = '%';
|
||||
levelrequired = OP_VALUE;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
unsigned int ModeChannelHalfOp::GetPrefixRank()
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "users.h"
|
||||
#include "modes/cmode_k.h"
|
||||
|
||||
ModeChannelKey::ModeChannelKey(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'k', 1, 1, false, MODETYPE_CHANNEL, false)
|
||||
ModeChannelKey::ModeChannelKey(InspIRCd* Instance) : ModeHandler(NULL, 'k', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "users.h"
|
||||
#include "modes/cmode_l.h"
|
||||
|
||||
ModeChannelLimit::ModeChannelLimit(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'l', 1, 0, false, MODETYPE_CHANNEL, false)
|
||||
ModeChannelLimit::ModeChannelLimit(InspIRCd* Instance) : ModeHandler(NULL, 'l', PARAM_SETONLY, MODETYPE_CHANNEL)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -19,8 +19,12 @@
|
||||
#include "modules.h"
|
||||
#include "modes/cmode_o.h"
|
||||
|
||||
ModeChannelOp::ModeChannelOp(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'o', 1, 1, true, MODETYPE_CHANNEL, false, '@', '@', TR_NICK)
|
||||
ModeChannelOp::ModeChannelOp(InspIRCd* Instance) : ModeHandler(NULL, 'o', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
list = true;
|
||||
prefix = '@';
|
||||
levelrequired = OP_VALUE;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
unsigned int ModeChannelOp::GetPrefixRank()
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "users.h"
|
||||
#include "modes/cmode_t.h"
|
||||
|
||||
ModeChannelTopicOps::ModeChannelTopicOps(InspIRCd* Instance) : ModeHandler(Instance, NULL, 't', 0, 0, false, MODETYPE_CHANNEL, false)
|
||||
ModeChannelTopicOps::ModeChannelTopicOps(InspIRCd* Instance) : ModeHandler(NULL, 't', PARAM_NONE, MODETYPE_CHANNEL)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -20,8 +20,12 @@
|
||||
#include "modules.h"
|
||||
#include "modes/cmode_v.h"
|
||||
|
||||
ModeChannelVoice::ModeChannelVoice(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'v', 1, 1, true, MODETYPE_CHANNEL, false, '+', '%', TR_NICK)
|
||||
ModeChannelVoice::ModeChannelVoice(InspIRCd* Instance) : ModeHandler(NULL, 'v', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
list = true;
|
||||
prefix = '+';
|
||||
levelrequired = HALFOP_VALUE;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
unsigned int ModeChannelVoice::GetPrefixRank()
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "users.h"
|
||||
#include "modes/umode_i.h"
|
||||
|
||||
ModeUserInvisible::ModeUserInvisible(InspIRCd* Instance) : SimpleUserModeHandler(Instance, NULL, 'i')
|
||||
ModeUserInvisible::ModeUserInvisible(InspIRCd* Instance) : SimpleUserModeHandler(NULL, 'i')
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,9 @@
|
||||
#include "users.h"
|
||||
#include "modes/umode_o.h"
|
||||
|
||||
ModeUserOperator::ModeUserOperator(InspIRCd* Instance) : ModeHandler(Instance, NULL, 'o', 0, 0, false, MODETYPE_USER, true)
|
||||
ModeUserOperator::ModeUserOperator(InspIRCd* Instance) : ModeHandler(NULL, 'o', PARAM_NONE, MODETYPE_USER)
|
||||
{
|
||||
oper = true;
|
||||
}
|
||||
|
||||
ModeAction ModeUserOperator::OnModeChange(User* source, User* dest, Channel*, std::string&, bool adding)
|
||||
|
@ -17,8 +17,9 @@
|
||||
#include "users.h"
|
||||
#include "modes/umode_s.h"
|
||||
|
||||
ModeUserServerNoticeMask::ModeUserServerNoticeMask(InspIRCd* Instance) : ModeHandler(Instance, NULL, 's', 1, 0, false, MODETYPE_USER, true)
|
||||
ModeUserServerNoticeMask::ModeUserServerNoticeMask(InspIRCd* Instance) : ModeHandler(NULL, 's', PARAM_SETONLY, MODETYPE_USER)
|
||||
{
|
||||
oper = true;
|
||||
}
|
||||
|
||||
ModeAction ModeUserServerNoticeMask::OnModeChange(User* source, User* dest, Channel*, std::string ¶meter, bool adding)
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "users.h"
|
||||
#include "modes/umode_w.h"
|
||||
|
||||
ModeUserWallops::ModeUserWallops(InspIRCd* Instance) : SimpleUserModeHandler(Instance, NULL, 'w')
|
||||
ModeUserWallops::ModeUserWallops(InspIRCd* Instance) : SimpleUserModeHandler(NULL, 'w')
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,10 @@
|
||||
class AuditoriumMode : public ModeHandler
|
||||
{
|
||||
public:
|
||||
AuditoriumMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'u', 0, 0, false, MODETYPE_CHANNEL, false, 0, '@') { }
|
||||
AuditoriumMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'u', PARAM_NONE, MODETYPE_CHANNEL)
|
||||
{
|
||||
levelrequired = OP_VALUE;
|
||||
}
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@
|
||||
class BotMode : public SimpleUserModeHandler
|
||||
{
|
||||
public:
|
||||
BotMode(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Instance, Creator, 'B') { }
|
||||
BotMode(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Creator, 'B') { }
|
||||
};
|
||||
|
||||
class ModuleBotMode : public Module
|
||||
|
@ -127,7 +127,7 @@ struct CallerIDExtInfo : public ExtensionItem
|
||||
class User_g : public SimpleUserModeHandler
|
||||
{
|
||||
public:
|
||||
User_g(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Instance, Creator, 'g') { }
|
||||
User_g(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Creator, 'g') { }
|
||||
};
|
||||
|
||||
class CommandAccept : public Command
|
||||
|
@ -26,7 +26,7 @@ typedef std::map<irc::string,irc::string> censor_t;
|
||||
class CensorUser : public SimpleUserModeHandler
|
||||
{
|
||||
public:
|
||||
CensorUser(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Instance, Creator, 'G') { }
|
||||
CensorUser(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Creator, 'G') { }
|
||||
};
|
||||
|
||||
/** Handles channel mode +G
|
||||
|
@ -119,8 +119,14 @@ class ChanFounder : public ModeHandler, public FounderProtectBase
|
||||
{
|
||||
public:
|
||||
ChanFounder(InspIRCd* Instance, Module* Creator, char my_prefix, bool &depriv_self, bool &depriv_others)
|
||||
: ModeHandler(Instance, Creator, 'q', 1, 1, true, MODETYPE_CHANNEL, false, my_prefix, 0, TR_NICK),
|
||||
FounderProtectBase(Instance, 'q', "founder", 386, 387, depriv_self, depriv_others) { }
|
||||
: ModeHandler(Creator, 'q', PARAM_ALWAYS, MODETYPE_CHANNEL),
|
||||
FounderProtectBase(Instance, 'q', "founder", 386, 387, depriv_self, depriv_others)
|
||||
{
|
||||
ModeHandler::list = true;
|
||||
prefix = my_prefix;
|
||||
levelrequired = FOUNDER_VALUE;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
unsigned int GetPrefixRank()
|
||||
{
|
||||
@ -194,8 +200,14 @@ class ChanProtect : public ModeHandler, public FounderProtectBase
|
||||
{
|
||||
public:
|
||||
ChanProtect(InspIRCd* Instance, Module* Creator, char my_prefix, bool &depriv_self, bool &depriv_others)
|
||||
: ModeHandler(Instance, Creator, 'a', 1, 1, true, MODETYPE_CHANNEL, false, my_prefix, 0, TR_NICK),
|
||||
FounderProtectBase(Instance,'a',"protected user", 388, 389, depriv_self, depriv_others) { }
|
||||
: ModeHandler(Creator, 'a', PARAM_ALWAYS, MODETYPE_CHANNEL),
|
||||
FounderProtectBase(Instance,'a',"protected user", 388, 389, depriv_self, depriv_others)
|
||||
{
|
||||
ModeHandler::list = true;
|
||||
prefix = my_prefix;
|
||||
levelrequired = PROTECT_VALUE;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
unsigned int GetPrefixRank()
|
||||
{
|
||||
|
@ -64,7 +64,7 @@ class CloakUser : public ModeHandler
|
||||
}
|
||||
|
||||
CloakUser(InspIRCd* Instance, Module* source, Module* Hash)
|
||||
: ModeHandler(Instance, source, 'x', 0, 0, false, MODETYPE_USER, false), HashProvider(Hash),
|
||||
: ModeHandler(source, 'x', PARAM_NONE, MODETYPE_USER), HashProvider(Hash),
|
||||
ext("cloaked_host", source)
|
||||
{
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
class PrivacyMode : public ModeHandler
|
||||
{
|
||||
public:
|
||||
PrivacyMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'c', 0, 0, false, MODETYPE_USER, false) { }
|
||||
PrivacyMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'c', PARAM_NONE, MODETYPE_USER) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@
|
||||
class User_d : public ModeHandler
|
||||
{
|
||||
public:
|
||||
User_d(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'd', 0, 0, false, MODETYPE_USER, false) { }
|
||||
User_d(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'd', PARAM_NONE, MODETYPE_USER) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -19,7 +19,10 @@ class DelayJoinMode : public ModeHandler
|
||||
private:
|
||||
CUList empty;
|
||||
public:
|
||||
DelayJoinMode(InspIRCd* Instance, Module* Parent) : ModeHandler(Instance, Parent, 'D', 0, 0, false, MODETYPE_CHANNEL, false, 0, '@') {};
|
||||
DelayJoinMode(InspIRCd* Instance, Module* Parent) : ModeHandler(Parent, 'D', PARAM_NONE, MODETYPE_CHANNEL)
|
||||
{
|
||||
levelrequired = OP_VALUE;
|
||||
}
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding);
|
||||
};
|
||||
|
@ -22,7 +22,11 @@ class DelayMsgMode : public ModeHandler
|
||||
CUList empty;
|
||||
public:
|
||||
LocalIntExt jointime;
|
||||
DelayMsgMode(InspIRCd* Instance, Module* Parent) : ModeHandler(Instance, Parent, 'd', 1, 0, false, MODETYPE_CHANNEL, false, 0, '@'), jointime("delaymsg", Parent) {};
|
||||
DelayMsgMode(InspIRCd* Instance, Module* Parent) : ModeHandler(Parent, 'd', PARAM_SETONLY, MODETYPE_CHANNEL)
|
||||
, jointime("delaymsg", Parent)
|
||||
{
|
||||
levelrequired = OP_VALUE;
|
||||
}
|
||||
|
||||
ModePair ModeSet(User*, User*, Channel* channel, const std::string ¶meter)
|
||||
{
|
||||
|
@ -22,7 +22,10 @@ static std::map<irc::string, std::string> helpop_map;
|
||||
class Helpop : public ModeHandler
|
||||
{
|
||||
public:
|
||||
Helpop(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'h', 0, 0, false, MODETYPE_USER, true) { }
|
||||
Helpop(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'h', PARAM_NONE, MODETYPE_USER)
|
||||
{
|
||||
oper = true;
|
||||
}
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@
|
||||
class HideChans : public ModeHandler
|
||||
{
|
||||
public:
|
||||
HideChans(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'I', 0, 0, false, MODETYPE_USER, false) { }
|
||||
HideChans(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'I', PARAM_NONE, MODETYPE_USER) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -20,7 +20,10 @@
|
||||
class HideOper : public ModeHandler
|
||||
{
|
||||
public:
|
||||
HideOper(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'H', 0, 0, false, MODETYPE_USER, true) { }
|
||||
HideOper(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'H', PARAM_NONE, MODETYPE_USER)
|
||||
{
|
||||
oper = true;
|
||||
}
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* +------------------------------------+
|
||||
* | Inspire Internet Relay Chat Daemon |
|
||||
* | Inspire Internet Relay Chat Daemon
|
||||
* +------------------------------------+
|
||||
*
|
||||
* InspIRCd: (C) 2002-2009 InspIRCd Development Team
|
||||
@ -19,8 +19,9 @@
|
||||
class InvisibleMode : public ModeHandler
|
||||
{
|
||||
public:
|
||||
InvisibleMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'Q', 0, 0, false, MODETYPE_USER, true)
|
||||
InvisibleMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'Q', PARAM_NONE, MODETYPE_USER)
|
||||
{
|
||||
oper = true;
|
||||
}
|
||||
|
||||
~InvisibleMode()
|
||||
|
@ -87,7 +87,7 @@ class JoinFlood : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SimpleExtItem<joinfloodsettings> ext;
|
||||
JoinFlood(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'j', 1, 0, false, MODETYPE_CHANNEL, false),
|
||||
JoinFlood(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'j', PARAM_SETONLY, MODETYPE_CHANNEL),
|
||||
ext("joinflood", Creator) { }
|
||||
|
||||
ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter)
|
||||
|
@ -31,7 +31,7 @@ class KickRejoin : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SimpleExtItem<delaylist> ext;
|
||||
KickRejoin(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'J', 1, 0, false, MODETYPE_CHANNEL, false),
|
||||
KickRejoin(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'J', PARAM_SETONLY, MODETYPE_CHANNEL),
|
||||
ext("norejoinusers", Creator) { }
|
||||
|
||||
ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter)
|
||||
|
@ -77,7 +77,7 @@ class MsgFlood : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SimpleExtItem<floodsettings> ext;
|
||||
MsgFlood(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'f', 1, 0, false, MODETYPE_CHANNEL, false),
|
||||
MsgFlood(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'f', PARAM_SETONLY, MODETYPE_CHANNEL),
|
||||
ext("messageflood", Creator) { }
|
||||
|
||||
ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter)
|
||||
|
@ -91,7 +91,7 @@ class NickFlood : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SimpleExtItem<nickfloodsettings> ext;
|
||||
NickFlood(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'F', 1, 0, false, MODETYPE_CHANNEL, false),
|
||||
NickFlood(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'F', PARAM_SETONLY, MODETYPE_CHANNEL),
|
||||
ext("nickflood", Creator) { }
|
||||
|
||||
ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter)
|
||||
|
@ -18,7 +18,7 @@
|
||||
class NoCTCP : public ModeHandler
|
||||
{
|
||||
public:
|
||||
NoCTCP(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'C', 0, 0, false, MODETYPE_CHANNEL, false) { }
|
||||
NoCTCP(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'C', PARAM_NONE, MODETYPE_CHANNEL) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -18,7 +18,7 @@
|
||||
class NoNicks : public ModeHandler
|
||||
{
|
||||
public:
|
||||
NoNicks(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'N', 0, 0, false, MODETYPE_CHANNEL, false) { }
|
||||
NoNicks(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'N', PARAM_NONE, MODETYPE_CHANNEL) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -105,9 +105,12 @@ class CommandOjoin : public Command
|
||||
class NetworkPrefix : public ModeHandler
|
||||
{
|
||||
public:
|
||||
NetworkPrefix(InspIRCd* Instance, Module* parent)
|
||||
: ModeHandler(Instance, parent, 'Y', 1, 1, true, MODETYPE_CHANNEL, false, NPrefix, 0, TR_NICK)
|
||||
NetworkPrefix(Module* parent) : ModeHandler(parent, 'Y', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
list = true;
|
||||
prefix = NPrefix;
|
||||
levelrequired = 0xFFFFFFFF;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter)
|
||||
@ -249,7 +252,7 @@ class ModuleOjoin : public Module
|
||||
OnRehash(NULL);
|
||||
|
||||
/* Initialise module variables */
|
||||
np = new NetworkPrefix(Me, this);
|
||||
np = new NetworkPrefix(this);
|
||||
|
||||
if (!ServerInstance->Modes->AddMode(np))
|
||||
{
|
||||
|
@ -19,7 +19,7 @@ class OperChans : public ModeHandler
|
||||
{
|
||||
public:
|
||||
/* This is an oper-only mode */
|
||||
OperChans(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'O', 0, 0, false, MODETYPE_CHANNEL, true) { }
|
||||
OperChans(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'O', PARAM_NONE, MODETYPE_CHANNEL) { oper = true; }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -24,7 +24,13 @@
|
||||
class OperPrefixMode : public ModeHandler
|
||||
{
|
||||
public:
|
||||
OperPrefixMode(InspIRCd* Instance, Module* Creator, char pfx) : ModeHandler(Instance, Creator, 'y', 1, 1, true, MODETYPE_CHANNEL, false, pfx, pfx, TR_NICK) { }
|
||||
OperPrefixMode(InspIRCd* Instance, Module* Creator, char pfx) : ModeHandler(Creator, 'y', PARAM_ALWAYS, MODETYPE_CHANNEL)
|
||||
{
|
||||
list = true;
|
||||
prefix = pfx;
|
||||
levelrequired = OPERPREFIX_VALUE;
|
||||
m_paramtype = TR_NICK;
|
||||
}
|
||||
|
||||
unsigned int GetPrefixRank()
|
||||
{
|
||||
|
@ -83,7 +83,7 @@ static bool WriteDatabase(InspIRCd *ServerInstance)
|
||||
class PermChannel : public ModeHandler
|
||||
{
|
||||
public:
|
||||
PermChannel(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'P', 0, 0, false, MODETYPE_CHANNEL, false) { }
|
||||
PermChannel(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'P', PARAM_NONE, MODETYPE_CHANNEL) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@
|
||||
class Redirect : public ModeHandler
|
||||
{
|
||||
public:
|
||||
Redirect(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'L', 1, 0, false, MODETYPE_CHANNEL, false) { }
|
||||
Redirect(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'L', PARAM_SETONLY, MODETYPE_CHANNEL) { }
|
||||
|
||||
ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string ¶meter)
|
||||
{
|
||||
|
@ -22,7 +22,7 @@ class Channel_r : public ModeHandler
|
||||
{
|
||||
|
||||
public:
|
||||
Channel_r(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'r', 0, 0, false, MODETYPE_CHANNEL, false) { }
|
||||
Channel_r(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'r', PARAM_NONE, MODETYPE_CHANNEL) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
@ -52,7 +52,7 @@ class User_r : public ModeHandler
|
||||
{
|
||||
|
||||
public:
|
||||
User_r(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'r', 0, 0, false, MODETYPE_USER, false) { }
|
||||
User_r(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'r', PARAM_NONE, MODETYPE_USER) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
@ -86,7 +86,7 @@ class AChannel_R : public SimpleChannelModeHandler
|
||||
class AUser_R : public SimpleUserModeHandler
|
||||
{
|
||||
public:
|
||||
AUser_R(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Instance, Creator, 'R') { }
|
||||
AUser_R(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Creator, 'R') { }
|
||||
};
|
||||
|
||||
/** Channel mode +M - unidentified users cannot message channel
|
||||
|
@ -20,7 +20,7 @@
|
||||
class ServProtectMode : public ModeHandler
|
||||
{
|
||||
public:
|
||||
ServProtectMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'k', 0, 0, false, MODETYPE_USER, true) { }
|
||||
ServProtectMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'k', PARAM_NONE, MODETYPE_USER) { oper = true; }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
@ -34,8 +34,6 @@ class ServProtectMode : public ModeHandler
|
||||
*/
|
||||
return MODEACTION_DENY;
|
||||
}
|
||||
|
||||
bool NeedsOper() { return true; }
|
||||
};
|
||||
|
||||
class ModuleServProtectMode : public Module
|
||||
|
@ -20,7 +20,10 @@
|
||||
class SeeWhois : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SeeWhois(InspIRCd* Instance, Module* Creator, bool IsOpersOnly) : ModeHandler(Instance, Creator, 'W', 0, 0, false, MODETYPE_USER, IsOpersOnly) { }
|
||||
SeeWhois(InspIRCd* Instance, Module* Creator, bool IsOpersOnly) : ModeHandler(Creator, 'W', PARAM_NONE, MODETYPE_USER)
|
||||
{
|
||||
oper = IsOpersOnly;
|
||||
}
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -21,7 +21,7 @@
|
||||
class SSLMode : public ModeHandler
|
||||
{
|
||||
public:
|
||||
SSLMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Instance, Creator, 'z', 0, 0, false, MODETYPE_CHANNEL, false) { }
|
||||
SSLMode(InspIRCd* Instance, Module* Creator) : ModeHandler(Creator, 'z', PARAM_NONE, MODETYPE_CHANNEL) { }
|
||||
|
||||
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ class ChannelStripColor : public SimpleChannelModeHandler
|
||||
class UserStripColor : public SimpleUserModeHandler
|
||||
{
|
||||
public:
|
||||
UserStripColor(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Instance, Creator, 'S') { }
|
||||
UserStripColor(InspIRCd* Instance, Module* Creator) : SimpleUserModeHandler(Creator, 'S') { }
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user