Mod aaa-12 修改用户认证-用户认证参数配置恢复

RCA:
SOL:
修改人:chenling
检视人:
This commit is contained in:
ChenLing 2019-09-26 09:52:38 +08:00
parent fe0013a7df
commit 03422647f7
2 changed files with 62 additions and 35 deletions

View File

@ -77,7 +77,7 @@ void auth_getpara_db(char ** parameters_db)
return; 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); ret_parameters = select_datebase_by_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authparas", select_sql, 1, 0, &num, 0);
if(0 == num || NULL == ret_parameters) if(0 == num || NULL == ret_parameters)
@ -94,7 +94,6 @@ void auth_getpara_db(char ** parameters_db)
memset(point, 0, size); memset(point, 0, size);
memcpy(point, ret_parameters, size); memcpy(point, ret_parameters, size);
*parameters_db = point; //在函数外面释放 *parameters_db = point; //在函数外面释放
return; return;
} }
@ -177,7 +176,8 @@ ret_code auth_recover_get_all(uint source,
/*创建freeauth_configure_t结构体对象 */ /*创建freeauth_configure_t结构体对象 */
s2j_create_struct_obj(freeauth_buff, freeauth_configure_t); s2j_create_struct_obj(freeauth_buff, freeauth_configure_t);
if(freeauth_buff == NULL) { if(freeauth_buff == NULL)
{
cJSON_Delete(cjson); cJSON_Delete(cjson);
return RET_NOMEM; return RET_NOMEM;
} }
@ -198,7 +198,7 @@ ret_code auth_recover_get_all(uint source,
cJSON *name = cJSON_GetObjectItem(pArrayItem, "name"); cJSON *name = cJSON_GetObjectItem(pArrayItem, "name");
if(name) { if(name) {
strncpy(freeauth_buff->name, name->valuestring, 31); strncpy(freeauth_buff->name, name->valuestring, NAME_SIZE);
} }
/*源IP地址*/ /*源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]); printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]);
memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t)); memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t));
freeauth_array[i].rule_priority = freeauth_buff->rule_priority; 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].sip = freeauth_buff->sip;
freeauth_array[i].dip = freeauth_buff->dip; freeauth_array[i].dip = freeauth_buff->dip;
freeauth_array[i].dport = freeauth_buff->dport; freeauth_array[i].dport = freeauth_buff->dport;
@ -264,53 +264,78 @@ ret_code auth_recover_get_all(uint source,
return RET_OK; return RET_OK;
} }
auth_getpara_db(&parameters_db); auth_getpara_db(&parameters_db);
if(NULL != parameters_db) if(NULL != parameters_db)
{ {
/*输出参数为json字符串*/ /*输出参数为json字符串*/
cJSON * cjson_para = cJSON_Parse(parameters_db); cJSON * cjson = cJSON_Parse(parameters_db);
if(NULL == cjson_para) if(NULL == cjson)
{ {
free(parameters_db); free(parameters_db);
ret = RET_ERR; ret = RET_ERR;
return ret; return ret;
} }
cJSON * data_para = cJSON_GetObjectItem(cjson_para, "data"); cJSON *data = cJSON_GetObjectItem(cjson, "data");
if(NULL == data_para) if(NULL == data)
{ {
free(parameters_db); 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; return RET_ERR;
} }
/*创建freeauth_configure_t结构体对象 */ for (int i = 0; i < mun_para; i++)
s2j_create_struct_obj(auth_parameters, auth_parameters_t); {
cJSON *pArrayItem = cJSON_GetArrayItem(data, i);
if(auth_parameters == NULL) { if(pArrayItem)
cJSON_Delete(cjson_para); {
return RET_NOMEM; /*获取未认证权限优先级键值对*/
cJSON *para_port = cJSON_GetObjectItem(pArrayItem, "port");
if(para_port) {
auth_para->port = para_port->valueint;
} }
/*反序列化数据到freeauth_configure_t结构体对象 */ /*认证时间范围*/
s2j_struct_get_basic_element(auth_parameters, data_para, int, port); cJSON *para_timehorizon = cJSON_GetObjectItem(pArrayItem, "timehorizon");
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(para_timehorizon) {
if(auth_para) { auth_para->timehorizon = para_timehorizon->valueint;
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 *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;
}
}
}
cJSON_Delete(cjson);
} }
return RET_OK; return RET_OK;

View File

@ -11,6 +11,8 @@
#include <net/if.h> #include <net/if.h>
#include "rpc_common.h" #include "rpc_common.h"
#define NAME_SIZE 63
/*数据库重连*/ /*数据库重连*/
void db_connect(); void db_connect();