X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.h;h=336671511d7159f576eca8772f711a366a18ddc1;hb=18a22dac8302182719e030976fa1c045bde8a461;hp=8b7edf382118267f5c03e680a2cf14a8ceb76cad;hpb=47230dc80d094d72a4a891afd2ad5854a9552931;p=srvx.git diff --git a/src/chanserv.h b/src/chanserv.h index 8b7edf3..3366715 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; @@ -83,6 +87,7 @@ struct chanData unsigned long visited; unsigned long limitAdjusted; unsigned long ownerTransfer; + unsigned long expiry; char *topic; char *greeting; @@ -90,19 +95,27 @@ 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; + unsigned int max_time; unsigned int last_refresh; unsigned short banCount; unsigned short userCount; 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; }; @@ -123,10 +136,14 @@ struct userData char *info; unsigned long seen; + time_t expires; /* suspend */ unsigned short access; 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; @@ -162,6 +179,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]; @@ -180,5 +220,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