X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=include%2Fchannel.h;h=cad2de035ef81d6db02b0d4f65fea3f69f5fb434;hb=bb5d6a24f02155e2252474809cd5e7161fa29b93;hp=6984250e62ea1dd9143d7df2abeaf3843b151dae;hpb=275e1f928a44325a7ea1f0803d0ad23dc4e92d93;p=ircu2.10.12-pk.git diff --git a/include/channel.h b/include/channel.h index 6984250..cad2de0 100644 --- a/include/channel.h +++ b/include/channel.h @@ -121,7 +121,7 @@ typedef signed long long long64; #define MODE_UPASS 0x100000 #define MODE_APASS 0x200000 #define MODE_WASDELJOINS 0x400000 /**< Not DELJOINS, but some joins pending */ -#define MODE_EXCEPTION 0x800000 /**< ban exceptions */ + #define MODE_NOAMSGS 0x1000000 /**< No multi target messages */ #define MODE_NONOTICE 0x2000000 /**< No channel notices */ #define MODE_QUARANTINE 0x4000000 /**< No channel notices */ @@ -130,14 +130,16 @@ typedef signed long long long64; #define MODE_ADD 0x40000000 #define MODE_ACCESS 0x100000000LLU /**< ChanServ access */ #define MODE_AUDITORIUM 0x200000000LLU /**< +u Auditorium */ +#define MODE_NOFLOOD 0x400000000LLU /**< +f NoFlood */ +#define MODE_SSLCHAN 0x800000000LLU /**< +S SSL Channel */ /** mode flags which take another parameter (With PARAmeterS) */ -#define MODE_WPARAS (MODE_CHANOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS|MODE_EXCEPTION|MODE_ALTCHAN|MODE_ACCESS) +#define MODE_WPARAS (MODE_CHANOP|MODE_VOICE|MODE_BAN|MODE_KEY|MODE_LIMIT|MODE_APASS|MODE_UPASS|MODE_ALTCHAN|MODE_ACCESS|MODE_NOFLOOD) /** Available Channel modes */ -#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AcCbiklmMnNopstuUvrDRzQu" : "cCbiklmMnNopstuvrDRzQu" +#define infochanmodes feature_bool(FEAT_OPLEVELS) ? "AcCbiklmMnNopsStuUvrDRzQu" : "cCbiklmMnNopsStuvrDRzQu" /** Available Channel modes that take parameters */ -#define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbkloUvFa" : "bklovFa" +#define infochanmodeswithparams feature_bool(FEAT_OPLEVELS) ? "AbfkloUvFa" : "bfklovFa" #define HoldChannel(x) (!(x)) /** name invisible */ @@ -205,10 +207,20 @@ struct Membership { struct Membership* prev_member; /**< The previous user on this channel*/ struct Membership* next_channel; /**< Next channel this user is on */ struct Membership* prev_channel; /**< Previous channel this user is on*/ + struct MemberFlood* flood; /**< count's how many times a user sent something (+f floodcontrol) */ unsigned int status; /**< Flags for op'd, voice'd, etc */ unsigned short oplevel; /**< Op level */ }; +#define FLFL_CHANOP 0x01 +#define FLFL_VOICE 0x02 +#define FLFL_NOFLOOD 0x04 + +struct MemberFlood { + struct MemberFlood* next_memberflood; + time_t time; +}; + #define MAXOPLEVELDIGITS 3 #define MAXOPLEVEL 999 @@ -251,6 +263,8 @@ struct Mode { ulong64 mode; unsigned int limit; unsigned int access; + char noflood[11]; //max [@+]999:9999 + unsigned int noflood_value; //3bit for @+, 10bit first field, 14bit second field = 27bit of 32bit char key[KEYLEN + 1]; char upass[KEYLEN + 1]; char apass[KEYLEN + 1]; @@ -400,7 +414,7 @@ extern struct Client* find_chasing(struct Client* sptr, const char* user, int* c void add_invite(struct Client *cptr, struct Channel *chptr); int number_of_zombies(struct Channel *chptr); -extern const char* find_no_nickchange_channel(struct Client* cptr); +extern const char* find_no_nickchange_channel(struct Client* cptr, const char* new_nick); extern struct Membership* find_channel_member(struct Client* cptr, struct Channel* chptr); extern int member_can_send_to_channel(struct Membership* member, int reveal); extern int client_can_send_to_channel(struct Client *cptr, struct Channel *chptr, int reveal); @@ -469,5 +483,6 @@ extern int apply_ban(struct Ban **banlist, struct Ban *newban, int free); extern void free_ban(struct Ban *ban); extern signed int destruct_nonpers_channel(struct Channel *chptr); extern int ext_amsg_block(struct Client *cptr, struct Channel *chptr, const char *msg); +extern int ext_noflood_block(struct Client *cptr, struct Channel *chptr); #endif /* INCLUDED_channel_h */