X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fbuiltinmodes.h;h=62ccaf62d18dd95fd9c2b42983fffdc09892722a;hb=18d5754871de9f0de35c06fbbe4fce6c55c1752f;hp=31b208d52bc3ed756a2e91c9ec0ac87ff846fd3e;hpb=882084defcc43c876ecb10e30086b63ac074fcad;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/builtinmodes.h b/include/builtinmodes.h index 31b208d52..62ccaf62d 100644 --- a/include/builtinmodes.h +++ b/include/builtinmodes.h @@ -35,114 +35,50 @@ class ModeChannelBan : public ListModeBase } }; -/** Channel mode +i - */ -class ModeChannelInviteOnly : public SimpleChannelModeHandler -{ - public: - ModeChannelInviteOnly() : SimpleChannelModeHandler(NULL, "inviteonly", 'i') - { - } -}; - /** Channel mode +k */ -class ModeChannelKey : public ModeHandler +class ModeChannelKey : public ParamMode { + static const std::string::size_type maxkeylen = 32; public: ModeChannelKey(); ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding); + void SerializeParam(Channel* chan, const std::string* key, std::string& out); + ModeAction OnSet(User* source, Channel* chan, std::string& param); }; /** Channel mode +l */ -class ModeChannelLimit : public ParamChannelModeHandler +class ModeChannelLimit : public ParamMode { public: ModeChannelLimit(); - bool ParamValidate(std::string& parameter); bool ResolveModeConflict(std::string &their_param, const std::string &our_param, Channel* channel); -}; - -/** Channel mode +m - */ -class ModeChannelModerated : public SimpleChannelModeHandler -{ - public: - ModeChannelModerated() : SimpleChannelModeHandler(NULL, "moderated", 'm') - { - } -}; - -/** Channel mode +n - */ -class ModeChannelNoExternal : public SimpleChannelModeHandler -{ - public: - ModeChannelNoExternal() : SimpleChannelModeHandler(NULL, "noextmsg", 'n') - { - } + void SerializeParam(Channel* chan, intptr_t n, std::string& out); + ModeAction OnSet(User* source, Channel* channel, std::string& parameter); }; /** Channel mode +o */ -class ModeChannelOp : public ModeHandler -{ - private: - public: - ModeChannelOp(); - ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding); - unsigned int GetPrefixRank(); -}; - -/** Channel mode +p - */ -class ModeChannelPrivate : public SimpleChannelModeHandler +class ModeChannelOp : public PrefixMode { public: - ModeChannelPrivate() : SimpleChannelModeHandler(NULL, "private", 'p') - { - } -}; - -/** Channel mode +s - */ -class ModeChannelSecret : public SimpleChannelModeHandler -{ - public: - ModeChannelSecret() : SimpleChannelModeHandler(NULL, "secret", 's') - { - } -}; - -/** Channel mode +t - */ -class ModeChannelTopicOps : public SimpleChannelModeHandler -{ - public: - ModeChannelTopicOps() : SimpleChannelModeHandler(NULL, "topiclock", 't') + ModeChannelOp() + : PrefixMode(NULL, "op", 'o', OP_VALUE, '@') { + levelrequired = OP_VALUE; } }; /** Channel mode +v */ -class ModeChannelVoice : public ModeHandler +class ModeChannelVoice : public PrefixMode { - private: public: - ModeChannelVoice(); - ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding); - unsigned int GetPrefixRank(); -}; - -/** User mode +i - */ -class ModeUserInvisible : public SimpleUserModeHandler -{ - public: - ModeUserInvisible() : SimpleUserModeHandler(NULL, "invisible", 'i') + ModeChannelVoice() + : PrefixMode(NULL, "voice", 'v', VOICE_VALUE, '+') { + levelrequired = HALFOP_VALUE; } }; @@ -150,32 +86,24 @@ class ModeUserInvisible : public SimpleUserModeHandler */ class ModeUserServerNoticeMask : public ModeHandler { - /** Create a displayable mode string for this users snomasks - * @param user The user whose notice masks to format - * @return The notice mask character sequence - */ - std::string FormatNoticeMasks(User* user); - /** Process a snomask modifier string, e.g. +abc-de * @param user The target user - * @param sm A sequence of notice mask characters + * @param input A sequence of notice mask characters * @return The cleaned mode sequence which can be output, * e.g. in the above example if masks c and e are not * valid, this function will return +ab-d */ - std::string ProcessNoticeMasks(User* user, const char *sm); - - /** Changed a specific notice mask value - * @param user The target user - * @param sm The server notice mask to change - * @param value An on/off value for this mask - */ - void SetNoticeMask(User* user, unsigned char sm, bool value); + std::string ProcessNoticeMasks(User* user, const std::string& input); public: ModeUserServerNoticeMask(); ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding); void OnParameterMissing(User* user, User* dest, Channel* channel); + + /** Create a displayable mode string of the snomasks set on a given user + * @param user The user whose notice masks to format + * @return The notice mask character sequence + */ std::string GetUserParameter(User* user); }; @@ -187,13 +115,3 @@ class ModeUserOperator : public ModeHandler ModeUserOperator(); ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding); }; - -/** User mode +w - */ -class ModeUserWallops : public SimpleUserModeHandler -{ - public: - ModeUserWallops() : SimpleUserModeHandler(NULL, "wallops", 'w') - { - } -};