Mod aaa-12 新增创建表,修改lighttpd编译报警

RCA:
SOL:
修改人:zhouzian
检视人:zhouzian
This commit is contained in:
zhouzian 2019-09-02 15:37:00 +08:00
parent b39bf43901
commit 8e15b01187
5 changed files with 109 additions and 40 deletions

View File

@ -922,6 +922,7 @@ void um_getuser_db(char ** user_db)
{ {
int num = 0; int num = 0;
int size = 0; int size = 0;
int ret_create = 0;
re_connect(); re_connect();
if(NULL == um_hdbc) if(NULL == um_hdbc)
@ -929,6 +930,29 @@ void um_getuser_db(char ** user_db)
return; return;
} }
char * create_user = "CREATE TABLE IF NOT EXISTS user_account (\
uuid bigint(11) NOT NULL AUTO_INCREMENT,\
id bigint(11) NOT NULL,\
group_id bigint(11) NOT NULL,\
user_name char(255) NOT NULL,\
udescription char(255) DEFAULT NULL,\
password char(255) NOT NULL DEFAULT 'A31as%4Gb',\
multi_player bigint(8) NOT NULL DEFAULT '0',\
valid_always bigint(8) NOT NULL DEFAULT '0',\
valid_begin_time char(255) DEFAULT NULL,\
valid_end_time char(255) DEFAULT NULL,\
PRIMARY KEY (uuid,id),\
UNIQUE KEY id (id) USING BTREE,\
UNIQUE KEY user_name (user_name) 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\
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8";
ret_create = create_database_table(USER_MANAGER_DBID, um_hdbc, USER_TABLE, create_user);
if(DB_RET_OK != ret_create)
{
return;
}
char * select_sql = "SELECT id ID, group_id GID, multi_player multi, valid_always valid, user_name uname, udescription, \ char * select_sql = "SELECT id ID, group_id GID, multi_player multi, valid_always valid, user_name uname, udescription, \
valid_begin_time,valid_end_time FROM user_account"; valid_begin_time,valid_end_time FROM user_account";
char * ret_user = select_datebase_by_number(USER_MANAGER_DBID, um_hdbc, USER_TABLE, select_sql, 1, 0, &num, 0); char * ret_user = select_datebase_by_number(USER_MANAGER_DBID, um_hdbc, USER_TABLE, select_sql, 1, 0, &num, 0);

View File

@ -446,6 +446,7 @@ void um_getgroup_db(char ** group_db)
{ {
int num = 0; int num = 0;
int size = 0; int size = 0;
int ret_create = 0;
re_connect(); re_connect();
if(NULL == um_hdbc) if(NULL == um_hdbc)
@ -453,6 +454,21 @@ void um_getgroup_db(char ** group_db)
return; return;
} }
char * create_group = "CREATE TABLE IF NOT EXISTS user_group (\
uuid bigint(20) NOT NULL AUTO_INCREMENT,\
id bigint(11) NOT NULL,\
gname char(255) NOT NULL,\
gdescription char(255) DEFAULT NULL,\
PRIMARY KEY (uuid),\
UNIQUE KEY id (id) USING BTREE,\
UNIQUE KEY gname (gname) USING BTREE\
) ENGINE=InnoDB AUTO_INCREMENT=1059 DEFAULT CHARSET=utf8";
ret_create = create_database_table(USER_MANAGER_DBID, um_hdbc, USER_GROUP_TABLE, create_group);
if(DB_RET_OK != ret_create)
{
return;
}
char * select_sql = "SELECT user_group.id ID, user_group.gname, user_group.gdescription FROM user_group"; char * select_sql = "SELECT user_group.id ID, user_group.gname, user_group.gdescription FROM user_group";
char * ret_group = select_datebase_by_number(USER_MANAGER_DBID, um_hdbc, USER_GROUP_TABLE, select_sql, 1, 0, &num, 0); char * ret_group = select_datebase_by_number(USER_MANAGER_DBID, um_hdbc, USER_GROUP_TABLE, select_sql, 1, 0, &num, 0);

View File

@ -89,7 +89,7 @@ static void empty_fail_time_queue(unsigned short user_id)
{ {
if(NULL != AUTH_RECORD.fail_time) if(NULL != AUTH_RECORD.fail_time)
{ {
memset(AUTH_RECORD.fail_time, 0, sizeof(AUTH_RECORD.fail_time)); memset(AUTH_RECORD.fail_time, 0, sizeof(time_t) * AUTH_RECORD.max_size);
} }
AUTH_RECORD.front = 0; AUTH_RECORD.front = 0;
AUTH_RECORD.rear = 0; AUTH_RECORD.rear = 0;

View File

@ -28,6 +28,58 @@ void test(int a, int b, int c, int d)
} }
int main(void) int main(void)
{
char * testin; //input
char testout[2000]; //output
ret_code ret_pro; //执行结果
int outlen = 1; //out数据长度
void *test_hdbc = connect_database(USER_ACCOUNT_DATABASE_ID);
if(NULL == test_hdbc)
{
printf("fail connect database... \n");
}
char * create_group1 = "CREATE TABLE IF NOT EXISTS user_group1 (\
uuid bigint(20) NOT NULL AUTO_INCREMENT,\
id bigint(11) NOT NULL,\
gname char(255) NOT NULL,\
gdescription char(255) DEFAULT NULL,\
PRIMARY KEY (uuid),\
UNIQUE KEY id (id) USING BTREE,\
UNIQUE KEY gname (gname) USING BTREE\
) ENGINE=InnoDB AUTO_INCREMENT=1059 DEFAULT CHARSET=utf8";
char * create_user1 = "CREATE TABLE IF NOT EXISTS user_account1 (\
uuid bigint(11) NOT NULL AUTO_INCREMENT,\
id bigint(11) NOT NULL,\
group_id bigint(11) NOT NULL,\
user_name char(255) NOT NULL,\
udescription char(255) DEFAULT NULL,\
password char(255) NOT NULL DEFAULT 'A31as%4Gb',\
multi_player bigint(8) NOT NULL DEFAULT '0',\
valid_always bigint(8) NOT NULL DEFAULT '0',\
valid_begin_time char(255) DEFAULT NULL,\
valid_end_time char(255) DEFAULT NULL,\
PRIMARY KEY (uuid,id),\
UNIQUE KEY id (id) USING BTREE,\
UNIQUE KEY user_name (user_name) USING BTREE,\
KEY group_id (group_id) USING BTREE,\
CONSTRAINT user_account1_ibfk_1 FOREIGN KEY (group_id) REFERENCES user_group1 (id) ON DELETE CASCADE ON UPDATE CASCADE\
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8";
int rett = 0;
rett = create_database_table(1, test_hdbc, "user_group1", create_group1);
printf("ret create user_group : %d .\n", rett);
rett = create_database_table(1, test_hdbc, "user_account1", create_user1);
printf("ret create user_account : %d .\n", rett);
return 0;
}
int main5(void)
{ {
char * testrec; char * testrec;
int testnum; int testnum;

View File

@ -13,9 +13,9 @@
#define AUTH_INIT_SUCCESS 0 #define AUTH_INIT_SUCCESS 0
#define AUTH_USER_INDEX_MAX (100 + 2) #define AUTH_USER_INDEX_MAX (100 + 2)
#define UNAMESIZE (127 + 1) #define UNAMESIZE (64)
#define UDESIZE (127 + 1) #define UDESIZE (64)
#define UPWDSIZE (63 + 1) #define UPWDSIZE (64)
typedef struct user_auth typedef struct user_auth
{ {
@ -78,6 +78,7 @@ static int init_fail_time_queue(unsigned short user_id, int max_size)
//记录日志,申请内存失败 //记录日志,申请内存失败
return AUTH_INIT_FAIL; return AUTH_INIT_FAIL;
} }
memset(AUTH_RECORD.fail_time, 0, sizeof(time_t) * max_size);
AUTH_RECORD.max_size = max_size; AUTH_RECORD.max_size = max_size;
return AUTH_INIT_SUCCESS; return AUTH_INIT_SUCCESS;
@ -88,7 +89,7 @@ static void empty_fail_time_queue(unsigned short user_id)
{ {
if(NULL != AUTH_RECORD.fail_time) if(NULL != AUTH_RECORD.fail_time)
{ {
memset(AUTH_RECORD.fail_time, 0, sizeof(AUTH_RECORD.fail_time)); memset(AUTH_RECORD.fail_time, 0, sizeof(time_t) * AUTH_RECORD.max_size);
} }
AUTH_RECORD.front = 0; AUTH_RECORD.front = 0;
AUTH_RECORD.rear = 0; AUTH_RECORD.rear = 0;
@ -255,6 +256,7 @@ bool get_user_from_database(char* username, void* hdbc, USERACCOUNT* user_info,
"multi_player": 0, "multi_player": 0,
"valid_always": 0, "valid_always": 0,
"user_name": "用户07", "user_name": "用户07",
"password":"123456",
"udescription": "", "udescription": "",
"valid_begin_time": "", "valid_begin_time": "",
"valid_end_time": "" "valid_end_time": ""
@ -387,11 +389,11 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
int config_fail_time = 0; //规定时间,失败的时间范围,锁定前 int config_fail_time = 0; //规定时间,失败的时间范围,锁定前
time_t login_time; //登陆时间 time_t login_time; //登陆时间
time_t remain_lock_time; //锁定剩余时间 time_t remain_lock_time; //锁定剩余时间
USERACCOUNT *user_info; //临时数据,存储登陆用户名对应的用户信息 USERACCOUNT user_info; //临时数据,存储登陆用户名对应的用户信息
void * auth_hdbc; void * auth_hdbc;
int sql_num; int sql_num;
memset(auth_result, 0, sizeof(USER_AUTH_RET)); //memset(auth_result, 0, sizeof(USER_AUTH_RET));
login_time = time(NULL); login_time = time(NULL);
//1、校验用户名和密码 //1、校验用户名和密码
@ -422,40 +424,23 @@ 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)
{ {
auth_result->ret = AUTH_FAIL_DATABASE; auth_result->ret = AUTH_FAIL_DATABASE;
return; return;
} }
if(0 == sql_num || NULL == user_info) if(0 == sql_num)
{ {
auth_result->ret = AUTH_FAIL_PASSWD; auth_result->ret = AUTH_FAIL_PASSWD;
return; return;
} }
user_id = user_info->ID; user_id = user_info.ID;
group_id = user_info->GID; group_id = user_info.GID;
//4、初始化用户认证结果记录表对应id内的循环队列 //4、初始化用户认证结果记录表对应id内的循环队列
if (DATA_EMPTY == AUTH_RECORD.max_size) if (DATA_EMPTY == AUTH_RECORD.max_size)
@ -468,7 +453,6 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
if (AUTH_INIT_FAIL == init_queue_ret) if (AUTH_INIT_FAIL == init_queue_ret)
{ {
auth_result->ret = AUTH_ERR; auth_result->ret = AUTH_ERR;
xfree(user_info);
return; return;
} }
} }
@ -486,7 +470,6 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
if (AUTH_INIT_FAIL == init_queue_ret) if (AUTH_INIT_FAIL == init_queue_ret)
{ {
auth_result->ret = AUTH_ERR; auth_result->ret = AUTH_ERR;
xfree(user_info);
return; return;
} }
empty_fail_time_queue(user_id); empty_fail_time_queue(user_id);
@ -499,14 +482,12 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
if (remain_lock_time < 0) if (remain_lock_time < 0)
{ {
auth_result->ret = AUTH_FAIL_INPUT; auth_result->ret = AUTH_FAIL_INPUT;
xfree(user_info);
return; return;
} }
if ((int)(60.0 * config_lock_time) > 60 *remain_lock_time) if ((int)(60.0 * config_lock_time) > remain_lock_time)
{ {
auth_result->ret = AUTH_FAIL_LOCK; auth_result->ret = AUTH_FAIL_LOCK;
auth_result->remain_lock_time = remain_lock_time; auth_result->remain_lock_time = remain_lock_time;
xfree(user_info);
return; return;
} }
//锁定时间已过,解锁,清空该队列 //锁定时间已过,解锁,清空该队列
@ -514,15 +495,14 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
} }
//6、判断是否在有效期内 //6、判断是否在有效期内
user_valid = AUTH_VALID_GET(user_info->multi_valid); user_valid = AUTH_VALID_GET(user_info.multi_valid);
if (1 == user_valid) if (1 == user_valid)
{ {
if (login_time < user_info->valid_begin_time || login_time > user_info->valid_end_time) if (login_time < user_info.valid_begin_time || login_time > user_info.valid_end_time)
{ {
auth_result->ret = AUTH_FAIL_VALID; auth_result->ret = AUTH_FAIL_VALID;
/* 认证失败处理 */ /* 认证失败处理 */
auth_fail_operate(user_id, login_time, config_fail_time); auth_fail_operate(user_id, login_time, config_fail_time);
xfree(user_info);
return; return;
} }
} }
@ -534,18 +514,16 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
/* 认证失败处理 */ /* 认证失败处理 */
auth_fail_operate(user_id, login_time, config_fail_time); auth_fail_operate(user_id, login_time, config_fail_time);
xfree(user_info);
return; return;
} }
//8、匹配密码 //8、匹配密码
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;
/* 认证失败处理 */ /* 认证失败处理 */
auth_fail_operate(user_id, login_time, config_fail_time); auth_fail_operate(user_id, login_time, config_fail_time);
xfree(user_info);
return; return;
} }
@ -559,7 +537,6 @@ void user_auth_login(char* username, char* password, USER_AUTH_RET *auth_result)
auth_result->group_id = group_id; auth_result->group_id = group_id;
disconnect_database(20, auth_hdbc); disconnect_database(20, auth_hdbc);
xfree(user_info);
return; return;
} }