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

View File

@ -97,13 +97,28 @@ do{ \
do { \ do { \
char * c;\ char * c;\
int i;\ int i;\
int len;\
size_t nLen = strlen(in);\ size_t nLen = strlen(in);\
i = 0;\ i = 0;\
while(in[i] == ' ') {i++;} \ while(in[i] == ' ')\
{\
i++; \
}\
if (i != nLen)\
{\
c = &in[i];\ c = &in[i];\
i = nLen - 1;\ i = nLen - 1;\
while(in[i] == ' ') {i--;} \ 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));\
}\
} while (0) } while (0)
#endif #endif

View File

@ -21,6 +21,7 @@
#define ADDUSER_FAIL_USERFULL 5 //用户已满 #define ADDUSER_FAIL_USERFULL 5 //用户已满
#define ADDUSER_FAIL_DATABASE 6 //存数据库失败 #define ADDUSER_FAIL_DATABASE 6 //存数据库失败
#define ADDUSER_ERROR 7 //系统错误 #define ADDUSER_ERROR 7 //系统错误
#define ADDUSER_FAIL_TIME 8 //有效时间错误
#define DELUSER_SUCCESS 0 #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); TRIM_NAME(uname_in, uname);
if(0 == strlen(uname))
{
uaddres->result = ADDUSER_FAIL_LENGTH;
return;
}
if (NULL == pwd || 0 == strcmp("",pwd)) if (NULL == pwd || 0 == strcmp("",pwd))
{ {
pwd = "A31as%4Gb"; pwd = "A31as%4Gb";
@ -87,24 +93,43 @@ void usermanager_add_user(char* uname_in, char* gname, char* udesp, char* pwd, i
{ {
valid = 0; valid = 0;
} }
if(NULL == valid_begin_time) if(NULL == valid_begin_time || "" == valid_begin_time)
{ {
valid_begin_time = ""; valid_begin_time = "";
begin_time = 0; begin_time = 0;
}else }
else
{ {
STRING2TIME_T(valid_begin_time, begin_time); STRING2TIME_T(valid_begin_time, begin_time);
} }
if(NULL == valid_end_time) if(NULL == valid_end_time || "" == valid_end_time)
{ {
valid_end_time = ""; valid_end_time = "";
end_time = 0; end_time = 0;
}else }
else
{ {
STRING2TIME_T(valid_end_time, end_time); 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(); re_connect();
if(NULL == um_hdbc) 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) bool mod_user_web(USERLIST* ulist)
{ {
int ret_release; 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; char *temp_begin_time, *temp_end_time, *temp_pwd, *temp_udes, *temp_user_json;
/* 可以修改的数据用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */ /* 可以修改的数据用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */
@ -274,6 +299,29 @@ bool mod_user_web(USERLIST* ulist)
temp_end_time = ""; 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(0 == ulist->resetpwd)
{ {
if(NULL == ulist->passwd) 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); bool ret_getuser = get_user_detail_by_user_uuid(ulist->ID, &temp_user_json);
if (!ret_getuser) if (!ret_getuser)
{ {
UCHAR_FREE(temp_user_json); //UCHAR_FREE(temp_user_json); //多余释放
return false; return false;
} }
@ -405,8 +453,8 @@ bool mod_user_web(USERLIST* ulist)
if (1 == ulist->valid) if (1 == ulist->valid)
{ {
//if(判断是否符合格式) //if(判断是否符合格式)
STRING2TIME_T(ulist->valid_begin_time, g_user_table[user_id].valid_begin_time); g_user_table[user_id].valid_begin_time = begin_time;
STRING2TIME_T(ulist->valid_end_time, g_user_table[user_id].valid_end_time); g_user_table[user_id].valid_end_time = end_time;
} }
/* 查询该用户是否有在线IP */ /* 查询该用户是否有在线IP */
@ -442,7 +490,6 @@ bool mod_user_web(USERLIST* ulist)
/* 当前时间不在有效期内,下线用户 */ /* 当前时间不在有效期内,下线用户 */
if (1 == ulist->valid) 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) 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); //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); TRIM_NAME(name_in, name);
if(0 == strlen(name))
{
return ADDGROUP_FAIL_LENGTH;
}
/* 连接数据库 */ /* 连接数据库 */
re_connect(); re_connect();
if(NULL == um_hdbc) if(NULL == um_hdbc)

View File

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

View File

@ -14,6 +14,7 @@
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>
#include "http_header.h"
#include "json.h" #include "json.h"
#include "../../../../Common/config_manager.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); 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->http_status = 200;
con->file_finished = 1; con->file_finished = 1;
return HANDLER_FINISHED; return HANDLER_FINISHED;