Mod aaa-12 用户认证数据库获取配置信息,新增用户/用户组去除前后空格
RCA: SOL: 修改人:zhouzian 检视人:zhouzian
This commit is contained in:
parent
341f77d29f
commit
c37bc6e71d
6
Makefile
6
Makefile
|
@ -129,13 +129,13 @@ endif
|
||||||
usermanager:
|
usermanager:
|
||||||
ifeq ($(OPT), clean)
|
ifeq ($(OPT), clean)
|
||||||
$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-auth.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=usermanager-auth
|
$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-auth.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=usermanager-auth
|
||||||
$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-test.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=usermanager-test
|
# $(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-test.Makefile cleanall MLOG=$(MLOG) MAKE_TARGET=usermanager-test
|
||||||
else ifeq ($(OPT), install)
|
else ifeq ($(OPT), install)
|
||||||
$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-auth.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=usermanager-auth
|
$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-auth.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=usermanager-auth
|
||||||
$(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-test.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=usermanager-test
|
# $(MLOG)make $(MAKE_FLAGS) -C Product/build -f user.usermanager-test.Makefile install DIR=$(DIR) MLOG=$(MLOG) MAKE_TARGET=usermanager-test
|
||||||
else
|
else
|
||||||
$(MLOG)make all $(MAKE_FLAGS) -C Product/build -f user.usermanager-auth.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=usermanager-auth
|
$(MLOG)make all $(MAKE_FLAGS) -C Product/build -f user.usermanager-auth.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=usermanager-auth
|
||||||
$(MLOG)make all $(MAKE_FLAGS) -C Product/build -f user.usermanager-test.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=usermanager-test
|
# $(MLOG)make all $(MAKE_FLAGS) -C Product/build -f user.usermanager-test.Makefile MLOG=$(MLOG) DISABLE_WARRING=$(DIS_BUILD_WARRING) MAKE_TARGET=usermanager-test
|
||||||
endif
|
endif
|
||||||
|
|
||||||
configm:
|
configm:
|
||||||
|
|
|
@ -170,6 +170,7 @@ ret_code userecover_config_get_all(uint source,
|
||||||
s2j_delete_struct_obj(temp_user);
|
s2j_delete_struct_obj(temp_user);
|
||||||
UCHAR_FREE(user_db);
|
UCHAR_FREE(user_db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("success user_manager recovering ... \n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
|
@ -1,7 +1,8 @@
|
||||||
#ifndef COMMON_USER_H_
|
#ifndef COMMON_USER_H_
|
||||||
#define COMMON_USER_H_
|
#define COMMON_USER_H_
|
||||||
|
|
||||||
#define SPECHAR(element) (strpbrk((element), "~!@#$%^&*()_+{}|:\"<>?\\,./;\'[]-=`")) //校验特殊字符
|
//#define SPECHAR(element) (strpbrk((element), "~!@#$%^&*()_+{}|:\"<>?\\,./;\'[]-=`")) //校验特殊字符
|
||||||
|
#define SPECHAR(element) (strpbrk((element), "@,;")) //校验特殊字符
|
||||||
#define GETID(ID, NAME1, NAME2) ((((ID) != 0) && (strcmp((NAME1), (NAME2)) == 0)) ? (ID) : 0) //根据name查询ID
|
#define GETID(ID, NAME1, NAME2) ((((ID) != 0) && (strcmp((NAME1), (NAME2)) == 0)) ? (ID) : 0) //根据name查询ID
|
||||||
#define CHECKOUTARG(element) ((NULL == (element) || "" == (element) || SPECHAR(element)) ? true : false) //校验参数
|
#define CHECKOUTARG(element) ((NULL == (element) || "" == (element) || SPECHAR(element)) ? true : false) //校验参数
|
||||||
#define INVALID_INDEX (0)
|
#define INVALID_INDEX (0)
|
||||||
|
@ -91,4 +92,18 @@ do{ \
|
||||||
} else {*id_int_out = 0;} \
|
} else {*id_int_out = 0;} \
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
|
/* 去除字符串前后空格 */
|
||||||
|
#define TRIM_NAME(in, out) \
|
||||||
|
do { \
|
||||||
|
char * c; \
|
||||||
|
int i; \
|
||||||
|
size_t nLen = strlen(in); \
|
||||||
|
i = 0; \
|
||||||
|
while(in[i] == ' ') {i++;} \
|
||||||
|
c = &in[i]; \
|
||||||
|
i = nLen - 1; \
|
||||||
|
while(in[i] == ' ') {i--;} \
|
||||||
|
memcpy(out, c, i + 1 - (c - in)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -11,13 +11,11 @@
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "cjson/cJSON.h"
|
#include "cjson/cJSON.h"
|
||||||
#include "s2j/s2j.h"
|
#include "s2j/s2j.h"
|
||||||
//#include "sg/user/user_manager/user_auth.h"
|
|
||||||
|
|
||||||
extern ARRAY g_user_index_head;
|
extern ARRAY g_user_index_head;
|
||||||
extern USERGROUP g_group_table[GROUP_INDEX_MAX];
|
extern USERGROUP g_group_table[GROUP_INDEX_MAX];
|
||||||
extern exce_mod_user g_user_modfunc_table[USER_ATTRIBUTE_NUM];
|
extern exce_mod_user g_user_modfunc_table[USER_ATTRIBUTE_NUM];
|
||||||
extern void * um_hdbc;
|
extern void * um_hdbc;
|
||||||
//extern USER_AUTH_LIST g_user_auth_ret_table[];
|
|
||||||
USERACCOUNT g_user_table[USER_INDEX_MAX];
|
USERACCOUNT g_user_table[USER_INDEX_MAX];
|
||||||
|
|
||||||
/*初始化参数*/
|
/*初始化参数*/
|
||||||
|
@ -35,10 +33,11 @@ int init_user()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*添加元素-新增用户*/
|
/*添加元素-新增用户*/
|
||||||
void usermanager_add_user(char* uname, char* gname, char* udesp, char* pwd, int multi, int valid, char* valid_begin_time, char* valid_end_time, USERADD* uaddres)
|
void usermanager_add_user(char* uname_in, char* gname, char* udesp, char* pwd, int multi, int valid, char* valid_begin_time, char* valid_end_time, USERADD* uaddres)
|
||||||
{
|
{
|
||||||
time_t begin_time;
|
time_t begin_time;
|
||||||
time_t end_time;
|
time_t end_time;
|
||||||
|
char uname[UNAMESIZE] = {0};
|
||||||
|
|
||||||
if (NULL == uaddres)
|
if (NULL == uaddres)
|
||||||
{
|
{
|
||||||
|
@ -46,7 +45,7 @@ void usermanager_add_user(char* uname, char* gname, char* udesp, char* pwd, int
|
||||||
}
|
}
|
||||||
uaddres->userID = INVALID_INDEX;
|
uaddres->userID = INVALID_INDEX;
|
||||||
|
|
||||||
if (NULL == uname || NULL == gname)
|
if (NULL == uname_in || NULL == gname)
|
||||||
{
|
{
|
||||||
uaddres->result = ADDGROUP_ERROR;
|
uaddres->result = ADDGROUP_ERROR;
|
||||||
return;
|
return;
|
||||||
|
@ -58,19 +57,22 @@ void usermanager_add_user(char* uname, char* gname, char* udesp, char* pwd, int
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 校验用户名和描述长度 */
|
/* 校验用户名和描述长度 */
|
||||||
if (UNAMESIZE < strlen(uname) || 0 >= strlen(uname) || UDESIZE < strlen(udesp))
|
if (UNAMESIZE < strlen(uname_in) || 0 >= strlen(uname_in) || UDESIZE < strlen(udesp))
|
||||||
{
|
{
|
||||||
uaddres->result = ADDUSER_FAIL_LENGTH;
|
uaddres->result = ADDUSER_FAIL_LENGTH;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 校验用户名中不含特殊字符 */
|
/* 校验用户名中不含特殊字符 */
|
||||||
if (SPECHAR(uname))
|
if (SPECHAR(uname_in))
|
||||||
{
|
{
|
||||||
uaddres->result = ADDUSER_FAIL_NAMESPE;
|
uaddres->result = ADDUSER_FAIL_NAMESPE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 去除用户名前后空格 */
|
||||||
|
TRIM_NAME(uname_in, uname);
|
||||||
|
|
||||||
if (NULL == pwd || 0 == strcmp("",pwd))
|
if (NULL == pwd || 0 == strcmp("",pwd))
|
||||||
{
|
{
|
||||||
pwd = "A31as%4Gb";
|
pwd = "A31as%4Gb";
|
||||||
|
@ -957,7 +959,7 @@ void um_getuser_db(char ** user_db)
|
||||||
UNIQUE KEY user_name (user_name) USING BTREE,\
|
UNIQUE KEY user_name (user_name) USING BTREE,\
|
||||||
KEY group_id (group_id) USING BTREE,\
|
KEY group_id (group_id) USING BTREE,\
|
||||||
CONSTRAINT user_account_ibfk_1 FOREIGN KEY (group_id) REFERENCES user_group (id) ON DELETE CASCADE ON UPDATE CASCADE\
|
CONSTRAINT user_account_ibfk_1 FOREIGN KEY (group_id) REFERENCES user_group (id) ON DELETE CASCADE ON UPDATE CASCADE\
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8";
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
||||||
ret_create = create_database_table(USER_MANAGER_DBID, um_hdbc, USER_TABLE, create_user);
|
ret_create = create_database_table(USER_MANAGER_DBID, um_hdbc, USER_TABLE, create_user);
|
||||||
if(DB_RET_OK != ret_create)
|
if(DB_RET_OK != ret_create)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,9 +30,11 @@ int init_group()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 新增用户组 */
|
/* 新增用户组 */
|
||||||
int add_group(char* name, char* description)
|
int add_group(char* name_in, char* description)
|
||||||
{
|
{
|
||||||
if (NULL == name)
|
char name[GNAMESIZE] = {0};
|
||||||
|
|
||||||
|
if (NULL == name_in)
|
||||||
{
|
{
|
||||||
return ADDGROUP_ERROR;
|
return ADDGROUP_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -43,17 +45,20 @@ int add_group(char* name, char* description)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 校验用户组名和描述的长度 */
|
/* 校验用户组名和描述的长度 */
|
||||||
if (GNAMESIZE < strlen(name) || 0 >= strlen(name) || GDESIZE < strlen(description))
|
if (GNAMESIZE < strlen(name_in) || 0 >= strlen(name_in) || GDESIZE < strlen(description))
|
||||||
{
|
{
|
||||||
return ADDGROUP_FAIL_LENGTH;
|
return ADDGROUP_FAIL_LENGTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 校验特殊字符 */
|
/* 校验特殊字符 */
|
||||||
if (SPECHAR(name))
|
if (SPECHAR(name_in))
|
||||||
{
|
{
|
||||||
return ADDGROUP_FAIL_SPECHARS;
|
return ADDGROUP_FAIL_SPECHARS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 去除用户组名前后空格 */
|
||||||
|
TRIM_NAME(name_in, name);
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
re_connect();
|
re_connect();
|
||||||
if(NULL == um_hdbc)
|
if(NULL == um_hdbc)
|
||||||
|
@ -461,7 +466,7 @@ void um_getgroup_db(char ** group_db)
|
||||||
PRIMARY KEY (uuid),\
|
PRIMARY KEY (uuid),\
|
||||||
UNIQUE KEY id (id) USING BTREE,\
|
UNIQUE KEY id (id) USING BTREE,\
|
||||||
UNIQUE KEY gname (gname) USING BTREE\
|
UNIQUE KEY gname (gname) USING BTREE\
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=1059 DEFAULT CHARSET=utf8";
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
||||||
ret_create = create_database_table(USER_MANAGER_DBID, um_hdbc, USER_GROUP_TABLE, create_group);
|
ret_create = create_database_table(USER_MANAGER_DBID, um_hdbc, USER_GROUP_TABLE, create_group);
|
||||||
if(DB_RET_OK != ret_create)
|
if(DB_RET_OK != ret_create)
|
||||||
{
|
{
|
||||||
|
|
|
@ -239,7 +239,7 @@ bool get_config_data(void * auth_hdbc, int * config_data)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
char * select_sql = "SELECT locktime config_lock_time, failcount config_fail_num, timehorizon config_fail_time FROM `authparas` LIMIT 0,1";
|
char * select_sql = "SELECT locktime config_lock_time, failcount config_fail_num, timehorizon config_fail_time FROM authparas LIMIT 0,1";
|
||||||
char * ret_sql = select_datebase_by_number(20, auth_hdbc, "authparas", select_sql, 1, 0, &num, 0);
|
char * ret_sql = select_datebase_by_number(20, auth_hdbc, "authparas", select_sql, 1, 0, &num, 0);
|
||||||
|
|
||||||
if(0 == num || NULL == ret_sql)
|
if(0 == num || NULL == ret_sql)
|
||||||
|
@ -311,7 +311,7 @@ bool get_user_from_database(char* username, void* hdbc, USERACCOUNT* user_info,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
char * select_sql = "SELECT id, group_id, multi_player, valid_always, user_name,password, udescription,valid_begin_time,valid_end_time FROM `user_account`WHERE user_name = ?";
|
char * select_sql = "SELECT id, group_id, multi_player, valid_always, user_name,password, udescription,valid_begin_time,valid_end_time FROM user_account WHERE user_name = ?";
|
||||||
ret_sql = select_datebase_by_number(20, hdbc, "user_account", select_sql, 1, 0, num_sql, 1,
|
ret_sql = select_datebase_by_number(20, hdbc, "user_account", select_sql, 1, 0, num_sql, 1,
|
||||||
DB_DATA_STRING_TYPE, strlen(username)+1, username);
|
DB_DATA_STRING_TYPE, strlen(username)+1, username);
|
||||||
|
|
||||||
|
@ -455,6 +455,7 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
unsigned short user_id, group_id;
|
unsigned short user_id, group_id;
|
||||||
int init_queue_ret; //初始化循环列表的结果
|
int init_queue_ret; //初始化循环列表的结果
|
||||||
int user_valid; //数据库中的数据
|
int user_valid; //数据库中的数据
|
||||||
|
int user_multi;
|
||||||
int config_lock_time = 0; //锁定后的锁定时间,锁定后
|
int config_lock_time = 0; //锁定后的锁定时间,锁定后
|
||||||
int config_fail_num = 0; //规定时间内允许失败的次数,锁定次数,锁定前
|
int config_fail_num = 0; //规定时间内允许失败的次数,锁定次数,锁定前
|
||||||
int config_fail_time = 0; //规定时间,失败的时间范围,锁定前
|
int config_fail_time = 0; //规定时间,失败的时间范围,锁定前
|
||||||
|
@ -498,24 +499,6 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
/* 校验上述的三个参数都要大于0 */
|
/* 校验上述的三个参数都要大于0 */
|
||||||
|
|
||||||
//3、根据用户名查询用户信息-用户id和用户组id
|
//3、根据用户名查询用户信息-用户id和用户组id
|
||||||
// user_info = (USERACCOUNT*)malloc(sizeof(USERACCOUNT));
|
|
||||||
// memset(user_info, 0, sizeof(USERACCOUNT));
|
|
||||||
// if (NULL == user_info)
|
|
||||||
// {
|
|
||||||
// /* 记录日志 */
|
|
||||||
// //printf("user_auth()->user_auth->user_info:error. \n");
|
|
||||||
// auth_result->ret = AUTH_ERR;
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//读取json文件获取数据
|
|
||||||
// get_from_json(username, user_info);
|
|
||||||
// if (NULL == user_info)
|
|
||||||
// {
|
|
||||||
// auth_result->ret = AUTH_FAIL_PASSWD;
|
|
||||||
// xfree(user_info);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/* 数据库查询 */
|
/* 数据库查询 */
|
||||||
bool ret_getuser = get_user_from_database(username, auth_hdbc, &user_info, &sql_num);
|
bool ret_getuser = get_user_from_database(username, auth_hdbc, &user_info, &sql_num);
|
||||||
if(!ret_getuser)
|
if(!ret_getuser)
|
||||||
|
@ -598,7 +581,21 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//7、判断在线用户是否到最大值
|
//7、判断是否允许多用户登陆
|
||||||
|
user_multi = AUTH_MULTI_GET(user_info.multi_valid);
|
||||||
|
if(1 == user_multi)
|
||||||
|
{
|
||||||
|
if(1 == AUTH_RECORD.online_num)
|
||||||
|
{
|
||||||
|
auth_result->ret = AUTH_FAIL_MULTI;
|
||||||
|
|
||||||
|
/* 认证失败处理 */
|
||||||
|
auth_fail_operate(user_id, login_time, config_fail_time);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//8、判断在线用户是否到最大值(100)
|
||||||
if (AUTH_USER_INDEX_MAX - 2 <= AUTH_RECORD.online_num)
|
if (AUTH_USER_INDEX_MAX - 2 <= AUTH_RECORD.online_num)
|
||||||
{
|
{
|
||||||
auth_result->ret = AUTH_FAIL_OVER;
|
auth_result->ret = AUTH_FAIL_OVER;
|
||||||
|
@ -608,7 +605,7 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//8、匹配密码
|
//9、匹配密码
|
||||||
if (0 != strcmp(password, user_info.passwd))
|
if (0 != strcmp(password, user_info.passwd))
|
||||||
{
|
{
|
||||||
auth_result->ret = AUTH_FAIL_PASSWD;
|
auth_result->ret = AUTH_FAIL_PASSWD;
|
||||||
|
@ -618,7 +615,7 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//9、认证成功处理
|
//10、认证成功处理
|
||||||
AUTH_RECORD.group_id = group_id; //更新用户组id
|
AUTH_RECORD.group_id = group_id; //更新用户组id
|
||||||
empty_fail_time_queue(user_id);
|
empty_fail_time_queue(user_id);
|
||||||
AUTH_RECORD.online_num++;
|
AUTH_RECORD.online_num++;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <cjson/cJSON.h>
|
#include <cjson/cJSON.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
#include "common_user.h"
|
#include "common_user.h"
|
||||||
#include "array_index.h"
|
#include "array_index.h"
|
||||||
#include "user_group.h"
|
#include "user_group.h"
|
||||||
|
@ -70,22 +71,8 @@ int main6(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void test()
|
int main5(void)
|
||||||
{
|
{
|
||||||
char *a = "和家亲";
|
|
||||||
char *b = "asd";
|
|
||||||
char *c = "123";
|
|
||||||
printf("%ld .\n",strlen(a));
|
|
||||||
printf("%ld .\n",strlen(b));
|
|
||||||
printf("%ld .\n",strlen(c));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
//test();
|
|
||||||
|
|
||||||
char * testrec;
|
char * testrec;
|
||||||
int testnum;
|
int testnum;
|
||||||
userecover_config_get_all(CONFIG_FROM_RECOVER1,testrec, &testnum);
|
userecover_config_get_all(CONFIG_FROM_RECOVER1,testrec, &testnum);
|
||||||
|
@ -96,6 +83,14 @@ int main(void)
|
||||||
ret_code ret_pro; //执行结果
|
ret_code ret_pro; //执行结果
|
||||||
int outlen = 1; //out数据长度
|
int outlen = 1; //out数据长度
|
||||||
|
|
||||||
|
printf("\n************************************user uuid -> user 详情*******************************************\n");
|
||||||
|
testin = "{\"type\": 3,\"data\":{\"user_id\": 15}}";
|
||||||
|
ret_pro = user_config_get(1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
printf("\n************************************修改 group 描述*******************************************\n");
|
printf("\n************************************修改 group 描述*******************************************\n");
|
||||||
testin = "{\"type\": 2,\"data\": {\"gid\": 1013,\"gdescription\": \"修改修改用户组的描述修改修改用户组的描述一二\"}}";
|
testin = "{\"type\": 2,\"data\": {\"gid\": 1013,\"gdescription\": \"修改修改用户组的描述修改修改用户组的描述一二\"}}";
|
||||||
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
@ -107,8 +102,6 @@ int main(void)
|
||||||
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
printf("************************************新增 group*******************************************\n");
|
printf("************************************新增 group*******************************************\n");
|
||||||
testin = "{\"type\": 0,\"data\": {\"gname\": \"group011\",\"gdescription\": \"描述group011\"}}";
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group011\",\"gdescription\": \"描述group011\"}}";
|
||||||
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
@ -133,12 +126,44 @@ int main(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main4(void)
|
void trim(char *out, char *in)
|
||||||
{
|
{
|
||||||
|
char * c;
|
||||||
|
int i;
|
||||||
|
size_t nLen = strlen(in);
|
||||||
|
i = 0;
|
||||||
|
while(in[i] == ' ')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
c = &in[i]; // 找到第一个非空字符指针
|
||||||
|
i = nLen - 1;
|
||||||
|
while(in[i] == ' ')
|
||||||
|
{
|
||||||
|
i--; // 找到最后一个非空字符
|
||||||
|
}
|
||||||
|
memcpy(out, c, i + 1 - (c - in));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
char *name1 = " xi阿斯蒂芬就aom ig ";
|
||||||
|
int len = strlen(name1);
|
||||||
|
char name2[100] = {0};
|
||||||
|
printf("name1=%s.\n",name1);
|
||||||
|
TRIM_NAME(name1, name2);
|
||||||
|
printf("name1=%s.\n",name2);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
USER_AUTH_RET user_ret;
|
USER_AUTH_RET user_ret;
|
||||||
|
|
||||||
user_auth_login("user04", "A31as%4G", &user_ret);
|
user_auth_login("user04", "A31as%4Gb", &user_ret);
|
||||||
user_auth_login("user04", "A31as%4G", &user_ret);
|
user_auth_login("user04", "A31as%4Gb", &user_ret);
|
||||||
user_auth_login("user04", "A31as%4G", &user_ret);
|
user_auth_login("user04", "A31as%4G", &user_ret);
|
||||||
user_auth_login("user04", "A31as%4G", &user_ret);
|
user_auth_login("user04", "A31as%4G", &user_ret);
|
||||||
user_auth_login("user04", "A31as%4G", &user_ret);
|
user_auth_login("user04", "A31as%4G", &user_ret);
|
||||||
|
|
|
@ -63,9 +63,9 @@ do { \
|
||||||
USER_AUTH_LIST g_user_auth_ret_table[AUTH_USER_INDEX_MAX] = { 0 };
|
USER_AUTH_LIST g_user_auth_ret_table[AUTH_USER_INDEX_MAX] = { 0 };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* config_lock_time 锁定后-时间,单位(分钟)
|
* g_config_lock_time 锁定后-时间,单位(分钟)
|
||||||
* config_fail_num 锁定前-次数
|
* g_config_fail_num 锁定前-次数
|
||||||
* config_fail_time 锁定前-时间,单位(分钟)
|
* g_config_fail_time 锁定前-时间,单位(分钟)
|
||||||
*/
|
*/
|
||||||
static int g_config_lock_time, g_config_fail_num, g_config_fail_time;
|
static int g_config_lock_time, g_config_fail_num, g_config_fail_time;
|
||||||
|
|
||||||
|
@ -231,6 +231,77 @@ static void auth_fail_operate(unsigned short user_id, time_t login_time, int con
|
||||||
// user_info = NULL;
|
// user_info = NULL;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
bool get_config_data(void * auth_hdbc, int * config_data)
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
if(NULL == auth_hdbc || NULL == config_data)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * select_sql = "SELECT locktime config_lock_time, failcount config_fail_num, timehorizon config_fail_time FROM authparas LIMIT 0,1";
|
||||||
|
char * ret_sql = select_datebase_by_number(20, auth_hdbc, "authparas", select_sql, 1, 0, &num, 0);
|
||||||
|
|
||||||
|
if(0 == num || NULL == ret_sql)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * root = cJSON_Parse(ret_sql);
|
||||||
|
if(!root)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * data = cJSON_GetObjectItem(root, "data");
|
||||||
|
if(!data)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int data_num = cJSON_GetArraySize(data);
|
||||||
|
if (1 != data_num)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * user_json = cJSON_GetArrayItem(data, 0);
|
||||||
|
if(!user_json)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 解析各个数据项 */
|
||||||
|
cJSON * config_lock_time = cJSON_GetObjectItem(user_json, "config_lock_time");
|
||||||
|
if(!config_lock_time)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config_data[0] = config_lock_time->valueint;
|
||||||
|
|
||||||
|
cJSON * config_fail_num = cJSON_GetObjectItem(user_json, "config_fail_num");
|
||||||
|
if(!config_fail_num)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config_data[1] = config_fail_num->valueint;
|
||||||
|
|
||||||
|
cJSON * config_fail_time = cJSON_GetObjectItem(user_json, "config_fail_time");
|
||||||
|
if(!config_fail_time)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config_data[2] = config_fail_time->valueint;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool get_user_from_database(char* username, void* hdbc, USERACCOUNT* user_info, int* num_sql)
|
bool get_user_from_database(char* username, void* hdbc, USERACCOUNT* user_info, int* num_sql)
|
||||||
{
|
{
|
||||||
char * ret_sql = NULL;
|
char * ret_sql = NULL;
|
||||||
|
@ -240,7 +311,7 @@ bool get_user_from_database(char* username, void* hdbc, USERACCOUNT* user_info,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
char * select_sql = "SELECT id, group_id, multi_player, valid_always, user_name,password, udescription,valid_begin_time,valid_end_time FROM `user_account`WHERE user_name = ?";
|
char * select_sql = "SELECT id, group_id, multi_player, valid_always, user_name,password, udescription,valid_begin_time,valid_end_time FROM user_account WHERE user_name = ?";
|
||||||
ret_sql = select_datebase_by_number(20, hdbc, "user_account", select_sql, 1, 0, num_sql, 1,
|
ret_sql = select_datebase_by_number(20, hdbc, "user_account", select_sql, 1, 0, num_sql, 1,
|
||||||
DB_DATA_STRING_TYPE, strlen(username)+1, username);
|
DB_DATA_STRING_TYPE, strlen(username)+1, username);
|
||||||
|
|
||||||
|
@ -384,6 +455,7 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
unsigned short user_id, group_id;
|
unsigned short user_id, group_id;
|
||||||
int init_queue_ret; //初始化循环列表的结果
|
int init_queue_ret; //初始化循环列表的结果
|
||||||
int user_valid; //数据库中的数据
|
int user_valid; //数据库中的数据
|
||||||
|
int user_multi;
|
||||||
int config_lock_time = 0; //锁定后的锁定时间,锁定后
|
int config_lock_time = 0; //锁定后的锁定时间,锁定后
|
||||||
int config_fail_num = 0; //规定时间内允许失败的次数,锁定次数,锁定前
|
int config_fail_num = 0; //规定时间内允许失败的次数,锁定次数,锁定前
|
||||||
int config_fail_time = 0; //规定时间,失败的时间范围,锁定前
|
int config_fail_time = 0; //规定时间,失败的时间范围,锁定前
|
||||||
|
@ -412,15 +484,18 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
}
|
}
|
||||||
|
|
||||||
//2、数据库查询配置数据
|
//2、数据库查询配置数据
|
||||||
/*if (false)
|
int config_data[3] = {0,0,0};
|
||||||
|
|
||||||
|
bool ret_getconfig = get_config_data(auth_hdbc, config_data);
|
||||||
|
if (!ret_getconfig)
|
||||||
{
|
{
|
||||||
auth_result->ret = AUTH_FAIL_LACKINFO;
|
auth_result->ret = AUTH_FAIL_LACKINFO;
|
||||||
return auth_result;
|
return;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
config_lock_time = 2;
|
config_lock_time = config_data[0];
|
||||||
config_fail_num = 5;
|
config_fail_num = config_data[1];
|
||||||
config_fail_time = 40;
|
config_fail_time = config_data[2];
|
||||||
/* 校验上述的三个参数都要大于0 */
|
/* 校验上述的三个参数都要大于0 */
|
||||||
|
|
||||||
//3、根据用户名查询用户信息-用户id和用户组id
|
//3、根据用户名查询用户信息-用户id和用户组id
|
||||||
|
@ -507,7 +582,21 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//7、判断在线用户是否到最大值
|
//7、判断是否允许多用户登陆
|
||||||
|
user_multi = AUTH_MULTI_GET(user_info.multi_valid);
|
||||||
|
if(1 == user_multi)
|
||||||
|
{
|
||||||
|
if(1 == AUTH_RECORD.online_num)
|
||||||
|
{
|
||||||
|
auth_result->ret = AUTH_FAIL_MULTI;
|
||||||
|
|
||||||
|
/* 认证失败处理 */
|
||||||
|
auth_fail_operate(user_id, login_time, config_fail_time);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//8、判断在线用户是否到最大值(100)
|
||||||
if (AUTH_USER_INDEX_MAX - 2 <= AUTH_RECORD.online_num)
|
if (AUTH_USER_INDEX_MAX - 2 <= AUTH_RECORD.online_num)
|
||||||
{
|
{
|
||||||
auth_result->ret = AUTH_FAIL_OVER;
|
auth_result->ret = AUTH_FAIL_OVER;
|
||||||
|
@ -517,7 +606,7 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//8、匹配密码
|
//9、匹配密码
|
||||||
if (0 != strcmp(password, user_info.passwd))
|
if (0 != strcmp(password, user_info.passwd))
|
||||||
{
|
{
|
||||||
auth_result->ret = AUTH_FAIL_PASSWD;
|
auth_result->ret = AUTH_FAIL_PASSWD;
|
||||||
|
@ -527,7 +616,7 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//9、认证成功处理
|
//10、认证成功处理
|
||||||
AUTH_RECORD.group_id = group_id; //更新用户组id
|
AUTH_RECORD.group_id = group_id; //更新用户组id
|
||||||
empty_fail_time_queue(user_id);
|
empty_fail_time_queue(user_id);
|
||||||
AUTH_RECORD.online_num++;
|
AUTH_RECORD.online_num++;
|
||||||
|
|
Loading…
Reference in New Issue