2019-07-16 07:13:02 +00:00
|
|
|
|
#ifndef USER_AUTH_
|
|
|
|
|
#define USER_AUTH_
|
|
|
|
|
|
|
|
|
|
#include <time.h>
|
|
|
|
|
|
|
|
|
|
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,
|
2019-08-08 07:33:16 +00:00
|
|
|
|
AUTH_FAIL_DATABASE = 9,
|
2019-07-16 07:13:02 +00:00
|
|
|
|
|
|
|
|
|
} 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"},\
|
2019-08-08 07:33:16 +00:00
|
|
|
|
{ AUTH_ERR, "OtherErr"},\
|
|
|
|
|
{ AUTH_FAIL_DATABASE, "FailWithDatabase"}\
|
2019-07-16 07:13:02 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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; //用户锁定时间
|
2019-07-23 09:52:43 +00:00
|
|
|
|
unsigned short group_id; //用户组id
|
|
|
|
|
//unsigned int fail_num; //用户认证失败次数
|
2019-07-16 07:13:02 +00:00
|
|
|
|
} 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;
|
|
|
|
|
|
|
|
|
|
/* 用户认证 */
|
2019-07-23 09:52:43 +00:00
|
|
|
|
void user_auth_login(char* username, char* password, USER_AUTH_RET* auth_result);
|
2019-07-16 07:13:02 +00:00
|
|
|
|
|
2019-07-23 09:52:43 +00:00
|
|
|
|
/* 用户在线数-1 */
|
2019-07-16 07:13:02 +00:00
|
|
|
|
void reduce_online_num(unsigned short user_id);
|
|
|
|
|
|
2019-07-23 09:52:43 +00:00
|
|
|
|
/* 用户在线节点重置-按用户id, num为user_ids数组长度 */
|
|
|
|
|
void reset_online_by_userid(int *user_ids, int num);
|
|
|
|
|
|
|
|
|
|
/* 用户在线节点重置-按用户组id */
|
|
|
|
|
void reset_online_by_groupid(int *group_ids);
|
|
|
|
|
|
2019-07-16 07:13:02 +00:00
|
|
|
|
#endif
|