#ifndef USER_AUTH_ #define USER_AUTH_ #include typedef enum { AUTH_SUCCESS = 0, AUTH_FAIL_PASSWD = 1, AUTH_FAIL_VALID = 2, AUTH_FAIL_MULTI = 3, AUTH_FAIL_LOCK = 4, AUTH_FAIL_LACKINFO = 5, AUTH_FAIL_INPUT = 6, AUTH_FAIL_OVER = 7, AUTH_ERR = 8, AUTH_FAIL_DATABASE = 9, } auth_ret; #define USER_AUTH_RET_ERROR_DISC \ { \ { AUTH_SUCCESS, "SUCCESS" },\ { AUTH_FAIL_PASSWD, "ErrorUsernameOrPasswd" },\ { AUTH_FAIL_VALID, "NotInValidTime" },\ { AUTH_FAIL_MULTI, "OutMaxOnlineNum" },\ { AUTH_FAIL_LOCK, "UserIsLocked" },\ { AUTH_FAIL_LACKINFO, "LackConfigInfo" },\ { AUTH_FAIL_INPUT, "InputError"},\ { AUTH_FAIL_OVER, "OverMaxOnlineNum"},\ { AUTH_ERR, "OtherErr"},\ { AUTH_FAIL_DATABASE, "FailWithDatabase"}\ } typedef struct user_auth_list { time_t* fail_time; //循环队列存储认证失败时间点 int front; //循环队列头 int rear; //循环队列尾 int max_size; //循环队列的最大存储空间,锁定次数+1(config_fail_num + 1) unsigned int online_num; //用户上线数量 time_t lock_time; //用户锁定时间 unsigned short group_id; //用户组id //unsigned int fail_num; //用户认证失败次数 } USER_AUTH_LIST; typedef struct user_auth_ret { auth_ret ret; unsigned short user_id; unsigned short group_id; time_t remain_lock_time; } USER_AUTH_RET; /* 用户认证 */ void user_auth_login(char* username, char* password, USER_AUTH_RET* auth_result); /* 用户在线数-1 */ void reduce_online_num(unsigned short user_id); /* 用户在线节点重置-按用户id, num为user_ids数组长度 */ void reset_online_by_userid(int *user_ids, int num); /* 用户在线节点重置-按用户组id */ void reset_online_by_groupid(int *group_ids); #endif