Mod aaa-12 新增用户认证配置恢复、修改数据库连接

RCA:
RCA:
SOL:
修改人:chenling
检视人:
This commit is contained in:
ChenLing 2019-08-27 18:36:49 +08:00
parent 95bea78874
commit 48d6b17da2
10 changed files with 686 additions and 295 deletions

View File

@ -45,8 +45,9 @@
#define USER_MANAGER_CONFIG_USER (uint64)((uint64)USER_MANAGER_CONFIG_MODULE<<32|2) #define USER_MANAGER_CONFIG_USER (uint64)((uint64)USER_MANAGER_CONFIG_MODULE<<32|2)
#define USER_MANAGER_CONFIG_RECOVER (uint64)((uint64)USER_MANAGER_CONFIG_MODULE<<32|3) #define USER_MANAGER_CONFIG_RECOVER (uint64)((uint64)USER_MANAGER_CONFIG_MODULE<<32|3)
#define AUTHFREE_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|1) #define AUTHFREE_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|1)
#define FREEPARAMETERS_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|2) #define FREEPARAMETERS_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|2)
#define AUTH_CONFIG_RECOVER (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|3)
#define LOG_CONFIG_CONSOLE (uint64)((uint64)LOG_CONFIG_MODULE<<32|1) #define LOG_CONFIG_CONSOLE (uint64)((uint64)LOG_CONFIG_MODULE<<32|1)

View File

@ -33,7 +33,7 @@ COMMON_SRCS = configserver.c \
netconfig/bridge/libbridge/libbridge_if.c netconfig/bridge/libbridge/libbridge_init.c netconfig/bridge/libbridge/libbridge_devif.c\ netconfig/bridge/libbridge/libbridge_if.c netconfig/bridge/libbridge/libbridge_init.c netconfig/bridge/libbridge/libbridge_devif.c\
web_config/config-adm/user_authpara.c \ web_config/config-adm/user_authpara.c \
web_config/config-adm/user_authfree.c \ web_config/config-adm/user_authfree.c \
web_config/authfree.c web_config/auth_parameters.c\ web_config/authfree.c web_config/auth_parameters.c web_config/auth_recover_config.c \
user_manager_config/user_recover_config.c user_manager_config/user_group_config.c user_manager_config/user_account_config.c user_manager_config/usermanager-server/array_index.c \ user_manager_config/user_recover_config.c user_manager_config/user_group_config.c user_manager_config/user_account_config.c user_manager_config/usermanager-server/array_index.c \
user_manager_config/usermanager-server/user_group.c user_manager_config/usermanager-server/user_mod.c user_manager_config/usermanager-server/user.c \ user_manager_config/usermanager-server/user_group.c user_manager_config/usermanager-server/user_mod.c user_manager_config/usermanager-server/user.c \
log_config/log_config_console.c log_config/log_config_init.c log_config/log_config_cm.c log_config/log_config_monitor.c log_config/log_config_remote.c log_config/log_config_file.c \ log_config/log_config_console.c log_config/log_config_init.c log_config/log_config_cm.c log_config/log_config_monitor.c log_config/log_config_remote.c log_config/log_config_file.c \

View File

@ -1,262 +1,272 @@
#ifndef CONFIGM_H_ #ifndef CONFIGM_H_
#define CONFIGM_H_ #define CONFIGM_H_
#include "config_manager.h" #include "config_manager.h"
#include "s2j/s2j.h" #include "s2j/s2j.h"
#include "../../../../common/rpc/rpc_common.h" #include "../../../../common/rpc/rpc_common.h"
#include "../../../../../Common/commuapinl.h" #include "../../../../../Common/commuapinl.h"
#include "../user_manager_config/user_group_config.h" #include "../user_manager_config/user_group_config.h"
#include "../user_manager_config/user_account_config.h" #include "../user_manager_config/user_account_config.h"
#include "../user_manager_config/user_recover_config.h" #include "../user_manager_config/user_recover_config.h"
#include "netconfig.h" #include "netconfig.h"
#include "log_config.h" #include "log_config.h"
#include "../web_config/authfree.h" #include "../web_config/authfree.h"
#include "../web_config/auth_parameters.h" #include "../web_config/auth_parameters.h"
#include "natconfig.h" #include "../web_config/auth_recover_config.h"
#include "vlan_config.h" #include "natconfig.h"
#include "vlan_config.h"
#define RET_CODE_LEN 16
#define RET_MSG_LEN 128 #define RET_CODE_LEN 16
#define RET_MSG_LEN 128
#define CONFIG_INIT_ARRAY \
{\ #define CONFIG_INIT_ARRAY \
{ \ {\
NETCONFIG_MODULE, \ { \
net_main \ NETCONFIG_MODULE, \
}, \ net_main \
{ \ }, \
LOG_CONFIG_MODULE, \ { \
log_config_init \ LOG_CONFIG_MODULE, \
}, \ log_config_init \
{ \ }, \
VLAN_CONFIG_MODULE, \ { \
vlan_config_init \ VLAN_CONFIG_MODULE, \
} \ vlan_config_init \
} } \
}
/*
1ID /*
2, 1ID
WEB 2,
3 WEB
4 3
5 4
6 5
7 6
8 7
*/ 8
#define CONFIG_SERVICE_ARRAY \ */
{ \ #define CONFIG_SERVICE_ARRAY \
{\ { \
IPCONFIG_V4, \ {\
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ IPCONFIG_V4, \
FALSE, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
ip_config_chk, \ FALSE, \
ip_config_proc, \ ip_config_chk, \
ip_config_get, \ ip_config_proc, \
ip_config_get_all \ ip_config_get, \
},\ ip_config_get_all \
{\ },\
BR_CONFIG, \ {\
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ BR_CONFIG, \
FALSE, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
br_config_chk, \ FALSE, \
br_config_proc, \ br_config_chk, \
NULL, \ br_config_proc, \
NULL \ NULL, \
},\ NULL \
{\ },\
BRIF_CONFIG, \ {\
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ BRIF_CONFIG, \
FALSE, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
br_if_config_chk, \ FALSE, \
br_if_config_proc, \ br_if_config_chk, \
br_if_config_get, \ br_if_config_proc, \
br_if_config_get_all \ br_if_config_get, \
},\ br_if_config_get_all \
{\ },\
BRFDB_CONFIG, \ {\
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ BRFDB_CONFIG, \
FALSE, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
br_fdb_config_chk, \ FALSE, \
NULL, \ br_fdb_config_chk, \
br_fdb_config_get, \ NULL, \
NULL \ br_fdb_config_get, \
},\ NULL \
{\ },\
USER_MANAGER_CONFIG_GROUP, \ {\
CONFIG_FROM_WEB, \ USER_MANAGER_CONFIG_GROUP, \
FALSE, \ CONFIG_FROM_WEB, \
usergroup_config_chk, \ FALSE, \
usergroup_config_proc, \ usergroup_config_chk, \
usergroup_config_get, \ usergroup_config_proc, \
usergroup_config_get_all \ usergroup_config_get, \
},\ usergroup_config_get_all \
{\ },\
USER_MANAGER_CONFIG_RECOVER, \ {\
CONFIG_FROM_RECOVER1, \ USER_MANAGER_CONFIG_RECOVER, \
TRUE, \ CONFIG_FROM_RECOVER1, \
userecover_config_chk, \ TRUE, \
userecover_config_proc, \ userecover_config_chk, \
userecover_config_get, \ userecover_config_proc, \
userecover_config_get_all \ userecover_config_get, \
},\ userecover_config_get_all \
{ \ },\
AUTHFREE_CONFIG, \ { \
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ AUTHFREE_CONFIG, \
FALSE, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
freeauth_config_chk, \ FALSE, \
freeauth_config_proc, \ freeauth_config_chk, \
NULL, \ freeauth_config_proc, \
NULL \ NULL, \
},\ NULL \
{\ },\
FREEPARAMETERS_CONFIG, \ {\
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ FREEPARAMETERS_CONFIG, \
FALSE, \ CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
authpara_config_chk, \ FALSE, \
authpara_config_proc, \ authpara_config_chk, \
NULL, \ authpara_config_proc, \
NULL \ NULL, \
},\ NULL \
{\ },\
USER_MANAGER_CONFIG_USER, \ {\
CONFIG_FROM_WEB, \ AUTH_CONFIG_RECOVER, \
FALSE, \ CONFIG_FROM_RECOVER1, \
user_config_chk, \ TRUE, \
user_config_proc, \ auth_recover_chk, \
user_config_get, \ auth_recover_proc, \
user_config_get_all \ auth_recover_get, \
},\ auth_recover_get_all \
{\ },\
LOG_CONFIG_CONSOLE, \ {\
CONFIG_FROM_WEB, \ USER_MANAGER_CONFIG_USER, \
FALSE, \ CONFIG_FROM_WEB, \
log_console_config_chk, \ FALSE, \
log_console_config_proc, \ user_config_chk, \
log_console_config_get, \ user_config_proc, \
log_console_config_getall \ user_config_get, \
},\ user_config_get_all \
{\ },\
LOG_CONFIG_MONITOR, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_CONSOLE, \
FALSE, \ CONFIG_FROM_WEB, \
log_monitor_config_chk, \ FALSE, \
log_monitor_config_proc, \ log_console_config_chk, \
log_monitor_config_get, \ log_console_config_proc, \
log_monitor_config_getall \ log_console_config_get, \
},\ log_console_config_getall \
{\ },\
LOG_CONFIG_REMOTE_ADD_HOST, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_MONITOR, \
FALSE, \ CONFIG_FROM_WEB, \
log_remote_host_config_chk, \ FALSE, \
log_remote_add_host_config_proc, \ log_monitor_config_chk, \
NULL, \ log_monitor_config_proc, \
NULL \ log_monitor_config_get, \
},\ log_monitor_config_getall \
{\ },\
LOG_CONFIG_REMOTE_DEL_HOST, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_REMOTE_ADD_HOST, \
FALSE, \ CONFIG_FROM_WEB, \
log_remote_host_config_chk, \ FALSE, \
log_remote_del_host_config_proc, \ log_remote_host_config_chk, \
NULL, \ log_remote_add_host_config_proc, \
NULL \ NULL, \
},\ NULL \
{\ },\
LOG_CONFIG_REMOTE_LEVEL, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_REMOTE_DEL_HOST, \
FALSE, \ CONFIG_FROM_WEB, \
log_remote_level_config_chk, \ FALSE, \
log_remote_level_config_proc, \ log_remote_host_config_chk, \
log_remote_level_config_get, \ log_remote_del_host_config_proc, \
log_remote_level_config_getall \ NULL, \
},\ NULL \
{\ },\
LOG_CONFIG_FILE, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_REMOTE_LEVEL, \
FALSE, \ CONFIG_FROM_WEB, \
log_file_config_chk, \ FALSE, \
log_file_config_proc, \ log_remote_level_config_chk, \
log_file_config_get, \ log_remote_level_config_proc, \
log_file_config_getall \ log_remote_level_config_get, \
},\ log_remote_level_config_getall \
{\ },\
LOG_CONFIG_REMOTE_GET_HOST, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_FILE, \
FALSE, \ CONFIG_FROM_WEB, \
log_remote_host_x_config_chk, \ FALSE, \
NULL, \ log_file_config_chk, \
log_remote_host_x_config_get, \ log_file_config_proc, \
log_remote_host_x_config_getall \ log_file_config_get, \
},\ log_file_config_getall \
{\ },\
NAT4_CONFIG, \ {\
CONFIG_FROM_WEB, \ LOG_CONFIG_REMOTE_GET_HOST, \
FALSE, \ CONFIG_FROM_WEB, \
nat_config_chk, \ FALSE, \
nat_config_proc, \ log_remote_host_x_config_chk, \
NULL, \ NULL, \
nat_config_get_all \ log_remote_host_x_config_get, \
},\ log_remote_host_x_config_getall \
{\ },\
VLAN_CONFIG, \ {\
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ NAT4_CONFIG, \
FALSE, \ CONFIG_FROM_WEB, \
vlan_config_chk, \ FALSE, \
vlan_config_proc, \ nat_config_chk, \
vlan_config_get, \ nat_config_proc, \
vlan_config_get_all \ NULL, \
}\ nat_config_get_all \
} },\
{\
typedef ret_code (*cm_config_init)(); VLAN_CONFIG, \
CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \
typedef ret_code (*cm_config_chk)(uint source, uint *config_type, FALSE, \
pointer input, int *input_len, vlan_config_chk, \
pointer output, int *output_len); vlan_config_proc, \
vlan_config_get, \
typedef ret_code (*cm_config_proc)(uint source, uint config_type, vlan_config_get_all \
pointer input, int input_len, }\
pointer output, int *output_len); }
typedef ret_code (*cm_config_get)(uint source, typedef ret_code (*cm_config_init)();
pointer input, int input_len,
pointer output, int *output_len); typedef ret_code (*cm_config_chk)(uint source, uint *config_type,
pointer input, int *input_len,
typedef ret_code (*cm_config_get_all)(uint source, pointer output, int *output_len);
pointer output, int *output_len);
typedef ret_code (*cm_config_proc)(uint source, uint config_type,
/* 配置注册 */ pointer input, int input_len,
struct _config_init { pointer output, int *output_len);
uint config_mudlue;
cm_config_init init_callback; typedef ret_code (*cm_config_get)(uint source,
}; pointer input, int input_len,
typedef struct _config_init config_init_t; pointer output, int *output_len);
typedef ret_code (*cm_config_get_all)(uint source,
/* 配置注册 */ pointer output, int *output_len);
struct _config_service {
uint64 config_id; /* 配置ID全局唯一用于寻找对应的配置业务*/ /* 配置注册 */
uint config_src; /* 配置源检查,全局唯一,用于寻找对应的配置业务,从低位到高位第一位表示web后续配置扩展 */ struct _config_init {
boolean recovery; /* 配置恢复处理函数如果为FALSE则不进行配置恢复 */ uint config_mudlue;
cm_config_chk chk_callback; /* 配置校验回调函数 */ cm_config_init init_callback;
cm_config_proc proc_callback; /* 配置接口 */ };
cm_config_get get_callback; /* 获取配置接口 */ typedef struct _config_init config_init_t;
cm_config_get_all getall_callback; /* 获取所有配置接口 */
};
/* 配置注册 */
typedef struct _config_service config_service_t; struct _config_service {
uint64 config_id; /* 配置ID全局唯一用于寻找对应的配置业务*/
struct _config_result { uint config_src; /* 配置源检查,全局唯一,用于寻找对应的配置业务,从低位到高位第一位表示web后续配置扩展 */
char resultCode[RET_CODE_LEN]; boolean recovery; /* 配置恢复处理函数如果为FALSE则不进行配置恢复 */
char *message; cm_config_chk chk_callback; /* 配置校验回调函数 */
char *data; cm_config_proc proc_callback; /* 配置接口 */
}; cm_config_get get_callback; /* 获取配置接口 */
cm_config_get_all getall_callback; /* 获取所有配置接口 */
typedef struct _config_result config_result_t; };
int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output); typedef struct _config_service config_service_t;
#endif /* RPC_COMMON_H_ */ struct _config_result {
char resultCode[RET_CODE_LEN];
char *message;
char *data;
};
typedef struct _config_result config_result_t;
int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output);
#endif /* RPC_COMMON_H_ */

View File

@ -0,0 +1,321 @@
#include "auth_recover_config.h"
#include <cjson/cJSON.h>
#include "../include/parsefile.h"
#include "../include/configm.h"
#include "rpc.h"
#include "s2j/s2j.h"
#include "commuapinl.h"
#include "../Platform/common/database/database.h"
#include "config_manager.h"
#include "authfree.h"
#include "auth_parameters.h"
#include "include/user_authfree.h"
#include "include/user_authpara.h"
#include "include/auth_common.h"
void * auth_hdbc = NULL; //认证数据库连接句柄
extern freeauth_configure_t freeauth_array[];
extern auth_parameters_t *auth_para;
/*数据库重连*/
void db_connect()
{
if(NULL == auth_hdbc)
{
auth_hdbc = connect_database(AUTHRECOVER_DATABASE_ID);
}
}
/* 查询未认证权限恢复 */
void auth_getrule_db(char ** rule_db)
{
int num = 0;
int size = 0;
char *ret_authrule = NULL;
/*数据库重连*/
db_connect();
if(NULL == auth_hdbc)
{
return;
}
char *select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`";
ret_authrule = select_datebase_by_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", select_sql, 1, 0, &num, 0);
if(0 == num || NULL == ret_authrule)
{
return;
}
size = strlen(ret_authrule)+1;
char * point = (char*)malloc(size);
if(NULL == point)
{
return;
}
memset(point, 0, size);
memcpy(point, ret_authrule, size);
*rule_db = point; //在函数外面释放
return;
}
/* 查询认证参数恢复 */
void auth_getpara_db(char ** parameters_db)
{
int num = 0;
int size = 0;
char *ret_parameters = NULL;
/*数据库重连*/
db_connect();
if(NULL == auth_hdbc)
{
return;
}
char *select_sql = "SELECT port, timehorizon, failcount, dip, 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)
{
return;
}
size = strlen(ret_parameters)+1;
char * point = (char*)malloc(size);
if(NULL == point)
{
return;
}
memset(point, 0, size);
memcpy(point, ret_parameters, size);
*parameters_db = point; //在函数外面释放
return;
}
ret_code auth_recover_chk(uint source, uint *config_type,
pointer input, int *input_len,
pointer output, int *output_len)
{
ret_code ret = RET_OK;
return ret;
}
ret_code auth_recover_proc(uint source, uint config_type,
pointer input, int input_len,
pointer output, int *output_len)
{
ret_code ret = RET_OK;
return ret;
}
ret_code auth_recover_get(uint source,
pointer input, int input_len,
pointer output, int *output_len)
{
ret_code ret = RET_OK;
return ret;
}
/*配置恢复未认证权限、认证参数*/
ret_code auth_recover_get_all(uint source,
pointer output, int *output_len)
{
ret_code ret = RET_OK;
char *rule_db = NULL;
char *parameters_db = NULL;
if(CONFIG_FROM_RECOVER1 != source)
{
return ret;
}
auth_hdbc = connect_database(AUTHRECOVER_DATABASE_ID);
if(NULL == auth_hdbc)
{
return RET_SYSERR;
}
/*初始化认证参数结构体指针*/
authparInit();
auth_getrule_db(&rule_db);
if(NULL != rule_db)
{
/*输出参数为json字符串*/
cJSON * cjson = cJSON_Parse(rule_db);
if(NULL == cjson)
{
free(rule_db);
ret = RET_ERR;
return ret;
}
cJSON * data = cJSON_GetObjectItem(cjson, "data");
if(NULL == data)
{
free(rule_db);
cJSON_Delete(cjson);
return RET_ERR;
}
int mun_rule = cJSON_GetArraySize(data);
if(0 == mun_rule)
{
free(rule_db);
cJSON_Delete(cjson);
return RET_ERR;
}
/*创建freeauth_configure_t结构体对象 */
s2j_create_struct_obj(freeauth_buff, freeauth_configure_t);
if(freeauth_buff == NULL) {
cJSON_Delete(cjson);
return RET_NOMEM;
}
for (int i = 0; i < mun_rule; i++)
{
cJSON *pArrayItem = cJSON_GetArrayItem(data, i);
if(pArrayItem) {
/*获取未认证权限优先级键值对*/
cJSON *rule_priority = cJSON_GetObjectItem(pArrayItem, "rule_priority");
if(rule_priority) {
freeauth_buff->rule_priority = rule_priority->valueint;
}
/*未认证权限名称*/
cJSON *name = cJSON_GetObjectItem(pArrayItem, "name");
if(name) {
strncpy(freeauth_buff->name, name->valuestring, 31);
}
/*源IP地址*/
cJSON *sip = cJSON_GetObjectItem(pArrayItem, "sip");
if(sip) {
freeauth_buff->sip = sip->valueint;
}
/*目的IP地址*/
cJSON *dip = cJSON_GetObjectItem(pArrayItem, "dip");
if(dip) {
freeauth_buff->dip = dip->valueint;
}
/*目的端口号*/
cJSON *dport = cJSON_GetObjectItem(pArrayItem, "dport");
if(dport) {
freeauth_buff->dport = dport->valueint;
}
/*状态标志位*/
cJSON *flag = cJSON_GetObjectItem(pArrayItem, "flag");
if(flag) {
freeauth_buff->flag = flag->valueint;
}
printf("freeauth_buff->name = %p %s\n", &freeauth_buff->name, freeauth_buff->name);
/*把数据库的内容读出来 然后加到全局变量里边去*/
for(i = 0; i < RULE_MAX_NUM; i++) {
printf("the name is :%s\n", freeauth_array[i].name);
/*两个字符串相等 strcmp值为0*/
int a = strlen(freeauth_array[i].name);
printf("%d\n", a);
if(0 == strlen(freeauth_array[i].name)) {
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);
freeauth_array[i].sip = freeauth_buff->sip;
freeauth_array[i].dip = freeauth_buff->dip;
freeauth_array[i].dport = freeauth_buff->dport;
freeauth_array[i].flag = freeauth_buff->flag;
printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip,
freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i);
break;
}
}
freeauth_buff++;
}
}
s2j_delete_struct_obj(freeauth_buff);
free(rule_db);
return RET_OK;
}
auth_getpara_db(&parameters_db);
if(NULL != parameters_db)
{
/*输出参数为json字符串*/
cJSON * cjson_para = cJSON_Parse(parameters_db);
if(NULL == cjson_para)
{
free(parameters_db);
ret = RET_ERR;
return ret;
}
cJSON * data_para = cJSON_GetObjectItem(cjson_para, "data");
if(NULL == data_para)
{
free(parameters_db);
cJSON_Delete(cjson_para);
return RET_ERR;
}
/*创建freeauth_configure_t结构体对象 */
s2j_create_struct_obj(auth_parameters, auth_parameters_t);
if(auth_parameters == NULL) {
cJSON_Delete(cjson_para);
return RET_NOMEM;
}
/*反序列化数据到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);
}
return RET_OK;
}

View File

@ -0,0 +1,41 @@
#ifndef AUTH_RECOVER_H_
#define AUTH_RECOVER_H_
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include "rpc_common.h"
/*数据库重连*/
void db_connect();
/* 查询未认证权限恢复 */
void auth_getrule_db(char ** rule_db);
/* 查询认证参数恢复 */
void auth_getpara_db(char ** parameters_db);
ret_code auth_recover_chk(uint source, uint *config_type,
pointer input, int *input_len,
pointer output, int *output_len);
ret_code auth_recover_proc(uint source, uint config_type,
pointer input, int input_len,
pointer output, int *output_len);
ret_code auth_recover_get(uint source,
pointer input, int input_len,
pointer output, int *output_len);
/*配置恢复未认证权限、认证参数*/
ret_code auth_recover_get_all(uint source,
pointer output, int *output_len);
#endif

View File

@ -3,11 +3,10 @@
#include "../Platform/common/database/database.h" #include "../Platform/common/database/database.h"
#include "../include/user_authfree.h" #include "../include/user_authfree.h"
#include "string.h" #include "string.h"
#include "../include/auth_common.h"
#define AUTHFREE_DATABASE_ID (16)
#define AUTHFREE_TABLE "authfree"
extern freeauth_configure_t freeauth_array[]; extern freeauth_configure_t freeauth_array[];
extern void * auth_hdbc;
static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success", static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success",
"modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum", "modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum",
@ -37,7 +36,7 @@ static int is_rule_full(void)
/*增加未认证权限规则*/ /*增加未认证权限规则*/
void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result) void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result)
{ {
void *authfree_hdbc; //void *authfree_hdbc;
char *ret_sql = NULL; char *ret_sql = NULL;
int ret_add; int ret_add;
int ret; int ret;
@ -54,10 +53,9 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
authfree_result->message = get_sql_ret_message(authfree_result->resultcode); authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} }
printf("开始连接数据库\n");
/* 连接数据库 */ /* 连接数据库 */
#if 0
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID);
if(NULL == authfree_hdbc) { if(NULL == authfree_hdbc) {
@ -67,7 +65,10 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/*长整型bigint 浮点型double 字符串character(10)*/ /*长整型bigint 浮点型double 字符串character(10)*/
printf("authfree_hdbc = %p\n", authfree_hdbc); printf("authfree_hdbc = %p\n", authfree_hdbc);
ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(rule_priority bigint, name character(32), sip bigint, dip bigint, dport bigint, flag bigint)"); #endif
/*建表*/
ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", "create table authfree(rule_priority bigint, name character(32), sip bigint, dip bigint, dport bigint, flag bigint)");
printf("%d \n", ret); printf("%d \n", ret);
#if 0 #if 0
@ -89,7 +90,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/* 根据指定信息查询数据库的获取的结果的条目数 条目数大于10 则不能再添加 */ /* 根据指定信息查询数据库的获取的结果的条目数 条目数大于10 则不能再添加 */
char *select_num = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`"; char *select_num = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`";
ret = get_select_datebase_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_num, &num_sql, 6, ret = get_select_datebase_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", select_num, &num_sql, 6,
DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority,
DB_DATA_STRING_TYPE, strlen(name) + 1, name, DB_DATA_STRING_TYPE, strlen(name) + 1, name,
DB_DATA_INT_TYPE, sizeof(sip), sip, DB_DATA_INT_TYPE, sizeof(sip), sip,
@ -109,7 +110,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/* 向authfree表中添加未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */ /* 向authfree表中添加未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */
char *addfree_sql = "INSERT INTO `authfree` SET rule_priority = ?, name = ?, sip = ?, dip = ?, dport = ?, flag = ?"; char *addfree_sql = "INSERT INTO `authfree` SET rule_priority = ?, name = ?, sip = ?, dip = ?, dport = ?, flag = ?";
ret_add = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_INSERT, AUTHFREE_TABLE, addfree_sql, 6, ret_add = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_INSERT, AUTHFREE_TABLE, addfree_sql, 6,
DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority,
DB_DATA_STRING_TYPE, strlen(name) + 1, name, DB_DATA_STRING_TYPE, strlen(name) + 1, name,
DB_DATA_INT_TYPE, sizeof(sip), sip, DB_DATA_INT_TYPE, sizeof(sip), sip,
@ -167,7 +168,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/*修改未认证权限*/ /*修改未认证权限*/
void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result) void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result)
{ {
void *authfree_hdbc; //void *authfree_hdbc;
char *ret_sql = NULL; char *ret_sql = NULL;
int ret_mod; int ret_mod;
int ret; int ret;
@ -179,9 +180,10 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
} }
printf("开始连接数据库\n"); printf("开始连接数据库\n");
#if 0
/* 连接数据库 */ /* 连接数据库 */
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); authfree_hdbc = connect_database(AUTHRECOVER_DATABASE_ID);
if(NULL == authfree_hdbc) { if(NULL == authfree_hdbc) {
printf("connetc failure\n"); printf("connetc failure\n");
@ -190,7 +192,10 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/*长整型bigint 浮点型double 字符串character(10)*/ /*长整型bigint 浮点型double 字符串character(10)*/
printf("authfree_hdbc = %p\n", authfree_hdbc); printf("authfree_hdbc = %p\n", authfree_hdbc);
ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); #endif
/*建表*/
ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)");
printf("%d \n", ret); printf("%d \n", ret);
#if 0 #if 0
@ -211,7 +216,7 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/*修改authfree表中内部源IP地址、目的IP地址、目的端口号 未认证权限名称不能修改 */ /*修改authfree表中内部源IP地址、目的IP地址、目的端口号 未认证权限名称不能修改 */
char *modfree_sql = "UPDATE `authfree` SET rule_priority = ?, sip = ?, dip = ?, dport = ? ,flag = ? WHERE name = ?"; char *modfree_sql = "UPDATE `authfree` SET rule_priority = ?, sip = ?, dip = ?, dport = ? ,flag = ? WHERE name = ?";
ret_mod = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_UPDATE, AUTHFREE_TABLE, modfree_sql, 6, ret_mod = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_UPDATE, AUTHFREE_TABLE, modfree_sql, 6,
DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority,
DB_DATA_INT_TYPE, sizeof(sip), sip, DB_DATA_INT_TYPE, sizeof(sip), sip,
DB_DATA_INT_TYPE, sizeof(dip), dip, DB_DATA_INT_TYPE, sizeof(dip), dip,
@ -262,7 +267,7 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
/*删除未认证权限*/ /*删除未认证权限*/
void del_authfree(char *name, authfree_result_t *authfree_result) void del_authfree(char *name, authfree_result_t *authfree_result)
{ {
void *authfree_hdbc; //void *authfree_hdbc;
char *ret_sql = NULL; char *ret_sql = NULL;
int ret_del; int ret_del;
int ret; int ret;
@ -272,9 +277,8 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
if(NULL == authfree_result) { if(NULL == authfree_result) {
return; return;
} }
printf("开始连接数据库\n"); #if 0
/* 连接数据库 */ /* 连接数据库 */
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID);
@ -285,7 +289,10 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
/*长整型bigint 浮点型double 字符串character(10)*/ /*长整型bigint 浮点型double 字符串character(10)*/
printf("authfree_hdbc = %p\n", authfree_hdbc); printf("authfree_hdbc = %p\n", authfree_hdbc);
ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); #endif
/*建表*/
ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)");
printf("%d \n", ret); printf("%d \n", ret);
@ -308,7 +315,7 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
/*删除authfree表中未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */ /*删除authfree表中未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */
char *delfree_sql = "DELETE FROM authfree WHERE name = ?"; char *delfree_sql = "DELETE FROM authfree WHERE name = ?";
ret_del = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1, ret_del = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1,
DB_DATA_STRING_TYPE, strlen(name) + 1, name); DB_DATA_STRING_TYPE, strlen(name) + 1, name);
printf("the value of ret:%d\n", ret_del); printf("the value of ret:%d\n", ret_del);

View File

@ -8,11 +8,11 @@
#include "../../../../../Common/commuapinl.h" #include "../../../../../Common/commuapinl.h"
#include "../auth_parameters.h" #include "../auth_parameters.h"
#include "../Platform/common/database/database.h" #include "../Platform/common/database/database.h"
#include "../include/user_authpara.h"
#define AUTHPARA_DATABASE_ID 15 #include "../include/auth_common.h"
#define AUTHPARA_TABLE "authparas"
extern auth_parameters_t *auth_para; extern auth_parameters_t *auth_para;
extern void * auth_hdbc;
char * mes[]={"mod success", "mod failure"}; char * mes[]={"mod success", "mod failure"};
@ -20,7 +20,7 @@ char * mes[]={"mod success", "mod failure"};
void mod_authpara(int port, int timehorizon, int failcount, int locktime, int aging_time, configure_result_t *configure_result) void mod_authpara(int port, int timehorizon, int failcount, int locktime, int aging_time, configure_result_t *configure_result)
{ {
authparInit(); authparInit();
void * authpara_hdbc; //void * authpara_hdbc;
char * ret_sql = NULL; char * ret_sql = NULL;
int ret; int ret;
int num; int num;
@ -31,6 +31,7 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag
return; return;
} }
#if 0
printf("开始连接数据库\n"); printf("开始连接数据库\n");
/* 连接数据库 */ /* 连接数据库 */
@ -43,15 +44,18 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag
/*长整型bigint 浮点型double 字符串character(10)*/ /*长整型bigint 浮点型double 字符串character(10)*/
printf("authpara_hdbc = %p\n", authpara_hdbc); printf("authpara_hdbc = %p\n", authpara_hdbc);
ret = create_database_table(AUTHPARA_DATABASE_ID, authpara_hdbc, "authparas", "create table authparas(port bigint, timehorizon bigint, failcount bigint, locktime bigint, aging_time bigint)"); #endif
/*建表*/
ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authparas", "create table authparas(port bigint, timehorizon bigint, failcount bigint, locktime bigint, aging_time bigint)");
printf("%d \n",ret); printf("%d \n",ret);
/* 存authpara表 默认值 */ /* 存authpara表 默认值 */
char *user1_authpara = "INSERT INTO `authparas` SET port = 8080, timehorizon = 1, failcount = 5, locktime = 10, aging_time = 10"; char *user1_authpara = "INSERT INTO `authparas` SET port = 8080, timehorizon = 1, failcount = 5, locktime = 10, aging_time = 10";
int ret_addauthpara = update_database(AUTHPARA_DATABASE_ID, authpara_hdbc, DB_OP_INSERT, AUTHPARA_TABLE, user1_authpara, 0); int ret_addauthpara = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_INSERT, AUTHPARA_TABLE, user1_authpara, 0);
if(0 != ret_addauthpara) if(0 != ret_addauthpara)
{ {
disconnect_database(AUTHPARA_DATABASE_ID , authpara_hdbc); // ret_release记录日志 disconnect_database(AUTHRECOVER_DATABASE_ID , auth_hdbc); // ret_release记录日志
configure_result->resultcode = 1; configure_result->resultcode = 1;
configure_result->message = mes[configure_result->resultcode]; configure_result->message = mes[configure_result->resultcode];
return; return;
@ -59,7 +63,7 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag
char *user_authpara = "UPDATE `authparas` SET port = ?, timehorizon = ?, failcount = ?, locktime = ?, aging_time = ?"; char *user_authpara = "UPDATE `authparas` SET port = ?, timehorizon = ?, failcount = ?, locktime = ?, aging_time = ?";
ret = update_database(AUTHPARA_DATABASE_ID, authpara_hdbc, DB_OP_UPDATE, AUTHPARA_TABLE, user_authpara, 5, ret = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_UPDATE, AUTHPARA_TABLE, user_authpara, 5,
DB_DATA_INT_TYPE, sizeof(port), port, DB_DATA_INT_TYPE, sizeof(port), port,
DB_DATA_INT_TYPE, sizeof(timehorizon), timehorizon, DB_DATA_INT_TYPE, sizeof(timehorizon), timehorizon,
DB_DATA_INT_TYPE, sizeof(failcount), failcount, DB_DATA_INT_TYPE, sizeof(failcount), failcount,

View File

@ -0,0 +1,9 @@
#ifndef AUTH_COMMON_H_
#define AUTH_COMMON_H_
#define AUTHPARA_TABLE "authparas"
#define AUTHFREE_TABLE "authfree"
#define AUTHRECOVER_DATABASE_ID (15)
#endif

View File

@ -11,7 +11,6 @@
#define DELAUTHFREE_FAIL_DATABASE (7) //删除未认证权限失败 #define DELAUTHFREE_FAIL_DATABASE (7) //删除未认证权限失败
#define RULENUM_EXCEED (8) //未认证权限数量超过最大值 #define RULENUM_EXCEED (8) //未认证权限数量超过最大值
typedef enum { typedef enum {
ADD_RULE_OK = 0, ADD_RULE_OK = 0,
ADD_RULE_ERR = 1, ADD_RULE_ERR = 1,

View File

@ -4,7 +4,6 @@
#include <stdint.h> #include <stdint.h>
#include "../Platform/user/configm/config-server/web_config/auth_parameters.h" #include "../Platform/user/configm/config-server/web_config/auth_parameters.h"
#define ADDUSER_FAIL_NAMEDUP 4 //用户名重名 #define ADDUSER_FAIL_NAMEDUP 4 //用户名重名
#define MODAUTHPARA_SUCCESS 0 //修改认证信息成功 #define MODAUTHPARA_SUCCESS 0 //修改认证信息成功