X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.c;h=7a620326a28578406bd18700c63f054a011acb1d;hb=6714c5d0a17782895f5662fea81774a27362bd2b;hp=4e41784b0aa289a7506251bd28bb6667740dcf5a;hpb=d6bdd80f3ae9954463739bb7b2af649b7063ac30;p=srvx.git diff --git a/src/chanserv.c b/src/chanserv.c index 4e41784..7a62032 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -43,6 +43,7 @@ #define KEY_DNR_EXPIRE_FREQ "dnr_expire_freq" #define KEY_MAX_CHAN_USERS "max_chan_users" #define KEY_MAX_CHAN_BANS "max_chan_bans" +#define KEY_MIN_TIME_BANS "min_time_bans" #define KEY_NICK "nick" #define KEY_OLD_CHANSERV_NAME "old_chanserv_name" #define KEY_8BALL_RESPONSES "8ball" @@ -581,6 +582,7 @@ static struct unsigned int max_owned; unsigned int max_chan_users; unsigned int max_chan_bans; + unsigned int min_time_bans; unsigned int max_userinfo_length; unsigned int revoke_mode_a; @@ -3476,7 +3478,7 @@ eject_user(struct userNode *user, struct chanNode *channel, unsigned int argc, c { duration = ParseInterval(argv[2]); - if(duration < 15) + if(duration < chanserv_conf.min_time_bans) { reply("CSMSG_DURATION_TOO_LOW"); free(ban); @@ -4167,6 +4169,8 @@ cmd_list_users(struct userNode *user, struct chanNode *channel, unsigned int arg ary[1] = uData->handle->handle; if(uData->present) ary[2] = "Here"; + else if(HANDLE_FLAGGED(uData->handle, NETWORK)) + ary[2] = "Here"; else if(!uData->seen) ary[2] = "Never"; else @@ -4174,6 +4178,12 @@ cmd_list_users(struct userNode *user, struct chanNode *channel, unsigned int arg ary[2] = strdup(ary[2]); if(IsUserSuspended(uData)) ary[3] = "Suspended"; + else if(HANDLE_FLAGGED(uData->handle, OPER)) + ary[3] = "Operator"; + else if(HANDLE_FLAGGED(uData->handle, HELPING)) + ary[3] = "Staff"; + else if(HANDLE_FLAGGED(uData->handle, NETWORK)) + ary[3] = "Network"; else if(HANDLE_FLAGGED(uData->handle, FROZEN)) ary[3] = "Vacation"; else if(HANDLE_FLAGGED(uData->handle, BOT)) @@ -4421,10 +4431,10 @@ static CHANSERV_FUNC(cmd_topic) if(!isdigit(topic[pos])) break; } - if(advtopic_index < 0 || advtopic_index > MAXADVTOPICENTRIES) + if(advtopic_index < 0 || advtopic_index >= MAXADVTOPICENTRIES) { //invalid id! - reply("CSMSG_ADVTOPIC_INVALID_ID", advtopic_index); + reply("CSMSG_ADVTOPIC_INVALID_ID", advtopic_index+1); return 0; } if(cData->advtopic[advtopic_index]) @@ -7849,6 +7859,8 @@ chanserv_conf_read(void) chanserv_conf.max_chan_users = str ? atoi(str) : 512; str = database_get_data(conf_node, KEY_MAX_CHAN_BANS, RECDB_QSTRING); chanserv_conf.max_chan_bans = str ? atoi(str) : 512; + str = database_get_data(conf_node, KEY_MIN_TIME_BANS, RECDB_QSTRING); + chanserv_conf.min_time_bans = str ? atoi(str) : 5; str = database_get_data(conf_node, KEY_MAX_USERINFO_LENGTH, RECDB_QSTRING); chanserv_conf.max_userinfo_length = str ? atoi(str) : 400; str = database_get_data(conf_node, KEY_NICK, RECDB_QSTRING);