Mod aaa-12 根据测试用例修改用户管理代码

RCA:
SOL:
修改人:zhouzian
检视人:zhouzian
This commit is contained in:
zhouzian 2019-09-10 19:19:46 +08:00
parent 3121ffeecb
commit b16a8cc2a3
7 changed files with 130 additions and 28 deletions

View File

@ -468,7 +468,7 @@ static ret_code user_config_add_proc(uint source, uint config_type,
char *ret_char = NULL;
char *temp_begin_time, *temp_end_time, *temp_udesp, *temp_pwd;
int temp_multi, temp_valid, temp_output_len;
char *message[] = {"新增成功","用户组名不存在","用户名长度不符合","用户名中包含特殊字符","用户名重名","用户数已达到最大(最大用户数100)","数据库操作失败","系统错误"};
char *message[] = {"新增成功","用户组名不存在","用户名或描述长度不符合","用户名中包含特殊字符","用户名重名","用户数已达到最大(最大用户数100)","数据库操作失败","系统错误"};
/* 解析json串 */
root = cJSON_Parse(input);
@ -723,13 +723,29 @@ static ret_code user_config_mod_web_proc(uint source, uint config_type,
cJSON_Delete(root);
return ret;
}
cJSON * temp_udes_json = cJSON_GetObjectItem(data, "udescription");
if(!temp_udes_json)
{
ret = RET_INPUTERR;
cJSON_Delete(root);
return ret;
}
if(UDESIZE < strlen(temp_udes_json->valuestring))
{
ret = RET_INPUTERR;
cJSON_Delete(root);
return ret;
}
s2j_create_struct_obj(input_data, USERLIST);
s2j_struct_get_basic_element(input_data, data, int, ID);
s2j_struct_get_basic_element(input_data, data, int, GID);
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, uname,UNAMESIZE);
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, gname, GNAMESIZE);
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, passwd, UPWDSIZE);
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, udescription, UDESIZE);
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, udescription, UDESIZE+1);
s2j_struct_get_basic_element(input_data, data, int, resetpwd);
s2j_struct_get_basic_element(input_data, data, int, multi);
s2j_struct_get_basic_element(input_data, data, int, valid);

View File

@ -95,15 +95,30 @@ do{ \
/* 去除字符串前后空格 */
#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)); \
char * c;\
int i;\
int len;\
size_t nLen = strlen(in);\
i = 0;\
while(in[i] == ' ')\
{\
i++; \
}\
if (i != nLen)\
{\
c = &in[i];\
i = nLen - 1;\
while(in[i] == ' ') \
{\
i--;\
}\
len = i + 1 - (c - in);\
memcpy(out, c, i + 1 - (c - in));\
}\
else\
{\
memset(out, 0 ,strlen(out));\
}\
} while (0)
#endif

View File

@ -21,6 +21,7 @@
#define ADDUSER_FAIL_USERFULL 5 //用户已满
#define ADDUSER_FAIL_DATABASE 6 //存数据库失败
#define ADDUSER_ERROR 7 //系统错误
#define ADDUSER_FAIL_TIME 8 //有效时间错误
#define DELUSER_SUCCESS 0

View File

@ -73,6 +73,12 @@ void usermanager_add_user(char* uname_in, char* gname, char* udesp, char* pwd, i
/* 去除用户名前后空格 */
TRIM_NAME(uname_in, uname);
if(0 == strlen(uname))
{
uaddres->result = ADDUSER_FAIL_LENGTH;
return;
}
if (NULL == pwd || 0 == strcmp("",pwd))
{
pwd = "A31as%4Gb";
@ -87,24 +93,43 @@ void usermanager_add_user(char* uname_in, char* gname, char* udesp, char* pwd, i
{
valid = 0;
}
if(NULL == valid_begin_time)
if(NULL == valid_begin_time || "" == valid_begin_time)
{
valid_begin_time = "";
begin_time = 0;
}else
}
else
{
STRING2TIME_T(valid_begin_time, begin_time);
}
if(NULL == valid_end_time)
if(NULL == valid_end_time || "" == valid_end_time)
{
valid_end_time = "";
end_time = 0;
}else
}
else
{
STRING2TIME_T(valid_end_time, end_time);
}
/* 校验开始、结束时间 */
if(1 == valid)
{
if(begin_time >= end_time)
{
uaddres->result = ADDUSER_FAIL_TIME;
return;
}
time_t time_now = time(NULL);
if(time_now >= end_time)
{
uaddres->result = ADDUSER_FAIL_TIME;
return;
}
}
/* 连接数据库 */
re_connect();
if(NULL == um_hdbc)
@ -236,7 +261,7 @@ bool get_user_detail_by_user_uuid(int user_uuid, char ** user_detail)
bool mod_user_web(USERLIST* ulist)
{
int ret_release;
time_t cur_time;
time_t cur_time, begin_time, end_time;
char *temp_begin_time, *temp_end_time, *temp_pwd, *temp_udes, *temp_user_json;
/* 可以修改的数据用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */
@ -274,6 +299,29 @@ bool mod_user_web(USERLIST* ulist)
temp_end_time = "";
}
/* 校验开始、结束时间 */
cur_time = time(NULL);
if(1 == ulist->valid)
{
if(NULL == ulist->valid_begin_time || "" == ulist->valid_begin_time || NULL == ulist->valid_end_time || "" == ulist->valid_end_time)
{
return false;
}
STRING2TIME_T(ulist->valid_begin_time, begin_time);
STRING2TIME_T(ulist->valid_end_time, end_time);
if(begin_time >= end_time)
{
return false;
}
if(cur_time >= end_time)
{
return false;
}
}
if(0 == ulist->resetpwd)
{
if(NULL == ulist->passwd)
@ -287,7 +335,7 @@ bool mod_user_web(USERLIST* ulist)
bool ret_getuser = get_user_detail_by_user_uuid(ulist->ID, &temp_user_json);
if (!ret_getuser)
{
UCHAR_FREE(temp_user_json);
//UCHAR_FREE(temp_user_json); //多余释放
return false;
}
@ -405,8 +453,8 @@ bool mod_user_web(USERLIST* ulist)
if (1 == ulist->valid)
{
//if(判断是否符合格式)
STRING2TIME_T(ulist->valid_begin_time, g_user_table[user_id].valid_begin_time);
STRING2TIME_T(ulist->valid_end_time, g_user_table[user_id].valid_end_time);
g_user_table[user_id].valid_begin_time = begin_time;
g_user_table[user_id].valid_end_time = end_time;
}
/* 查询该用户是否有在线IP */
@ -442,7 +490,6 @@ bool mod_user_web(USERLIST* ulist)
/* 当前时间不在有效期内,下线用户 */
if (1 == ulist->valid)
{
cur_time = time(NULL);
if (cur_time < g_user_table[user_id].valid_begin_time || cur_time > g_user_table[user_id].valid_end_time)
{
//offline_force_one_user(user_id);

View File

@ -59,6 +59,11 @@ int add_group(char* name_in, char* description)
/* 去除用户组名前后空格 */
TRIM_NAME(name_in, name);
if(0 == strlen(name))
{
return ADDGROUP_FAIL_LENGTH;
}
/* 连接数据库 */
re_connect();
if(NULL == um_hdbc)

View File

@ -126,23 +126,34 @@ int main5(void)
return 0;
}
void trim(char *out, char *in)
void trim(char *in, char *out)
{
char * c;
int i;
int len;
size_t nLen = strlen(in);
i = 0;
while(in[i] == ' ')
{
i++;
}
c = &in[i]; // 找到第一个非空字符指针
i = nLen - 1;
while(in[i] == ' ')
if (i != nLen)
{
i--; // 找到最后一个非空字符
c = &in[i]; // 找到第一个非空字符指针
i = nLen - 1;
while(in[i] == ' ')
{
i--; // 找到最后一个非空字符
}
len = i + 1 - (c - in);
memcpy(out, c, i + 1 - (c - in));
}
memcpy(out, c, i + 1 - (c - in));
else
{
memset(out, 0 ,strlen(out));
}
return;
}
@ -151,12 +162,15 @@ int main(void)
{
char *name1 = " xi阿斯蒂芬就aom ig ";
char *name1 = "a a ";
int len = strlen(name1);
char name2[100] = {0};
printf("name2 len=%ld.\n",strlen(name2));
printf("name1=%s.\n",name1);
TRIM_NAME(name1, name2);
printf("name1=%s.\n",name2);
printf("name2 len=%ld.\n",strlen(name2));
return 0;

View File

@ -14,6 +14,7 @@
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include "http_header.h"
#include "json.h"
#include "../../../../Common/config_manager.h"
@ -786,7 +787,10 @@ static handler_t mod_webm_uri_handler(server *srv, connection *con, void *p_d)
}
buffer_free(content_buffer);
}
http_header_response_set(con, HTTP_HEADER_CONTENT_TYPE,
CONST_STR_LEN("Content-Type"),
CONST_STR_LEN("text/xml; charset=\"utf-8\""));
con->mode = DIRECT;
con->http_status = 200;
con->file_finished = 1;
return HANDLER_FINISHED;