X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/0f8db0552e026cb1c9ee311f00472a456c7e06a2..b2ee72e4487d9ec90ff64f63d8f8c3974d96bc5c:/include/channel.h diff --git a/include/channel.h b/include/channel.h index 0f8bd314..76a1b178 100644 --- a/include/channel.h +++ b/include/channel.h @@ -20,8 +20,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA - * - * $Id: channel.h 3580 2007-11-07 23:45:14Z jilles $ */ #ifndef INCLUDED_channel_h @@ -33,6 +31,8 @@ #define MAXMODEPARAMS 4 #define MAXMODEPARAMSSERV 10 +#include + struct Client; /* mode structure for channels */ @@ -73,9 +73,14 @@ struct Channel unsigned int join_count; /* joins within delta */ unsigned int join_delta; /* last ts of join */ - unsigned long bants; + time_t bants; time_t channelts; char *chname; + + struct Client *last_checked_client; + time_t last_checked_ts; + unsigned int last_checked_type; + int last_checked_result; }; struct membership @@ -88,7 +93,7 @@ struct membership struct Client *client_p; unsigned int flags; - unsigned long bants; + time_t bants; }; #define BANLEN 195 @@ -142,6 +147,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define CHFL_BANNED 0x0008 /* cached as banned */ #define CHFL_QUIETED 0x0010 /* cached as being +q victim */ #define ONLY_SERVERS 0x0020 +#define ONLY_OPERS 0x0040 #define ALL_MEMBERS CHFL_PEON #define ONLY_CHANOPS CHFL_CHANOP #define ONLY_CHANOPSVOICED (CHFL_CHANOP|CHFL_VOICE) @@ -187,7 +193,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define IsMember(who, chan) ((who && who->user && \ find_channel_membership(chan, who)) ? 1 : 0) -#define IsChannelName(name) ((name) && (*(name) == '#' || *(name) == '&')) +#define IsChannelName(name) ((name) && (IsChanPrefix(*(name)))) /* extban function results */ #define EXTBAN_INVALID -1 /* invalid mask, false even if negated */ @@ -207,7 +213,7 @@ extern void destroy_channel(struct Channel *); extern int can_send(struct Channel *chptr, struct Client *who, struct membership *); -extern int flood_attack_channel(int p_or_n, struct Client *source_p, +extern bool flood_attack_channel(int p_or_n, struct Client *source_p, struct Channel *chptr, char *chname); extern int is_banned(struct Channel *chptr, struct Client *who, struct membership *msptr, const char *, const char *, const char **); @@ -225,7 +231,7 @@ extern void invalidate_bancache_user(struct Client *); extern void free_channel_list(rb_dlink_list *); -extern int check_channel_name(const char *name); +extern bool check_channel_name(const char *name); extern void channel_member_names(struct Channel *chptr, struct Client *, int show_eon); @@ -254,11 +260,11 @@ void resv_chan_forcepart(const char *name, const char *reason, int temp_time); extern void set_channel_mode(struct Client *client_p, struct Client *source_p, struct Channel *chptr, struct membership *msptr, int parc, const char *parv[]); extern void set_channel_mlock(struct Client *client_p, struct Client *source_p, - struct Channel *chptr, const char *newmlock, int propagate); + struct Channel *chptr, const char *newmlock, bool propagate); extern struct ChannelMode chmode_table[256]; -extern int add_id(struct Client *source_p, struct Channel *chptr, const char *banid, +extern bool add_id(struct Client *source_p, struct Channel *chptr, const char *banid, const char *forward, rb_dlink_list * list, long mode_type); extern struct Ban * del_id(struct Channel *chptr, const char *banid, rb_dlink_list * list, @@ -270,7 +276,7 @@ extern int match_extban(const char *banstr, struct Client *client_p, struct Chan extern int valid_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type); const char * get_extban_string(void); -extern int get_channel_access(struct Client *source_p, struct membership *msptr); +extern int get_channel_access(struct Client *source_p, struct Channel *chptr, struct membership *msptr, int dir, const char *modestr); extern void send_channel_join(struct Channel *chptr, struct Client *client_p);