X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/82f8e812f5f3df9a23b58dff2024f83237280b9d..07b7b659c16665ce33b058d1a06a7a420850ceb9:/include/channel.h diff --git a/include/channel.h b/include/channel.h index a6fa1a1..2573e19 100644 --- a/include/channel.h +++ b/include/channel.h @@ -72,6 +72,8 @@ struct Channel unsigned int join_count; /* joins within delta */ unsigned int join_delta; /* last ts of join */ + struct Dictionary *c_metadata; + unsigned long bants; time_t channelts; char *chname; @@ -90,6 +92,13 @@ struct membership unsigned long bants; }; +struct c_Metadata +{ + const char *name; + const char *value; + time_t timevalue; +}; + #define BANLEN 195 struct Ban { @@ -114,6 +123,7 @@ struct ChModeChange int caps; int nocaps; int mems; + int override; struct Client *client; }; @@ -149,6 +159,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define ONLY_SERVERS 0x0020 #define CHFL_HALFOP 0x0040 #define CHFL_OWNER 0x0080 +#define ONLY_OPERS 0x0100 #define ALL_MEMBERS CHFL_PEON #define ONLY_CHANOPS CHFL_CHANOP #define ONLY_CHANOPSVOICED (CHFL_CHANOP|CHFL_VOICE) @@ -175,12 +186,14 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define MODE_FREETARGET 0x1000 /* can be forwarded to without authorization */ #define MODE_DISFORWARD 0x2000 /* disable channel forwarding */ #define MODE_NOCTCP 0x8000 /* Block CTCPs directed to this channel */ -#define MODE_NONOTICE 0x16000 /* Block notices directed to this channel */ -#define MODE_NOACTION 0x32000 /* Block CTCP ACTION directed to this channel */ -#define MODE_NOKICK 0x64000 /* Disable /kick on this channel */ -#define MODE_NONICK 0x128000 /* Disable /nick for anyone on this channel */ -#define MODE_NOCAPS 0x256000 /* Block messages in all capital letters */ -#define MODE_NOREJOIN 0x512000 /* Block rejoin immediately after kick */ +#define MODE_NONOTICE 0x10000 /* Block notices directed to this channel */ +#define MODE_NOACTION 0x20000 /* Block CTCP ACTION directed to this channel */ +#define MODE_NOKICK 0x40000 /* Disable /kick on this channel */ +#define MODE_NONICK 0x80000 /* Disable /nick for anyone on this channel */ +#define MODE_NOCAPS 0x100000 /* Block messages in all capital letters */ +#define MODE_NOREJOIN 0x200000 /* Block rejoin immediately after kick */ +#define MODE_NOREPEAT 0x400000 /* Block repeat messages */ +#define MODE_NOOPERKICK 0x800000 /* disallow kicking opers */ #define CHFL_BAN 0x10000000 /* ban channel flag */ #define CHFL_EXCEPTION 0x20000000 /* exception to ban channel flag */ @@ -292,4 +305,15 @@ extern void user_join(struct Client * client_p, struct Client * source_p, const extern void do_join_0(struct Client *client_p, struct Client *source_p); extern int check_channel_name_loc(struct Client *source_p, const char *name); +extern struct Metadata *channel_metadata_add(struct Channel *target, const char *name, const char *value, int propegate); +extern void channel_metadata_delete(struct Channel *target, const char *name, int propegate); +extern struct Metadata *channel_metadata_find(struct Channel *target, const char *name); + +extern struct Metadata *channel_metadata_add(struct Channel *target, const char *name, const char *value, int propegate); +extern struct Metadata *channel_metadata_time_add(struct Channel *target, const char *name, time_t value); +extern void channel_metadata_delete(struct Channel *target, const char *name, int propegate); +extern struct Metadata *channel_metadata_find(struct Channel *target, const char *name); +extern void channel_metadata_clear(struct Channel *target); + + #endif /* INCLUDED_channel_h */