Mod aaa-12 修改配置-未认证权限

RCA:
SOL:
修改人:chenling
检视人:
This commit is contained in:
ChenLing 2019-08-20 15:46:36 +08:00
parent 52041d6270
commit 16399fce82
3 changed files with 464 additions and 667 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,46 +4,63 @@
#include "../include/user_authfree.h" #include "../include/user_authfree.h"
#include "string.h" #include "string.h"
#define AUTHFREE_DATABASE_ID 16 #define AUTHFREE_DATABASE_ID (16)
#define AUTHFREE_TABLE "authfree" #define AUTHFREE_TABLE "authfree"
extern freeauth_configure_t freeauth_array[]; extern freeauth_configure_t freeauth_array[];
#define ADDAUTFREE_SUCCESS 0 //增加未认证权限成功 static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success",
#define ADDAUTFREE_FAIL_DATABASE 1 //增加未认证权限成功失败 "modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum",
#define AUTHFREE_NAME_EXISTED 2 //未认证权限名称已存在 "rule full"
#define MODAUTHFREE_SUCCESS 3 //修改未认证权限成功 };
#define MODAUTHFREE_FAIL_DATABASE 4 //修改未认证权限失败
#define AUTHFREE_NAME_NOTFOUND 5 //未认证权限名称不存在
#define DELAUTHFREE_SUCCESS 6 //删除未认证权限成功
#define DELAUTHFREE_FAIL_DATABASE 7 //删除未认证权限失败
#define RULENUM_EXCEED 8 //未认证权限数量超过最大值
char * authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success", static char *get_sql_ret_message(SQL_RET_CODE code)
"modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum"}; {
if(code >= 0 && code < CODE_MAX) {
return authfreemes[code];
}
return "Unknown code";
}
static int is_rule_full(void)
{
for(int i = 0; i < RULE_MAX_NUM; i++) {
if(strlen(freeauth_array[i].name) == 0) {
return 0;
}
}
return 1;
}
/*增加未认证权限规则*/ /*增加未认证权限规则*/
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;
int num; int num;
int i; int i;
int num_sql; int num_sql;
if (NULL == authfree_result) if(NULL == authfree_result) {
{
return; return;
} }
if(is_rule_full()) {
authfree_result->resultcode = RULE_FULL;
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return;
}
printf("开始连接数据库\n"); printf("开始连接数据库\n");
/* 连接数据库 */ /* 连接数据库 */
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID);
if(NULL == authfree_hdbc)
{ if(NULL == authfree_hdbc) {
printf("connetc failure\n"); printf("connetc failure\n");
return; return;
} }
@ -51,114 +68,110 @@ 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)"); 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)");
printf("%d \n",ret); printf("%d \n", ret);
/*查询数据库是否存在该权限规则*/ /*查询数据库是否存在该权限规则*/
char * select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree` WHERE name = ?"; char *select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree` WHERE name = ?";
ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1, ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1,
DB_DATA_STRING_TYPE, strlen(name)+1, name); DB_DATA_STRING_TYPE, strlen(name) + 1, name);
if(NULL != ret_sql)
{ if(NULL != ret_sql) {
/*用户名已存在*/ /*用户名已存在*/
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
authfree_result->resultcode = 2; authfree_result->resultcode = RULE_EXISTED;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} } else {
else
{
/* 根据指定信息查询数据库的获取的结果的条目数 条目数大于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(AUTHFREE_DATABASE_ID, authfree_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,
DB_DATA_INT_TYPE, sizeof(dip), dip, DB_DATA_INT_TYPE, sizeof(dip), dip,
DB_DATA_INT_TYPE, sizeof(dport), dport, DB_DATA_INT_TYPE, sizeof(dport), dport,
DB_DATA_INT_TYPE, sizeof(flag), flag); DB_DATA_INT_TYPE, sizeof(flag), flag);
printf("num_sql = %d \n", num_sql); printf("num_sql = %d \n", num_sql);
printf("ret = %d \n", ret); printf("ret = %d \n", ret);
if (num_sql > RULE_MAX_NUM)
{ if(num_sql > RULE_MAX_NUM) {
/*添加失败*/ /*添加失败*/
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); // ret_release记录日志 disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release记录日志
authfree_result->resultcode = 8; authfree_result->resultcode = RULE_ID_MAX;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} }
/* 向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(AUTHFREE_DATABASE_ID, authfree_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,
DB_DATA_INT_TYPE, sizeof(dip), dip, DB_DATA_INT_TYPE, sizeof(dip), dip,
DB_DATA_INT_TYPE, sizeof(dport), dport, DB_DATA_INT_TYPE, sizeof(dport), dport,
DB_DATA_INT_TYPE, sizeof(flag), flag); DB_DATA_INT_TYPE, sizeof(flag), flag);
printf("the value of ret:%d\n", ret_add); printf("the value of ret:%d\n", ret_add);
if(0 != ret_add)
{ if(0 != ret_add) {
/*添加失败*/ /*添加失败*/
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); // ret_release记录日志 disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release记录日志
authfree_result->resultcode = 1; authfree_result->resultcode = ADD_RULE_ERR;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} }
} }
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
/*存未认证权限数数组*/ /*存未认证权限数数组*/
for(i = 0; i < RULE_MAX_NUM; i++) for(i = 0; i < RULE_MAX_NUM; i++) {
{ printf("the name is :%s\n", freeauth_array[i].name);
printf("the name is :%s\n", freeauth_array[i].name );
/*两个字符串相等 strcmp值为0*/ /*两个字符串相等 strcmp值为0*/
int a = strlen(freeauth_array[i].name); int a = strlen(freeauth_array[i].name);
printf("%d\n", a); printf("%d\n", a);
if (0 == strlen(freeauth_array[i].name))
{ if(0 == strlen(freeauth_array[i].name)) {
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));
freeauth_array[i].rule_priority = rule_priority; freeauth_array[i].rule_priority = rule_priority;
memcpy(freeauth_array[i].name, name, sizeof(char)*32); strncpy(freeauth_array[i].name, name, 32);
freeauth_array[i].sip = sip; freeauth_array[i].sip = sip;
freeauth_array[i].dip = dip; freeauth_array[i].dip = dip;
freeauth_array[i].dport = dport; freeauth_array[i].dport = dport;
freeauth_array[i].flag = flag; freeauth_array[i].flag = flag;
printf("[%d %s %d %d %d %d %d]\n",freeauth_array[i].rule_priority,freeauth_array[i].name, freeauth_array[i].sip, 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); freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i);
break; break;
} }
} }
/*添加成功*/ /*添加成功*/
authfree_result->resultcode = 0; authfree_result->resultcode = ADD_RULE_OK;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
} }
/*修改未认证权限*/ /*修改未认证权限*/
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;
int num; int num;
int i; int i;
if (NULL == authfree_result) if(NULL == authfree_result) {
{
return; return;
} }
printf("开始连接数据库\n"); printf("开始连接数据库\n");
/* 连接数据库 */ /* 连接数据库 */
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID);
if(NULL == authfree_hdbc)
{ if(NULL == authfree_hdbc) {
printf("connetc failure\n"); printf("connetc failure\n");
return; return;
} }
@ -166,98 +179,93 @@ 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)"); ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)");
printf("%d \n",ret); printf("%d \n", ret);
/*查询数据库是否存在该权限规则*/ /*查询数据库是否存在该权限规则*/
char * select_sql = "SELECT name, sip, dip, dport FROM `authfree`WHERE name = ?"; char *select_sql = "SELECT name, sip, dip, dport FROM `authfree`WHERE name = ?";
ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1, ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1,
DB_DATA_STRING_TYPE, strlen(name)+1, name); DB_DATA_STRING_TYPE, strlen(name) + 1, name);
if(NULL == ret_sql)
{ if(NULL == ret_sql) {
/*未认证权限用户名不存在*/ /*未认证权限用户名不存在*/
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
authfree_result->resultcode = 5; authfree_result->resultcode = RULE_NOT_FOUNT;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} } else {
else
{
/*修改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(AUTHFREE_DATABASE_ID, authfree_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,
DB_DATA_INT_TYPE, sizeof(dport), dport, DB_DATA_INT_TYPE, sizeof(dport), dport,
DB_DATA_INT_TYPE, sizeof(flag), flag, DB_DATA_INT_TYPE, sizeof(flag), flag,
DB_DATA_STRING_TYPE, strlen(name)+1, name); DB_DATA_STRING_TYPE, strlen(name) + 1, name);
printf("the value of ret:%d\n", ret_mod); printf("the value of ret:%d\n", ret_mod);
if(0 != ret_mod)
{ if(0 != ret_mod) {
/*修改失败*/ /*修改失败*/
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); // ret_release记录日志 disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release记录日志
authfree_result->resultcode = 4; authfree_result->resultcode = MOD_RULE_ERR;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} }
} }
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
/*修改对应未认证权限数数组*/ /*修改对应未认证权限数数组*/
for (i = 0; i < RULE_MAX_NUM; i++) for(i = 0; i < RULE_MAX_NUM; i++) {
{
/*两个字符串相等 strcmp值为0*/ /*两个字符串相等 strcmp值为0*/
if (0 == strcmp(freeauth_array[i].name, name)) if(0 == strcmp(freeauth_array[i].name, name)) {
{
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]);
freeauth_array[i].rule_priority = rule_priority; freeauth_array[i].rule_priority = rule_priority;
freeauth_array[i].sip = sip; freeauth_array[i].sip = sip;
freeauth_array[i].dip = dip; freeauth_array[i].dip = dip;
freeauth_array[i].dport = dport; freeauth_array[i].dport = dport;
freeauth_array[i].flag = flag; freeauth_array[i].flag = flag;
printf("[%d %s %d %d %d %d %d]\n",freeauth_array[i].rule_priority,freeauth_array[i].name, freeauth_array[i].sip, 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); freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i);
break; break;
} }
} }
#if 0 #if 0
/*打印数组内全部元素*/ /*打印数组内全部元素*/
for (i = 0; i < RULE_MAX_NUM; i++) for(i = 0; i < RULE_MAX_NUM; i++) {
{ printf("%s %d %d %d %d\n", freeauth_array[i].name, freeauth_array[i].sip, freeauth_array[i].dip, freeauth_array[i].dport, i);
printf("%s %d %d %d %d\n",freeauth_array[i].name, freeauth_array[i].sip,freeauth_array[i].dip ,freeauth_array[i].dport, i);
} }
#endif
#endif
/*修改成功*/ /*修改成功*/
authfree_result->resultcode = 3; authfree_result->resultcode = MOD_RULE_OK;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return;
} }
/*删除未认证权限*/ /*删除未认证权限*/
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;
int num; int num;
int i; int i;
if (NULL == authfree_result) if(NULL == authfree_result) {
{
return; return;
} }
printf("开始连接数据库\n"); printf("开始连接数据库\n");
/* 连接数据库 */ /* 连接数据库 */
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID);
if(NULL == authfree_hdbc)
{ if(NULL == authfree_hdbc) {
printf("connetc failure\n"); printf("connetc failure\n");
return; return;
} }
@ -265,67 +273,58 @@ 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)"); ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)");
printf("%d \n",ret); printf("%d \n", ret);
/*查询数据库是否存在该权限规则*/ /*查询数据库是否存在该权限规则*/
char * select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`WHERE name = ?"; char *select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`WHERE name = ?";
ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1, ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1,
DB_DATA_STRING_TYPE, strlen(name)+1, name); DB_DATA_STRING_TYPE, strlen(name) + 1, name);
if(NULL == ret_sql)
{ if(NULL == ret_sql) {
/*未认证权限用户名不存在*/ /*未认证权限用户名不存在*/
authfree_result->resultcode = 5; authfree_result->resultcode = RULE_NOT_FOUNT;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} } else {
else
{
/*删除authfree表中未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */ /*删除authfree表中未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */
char* delfree_sql = "DELETE FROM authfree WHERE name = ?"; char *delfree_sql = "DELETE FROM authfree WHERE name = ?";
int ret_del = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1, int ret_del = update_database(AUTHFREE_DATABASE_ID, authfree_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);
if(0 != ret_del)
{ if(0 != ret_del) {
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); // ret_release记录日志 disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release记录日志
authfree_result->resultcode = 7; /*删除失败*/ authfree_result->resultcode = DEL_RULE_ERR; /*删除失败*/
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return; return;
} }
} }
disconnect_database(AUTHFREE_DATABASE_ID , authfree_hdbc); disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
/*修改对应未认证权限数数组*/ /*修改对应未认证权限数数组*/
for (i = 0; i < RULE_MAX_NUM; i++) for(i = 0; i < RULE_MAX_NUM; i++) {
{
/*两个字符串相等 strcmp值为0*/ /*两个字符串相等 strcmp值为0*/
if (0 == strcmp(freeauth_array[i].name, name)) if(0 == strcmp(freeauth_array[i].name, name)) {
{
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]);
freeauth_array[i].rule_priority = 0; memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t));
memcpy(freeauth_array[i].name, "0" , sizeof(char)*32); 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].sip = 0; freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i);
freeauth_array[i].dip = 0;
freeauth_array[i].dport = 0;
freeauth_array[i].flag = 0;
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; break;
} }
} }
#if 0 #if 0
/*打印数组内全部元素*/ /*打印数组内全部元素*/
for (i = 0; i < RULE_MAX_NUM; i++) for(i = 0; i < RULE_MAX_NUM; i++) {
{ printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip,
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);
freeauth_array[i].dip ,freeauth_array[i].dport, freeauth_array[i].dport, i);
} }
#endif
#endif
/*删除成功*/ /*删除成功*/
authfree_result->resultcode = 6; authfree_result->resultcode = DEL_RUL_OK;
authfree_result->message = authfreemes[authfree_result->resultcode]; authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
return;
} }

View File

@ -1,14 +1,30 @@
#ifndef USER_AUTHFREE_H_ #ifndef USER_AUTHFREE_H_
#define USER_AUTHFREE_H_ #define USER_AUTHFREE_H_
#define ADDAUTFREE_SUCCESS 0 //增加未认证权限成功 #define ADDAUTFREE_SUCCESS (0) //增加未认证权限成功
#define ADDAUTFREE_FAIL_DATABASE 1 //增加未认证权限成功失败 #define ADDAUTFREE_FAIL_DATABASE (1) //增加未认证权限成功失败
#define AUTHFREE_NAME_EXISTED 2 //未认证权限名称已存在 #define AUTHFREE_NAME_EXISTED (2) //未认证权限名称已存在
#define MODAUTHFREE_SUCCESS 3 //修改未认证权限成功 #define MODAUTHFREE_SUCCESS (3) //修改未认证权限成功
#define MODAUTHFREE_FAIL_DATABASE 4 //修改未认证权限失败 #define MODAUTHFREE_FAIL_DATABASE (4) //修改未认证权限失败
#define AUTHFREE_NAME_NOTFOUND 5 //未认证权限名称不存在 #define AUTHFREE_NAME_NOTFOUND (5) //未认证权限名称不存在
#define DELAUTHFREE_SUCCESS 6 //删除未认证权限成功 #define DELAUTHFREE_SUCCESS (6) //删除未认证权限成功
#define DELAUTHFREE_FAIL_DATABASE 7 //删除未认证权限失败 #define DELAUTHFREE_FAIL_DATABASE (7) //删除未认证权限失败
#define RULENUM_EXCEED (8) //未认证权限数量超过最大值
typedef enum {
ADD_RULE_OK = 0,
ADD_RULE_ERR = 1,
RULE_EXISTED = 2,
MOD_RULE_OK = 3,
MOD_RULE_ERR = 4,
RULE_NOT_FOUNT = 5,
DEL_RUL_OK = 6,
DEL_RULE_ERR = 7,
RULE_ID_MAX = 8,
RULE_FULL = 9,
CODE_MAX,
} SQL_RET_CODE;
/*增加未认证权限规则*/ /*增加未认证权限规则*/
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);