Mod aaa-12 修改配置管理-用户锁定input格式,进行json格式和结构体的转换

RCA:
SOL:
修改人:chenling
检视人:
This commit is contained in:
ChenLing 2019-07-08 16:38:19 +08:00
parent c57ab2aaec
commit 422ab40d72
1 changed files with 76 additions and 7 deletions

View File

@ -26,23 +26,50 @@ int Init(userlock_configure_t *userlock)
/*判断锁定配置信息是否有效时间范围大于0失败的次数大于0锁定时间大于0 */ /*判断锁定配置信息是否有效时间范围大于0失败的次数大于0锁定时间大于0 */
/*input格式 "{\"type\":0, \"failcount\":10, \"locktime\":30, \"timehorizon\":30, \"logintime\":3213250}"*/
ret_code userlock_config_chk(uint source, uint *config_type, ret_code userlock_config_chk(uint source, uint *config_type,
pointer input, int *input_len, pointer input, int *input_len,
pointer output, int *output_len) pointer output, int *output_len)
{ {
ret_code ret = RET_OK; ret_code ret = RET_OK;
userlock_configure_t *struct_userlock; cJSON *cjson, *res;
struct_userlock = (userlock_configure_t *)input;
if(*input_len < sizeof(userlock_configure_t) ) /*JSON字符串到JSON格式 */
cjson = cJSON_Parse(input);
if(!cjson)
{ {
ret = RET_INPUTERR; ret = RET_INPUTERR;
ASSERT_RET(ret);
return ret;
}
/*创建freeauth_configure_t结构体对象 */
s2j_create_struct_obj(struct_userlock, userlock_configure_t);
/*反序列化数据到freeauth_configure_t结构体对象 */
s2j_struct_get_basic_element(struct_userlock, cjson, int, failcount);
s2j_struct_get_basic_element(struct_userlock, cjson, int, locktime);
s2j_struct_get_basic_element(struct_userlock, cjson, int, timehorizon);
s2j_struct_get_basic_element(struct_userlock, cjson, int, logintime);
rpc_log_info("userlock configure: 登录时间: %d 用户认证失败次数: %d 用户认证的时间范围: %d 用户锁定时间: %ld\n",
struct_userlock->logintime, struct_userlock->failcount,
struct_userlock->timehorizon, struct_userlock->locktime);
if(input_len < sizeof(userlock_configure_t) )
{
ret = RET_INPUTERR;
ASSERT_RET(ret);
return ret;
} }
/*配置的用户失败次数如果小于0则配置错误 */ /*配置的用户失败次数如果小于0则配置错误 */
if(struct_userlock->failcount < FAIL_MIN_NUM ) if(struct_userlock->failcount < FAIL_MIN_NUM )
{ {
ret = RET_ERR; ret = RET_ERR;
ASSERT_RET(ret);
return ret;
printf("userlock configure error\n"); printf("userlock configure error\n");
} }
@ -50,6 +77,8 @@ ret_code userlock_config_chk(uint source, uint *config_type,
if(struct_userlock->locktime < LOCK_MIN_TIME ) if(struct_userlock->locktime < LOCK_MIN_TIME )
{ {
ret = RET_ERR; ret = RET_ERR;
ASSERT_RET(ret);
return ret;
printf("locktime configure error\n"); printf("locktime configure error\n");
} }
@ -57,6 +86,8 @@ ret_code userlock_config_chk(uint source, uint *config_type,
if(struct_userlock->timehorizon < HORIZON_MIN_VALUE ) if(struct_userlock->timehorizon < HORIZON_MIN_VALUE )
{ {
ret = RET_ERR; ret = RET_ERR;
ASSERT_RET(ret);
return ret;
printf("timehorizon configure error\n"); printf("timehorizon configure error\n");
} }
@ -72,15 +103,54 @@ ret_code userlock_config_proc(uint source, uint config_type,
pointer output, int *output_len) pointer output, int *output_len)
{ {
ret_code ret = RET_OK; ret_code ret = RET_OK;
userlock_configure_t *struct_userlock; cJSON *cjson, *res;
struct_userlock = (userlock_configure_t *)input; char *ret_char = NULL;
int *ret_int = NULL;
/*JSON字符串到JSON格式 */
cjson = cJSON_Parse(input);
if(!cjson)
{
ret = RET_INPUTERR;
ASSERT_RET(ret);
return ret;
}
/*创建freeauth_configure_t结构体对象 */
s2j_create_struct_obj(struct_userlock, userlock_configure_t);
/*反序列化数据到freeauth_configure_t结构体对象 */
s2j_struct_get_basic_element(struct_userlock, cjson, int, failcount);
s2j_struct_get_basic_element(struct_userlock, cjson, int, locktime);
s2j_struct_get_basic_element(struct_userlock, cjson, int, timehorizon);
s2j_struct_get_basic_element(struct_userlock, cjson, int, logintime);
rpc_log_info("userlock configure: 登录时间: %d 用户认证失败次数: %d 用户认证的时间范围: %d 用户锁定时间: %ld\n", rpc_log_info("userlock configure: 登录时间: %d 用户认证失败次数: %d 用户认证的时间范围: %d 用户锁定时间: %ld\n",
struct_userlock->logintime, struct_userlock->failcount, struct_userlock->logintime, struct_userlock->failcount,
struct_userlock->timehorizon, struct_userlock->locktime); struct_userlock->timehorizon, struct_userlock->locktime);
/*将配置信息struct_userlock发送到数据库 */ /*将配置信息struct_userlock发送到数据库 发送结果int类型表示0表示发送成功-1表示发送失败 */
int r;
/*创建json对象 */
res = cJSON_CreateObject();
if(!res)
{
ret = RET_ERR;
ASSERT_RET(ret);
return ret;
}
cJSON_AddNumberToObject(res, "result", r);
/*将json对象转换成json字符串 */
ret_char = cJSON_PrintUnformatted(res);
ret_int = (int*)ret_char;
memcpy(output, ret_int, sizeof(ret_int)+1);
free(ret_char);
cJSON_Delete(res);
/*把本地Portal server的配置信息存入全局变量 */ /*把本地Portal server的配置信息存入全局变量 */
userlock = struct_userlock; userlock = struct_userlock;
@ -88,5 +158,4 @@ ret_code userlock_config_proc(uint source, uint config_type,
return RET_OK; return RET_OK;
} }