X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.h;h=638a77f2777eb93582fb7852cdc73af509deaf49;hb=80d9ed728be4b02ac483f3339cbb184f6602d15b;hp=d6470e2455c653a4d32a0eaa151204932c7d3008;hpb=39591817d2fa2af096116e47edf7f5369c779e5a;p=srvx.git diff --git a/src/chanserv.h b/src/chanserv.h index d6470e2..638a77f 100644 --- a/src/chanserv.h +++ b/src/chanserv.h @@ -45,6 +45,7 @@ enum levelOption { lvlUserInfo, lvlInviteMe, lvlTopicSnarf, + lvlVote, NUM_LEVEL_OPTIONS }; @@ -66,6 +67,7 @@ enum charOption { #define CHANNEL_PEON_INVITE 0x00000080 /* (1 << 7) - DEPRECATED */ #define CHANNEL_OFFCHANNEL 0x00000100 /* (1 << 8) */ #define CHANNEL_UNREVIEWED 0x00000200 /* (1 << 9) */ +#define CHANNEL_ADVTOPIC 0x00000400 /* (1 << 10) */ /* Flags with values over 0x20000000 or (1 << 29) will not work * because chanData.flags is a 30-bit field. */ @@ -74,6 +76,8 @@ enum charOption { #define IsSuspended(x) ((x)->flags & CHANNEL_SUSPENDED) #define IsOffChannel(x) (((x)->flags & CHANNEL_OFFCHANNEL) && (off_channel > 1)) +#define MAXADVTOPICENTRIES 9 + struct chanData { struct chanNode *channel; @@ -91,6 +95,10 @@ struct chanData char *registrar; char *topic_mask; + char *vote; + unsigned int vote_start; + dict_t vote_options; + unsigned int flags : 30; unsigned int may_opchan : 1; unsigned int max; @@ -101,10 +109,13 @@ struct chanData unsigned short lvlOpts[NUM_LEVEL_OPTIONS]; unsigned char chOpts[NUM_CHAR_OPTIONS]; + char *advtopic[MAXADVTOPICENTRIES]; + struct userData *users; struct banData *bans; struct dict *notes; struct suspended *suspended; + struct giveownership *giveownership; struct chanData *prev; struct chanData *next; }; @@ -129,6 +140,9 @@ struct userData unsigned int present : 1; unsigned int flags : USER_FLAGS_SIZE; + unsigned short voted; + unsigned int votefor; + /* linked list of userDatas for a chanData */ struct userData *prev; struct userData *next; @@ -164,6 +178,29 @@ struct suspended struct suspended *previous; }; +struct vote_option +{ + char *name; + unsigned int option_id; + char *option_str; + unsigned int voted; +}; + +struct giveownership +{ + char *staff_issuer; + + char *old_owner; + + char *target; + unsigned short target_access; + + time_t issued; + char *reason; + + struct giveownership *previous; +}; + struct do_not_register { char chan_name[CHANNELLEN+1]; @@ -182,5 +219,7 @@ struct channelList *chanserv_support_channels(void); unsigned short user_level_from_name(const char *name, unsigned short clamp_level); struct do_not_register *chanserv_is_dnr(const char *chan_name, struct handle_info *handle); int check_user_level(struct chanNode *channel, struct userNode *user, enum levelOption opt, int allow_override, int exempt_owner); +struct mod_chanmode *find_matching_bans(struct banList *bans, struct userNode *actee, const char *mask); +void handle_new_channel_created(char *chan, struct userNode *user); #endif