From 422ab40d72986d1bba93e7eba5379cd61f5d9c24 Mon Sep 17 00:00:00 2001 From: ChenLing Date: Mon, 8 Jul 2019 16:38:19 +0800 Subject: [PATCH] =?UTF-8?q?Mod=20=20aaa-12=20=E4=BF=AE=E6=94=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=AE=A1=E7=90=86-=E7=94=A8=E6=88=B7=E9=94=81?= =?UTF-8?q?=E5=AE=9Ainput=E6=A0=BC=E5=BC=8F=EF=BC=8C=E8=BF=9B=E8=A1=8Cjson?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=92=8C=E7=BB=93=E6=9E=84=E4=BD=93=E7=9A=84?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Achenling=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config-server/userlock_config/userlock.c | 83 +++++++++++++++++-- 1 file changed, 76 insertions(+), 7 deletions(-) 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; } -