parent
52041d6270
commit
16399fce82
File diff suppressed because it is too large
Load Diff
|
@ -4,37 +4,54 @@
|
||||||
#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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_rule_full()) {
|
||||||
|
authfree_result->resultcode = RULE_FULL;
|
||||||
|
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,8 +59,8 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
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,40 +68,38 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,64 +107,62 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,8 +170,8 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
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,22 +179,20 @@ 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,
|
||||||
|
@ -190,65 +201,62 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,8 +264,8 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
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;
|
|
||||||
}
|
}
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue