diff --git a/Platform/user/configm/config-server/userlock_config/userlock.c b/Platform/user/configm/config-server/userlock_config/userlock.c index 896709d50..bf2acf369 100644 --- a/Platform/user/configm/config-server/userlock_config/userlock.c +++ b/Platform/user/configm/config-server/userlock_config/userlock.c @@ -26,23 +26,50 @@ int Init(userlock_configure_t *userlock) /*判断锁定配置信息是否有效,时间范围大于0,失败的次数大于0,锁定时间大于0 */ +/*input格式 "{\"type\":0, \"failcount\":10, \"locktime\":30, \"timehorizon\":30, \"logintime\":3213250}"*/ ret_code userlock_config_chk(uint source, uint *config_type, pointer input, int *input_len, pointer output, int *output_len) { ret_code ret = RET_OK; - userlock_configure_t *struct_userlock; - struct_userlock = (userlock_configure_t *)input; + cJSON *cjson, *res; - if(*input_len < sizeof(userlock_configure_t) ) + /*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", + 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,则配置错误 */ if(struct_userlock->failcount < FAIL_MIN_NUM ) { ret = RET_ERR; + ASSERT_RET(ret); + return ret; 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 ) { ret = RET_ERR; + ASSERT_RET(ret); + return ret; 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 ) { ret = RET_ERR; + ASSERT_RET(ret); + return ret; printf("timehorizon configure error\n"); } @@ -72,15 +103,54 @@ ret_code userlock_config_proc(uint source, uint config_type, pointer output, int *output_len) { ret_code ret = RET_OK; - userlock_configure_t *struct_userlock; - struct_userlock = (userlock_configure_t *)input; + cJSON *cjson, *res; + 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", struct_userlock->logintime, struct_userlock->failcount, 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的配置信息存入全局变量 */ userlock = struct_userlock; @@ -88,5 +158,4 @@ ret_code userlock_config_proc(uint source, uint config_type, return RET_OK; } -