diff --git a/Platform/user/configm/config-server/web_config/auth_recover_config.c b/Platform/user/configm/config-server/web_config/auth_recover_config.c index 53f147647..19b5511eb 100644 --- a/Platform/user/configm/config-server/web_config/auth_recover_config.c +++ b/Platform/user/configm/config-server/web_config/auth_recover_config.c @@ -77,7 +77,7 @@ void auth_getpara_db(char ** parameters_db) return; } - char *select_sql = "SELECT port, timehorizon, failcount, dip, locktime, aging_time FROM `authparas`"; + char *select_sql = "SELECT port, timehorizon, failcount, locktime, aging_time FROM `authparas`"; ret_parameters = select_datebase_by_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authparas", select_sql, 1, 0, &num, 0); if(0 == num || NULL == ret_parameters) @@ -94,7 +94,6 @@ void auth_getpara_db(char ** parameters_db) memset(point, 0, size); memcpy(point, ret_parameters, size); *parameters_db = point; //在函数外面释放 - return; } @@ -177,7 +176,8 @@ ret_code auth_recover_get_all(uint source, /*创建freeauth_configure_t结构体对象 */ s2j_create_struct_obj(freeauth_buff, freeauth_configure_t); - if(freeauth_buff == NULL) { + if(freeauth_buff == NULL) + { cJSON_Delete(cjson); return RET_NOMEM; } @@ -198,7 +198,7 @@ ret_code auth_recover_get_all(uint source, cJSON *name = cJSON_GetObjectItem(pArrayItem, "name"); if(name) { - strncpy(freeauth_buff->name, name->valuestring, 31); + strncpy(freeauth_buff->name, name->valuestring, NAME_SIZE); } /*源IP地址*/ @@ -242,7 +242,7 @@ ret_code auth_recover_get_all(uint source, printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]); memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t)); freeauth_array[i].rule_priority = freeauth_buff->rule_priority; - strncpy(freeauth_array[i].name, freeauth_buff->name, 32); + strncpy(freeauth_array[i].name, freeauth_buff->name, NAME_SIZE); freeauth_array[i].sip = freeauth_buff->sip; freeauth_array[i].dip = freeauth_buff->dip; freeauth_array[i].dport = freeauth_buff->dport; @@ -264,55 +264,80 @@ ret_code auth_recover_get_all(uint source, return RET_OK; } - auth_getpara_db(¶meters_db); if(NULL != parameters_db) { /*输出参数为json字符串*/ - cJSON * cjson_para = cJSON_Parse(parameters_db); - if(NULL == cjson_para) + cJSON * cjson = cJSON_Parse(parameters_db); + if(NULL == cjson) { free(parameters_db); ret = RET_ERR; return ret; } - cJSON * data_para = cJSON_GetObjectItem(cjson_para, "data"); - if(NULL == data_para) + cJSON *data = cJSON_GetObjectItem(cjson, "data"); + if(NULL == data) { free(parameters_db); - cJSON_Delete(cjson_para); + ret = RET_ERR; + return ret; + } + + int mun_para = cJSON_GetArraySize(data); + if(0 == mun_para) + { + free(parameters_db); + cJSON_Delete(cjson); return RET_ERR; } - /*创建freeauth_configure_t结构体对象 */ - s2j_create_struct_obj(auth_parameters, auth_parameters_t); + for (int i = 0; i < mun_para; i++) + { + cJSON *pArrayItem = cJSON_GetArrayItem(data, i); - if(auth_parameters == NULL) { - cJSON_Delete(cjson_para); - return RET_NOMEM; + if(pArrayItem) + { + /*获取未认证权限优先级键值对*/ + cJSON *para_port = cJSON_GetObjectItem(pArrayItem, "port"); + + if(para_port) { + auth_para->port = para_port->valueint; + } + + /*认证时间范围*/ + cJSON *para_timehorizon = cJSON_GetObjectItem(pArrayItem, "timehorizon"); + + if(para_timehorizon) { + auth_para->timehorizon = para_timehorizon->valueint; + } + + /*失败次数*/ + cJSON *para_failcount = cJSON_GetObjectItem(pArrayItem, "failcount"); + + if(para_failcount) { + auth_para->failcount = para_failcount->valueint; + } + + /*锁定时间*/ + cJSON *para_locktime = cJSON_GetObjectItem(pArrayItem, "locktime"); + + if(para_locktime) { + auth_para->locktime = para_locktime->valueint; + } + + /*老化时间*/ + cJSON *para_aging_time = cJSON_GetObjectItem(pArrayItem, "aging_time"); + + if(para_aging_time) { + auth_para->aging_time = para_aging_time->valueint; + } + } } - /*反序列化数据到freeauth_configure_t结构体对象 */ - s2j_struct_get_basic_element(auth_parameters, data_para, int, port); - s2j_struct_get_basic_element(auth_parameters, data_para, int, timehorizon); - s2j_struct_get_basic_element(auth_parameters, data_para, int, failcount); - s2j_struct_get_basic_element(auth_parameters, data_para, int, locktime); - s2j_struct_get_basic_element(auth_parameters, data_para, int, aging_time); - - /*将数据存入全局结构体指针*/ - if(auth_para) { - auth_para->port = auth_parameters->port; - auth_para->timehorizon = auth_parameters->timehorizon; - auth_para->failcount = auth_parameters->failcount; - auth_para->locktime = auth_parameters->locktime; - auth_para->aging_time = auth_parameters->aging_time; - } - - s2j_delete_struct_obj(auth_parameters); - cJSON_Delete(cjson_para); + cJSON_Delete(cjson); } - + return RET_OK; } diff --git a/Platform/user/configm/config-server/web_config/auth_recover_config.h b/Platform/user/configm/config-server/web_config/auth_recover_config.h index abef11537..57045cccf 100644 --- a/Platform/user/configm/config-server/web_config/auth_recover_config.h +++ b/Platform/user/configm/config-server/web_config/auth_recover_config.h @@ -11,6 +11,8 @@ #include #include "rpc_common.h" +#define NAME_SIZE 63 + /*数据库重连*/ void db_connect();