parent
52041d6270
commit
16399fce82
File diff suppressed because it is too large
Load Diff
|
@ -4,23 +4,35 @@
|
|||
#include "../include/user_authfree.h"
|
||||
#include "string.h"
|
||||
|
||||
#define AUTHFREE_DATABASE_ID 16
|
||||
#define AUTHFREE_DATABASE_ID (16)
|
||||
#define AUTHFREE_TABLE "authfree"
|
||||
|
||||
extern freeauth_configure_t freeauth_array[];
|
||||
|
||||
#define ADDAUTFREE_SUCCESS 0 //增加未认证权限成功
|
||||
#define ADDAUTFREE_FAIL_DATABASE 1 //增加未认证权限成功失败
|
||||
#define AUTHFREE_NAME_EXISTED 2 //未认证权限名称已存在
|
||||
#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 //未认证权限数量超过最大值
|
||||
static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success",
|
||||
"modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum",
|
||||
"rule full"
|
||||
};
|
||||
|
||||
char * authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success",
|
||||
"modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum"};
|
||||
static char *get_sql_ret_message(SQL_RET_CODE code)
|
||||
{
|
||||
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)
|
||||
|
@ -33,8 +45,13 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
int i;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
if(NULL == authfree_hdbc)
|
||||
{
|
||||
|
||||
if(NULL == authfree_hdbc) {
|
||||
printf("connetc failure\n");
|
||||
return;
|
||||
}
|
||||
|
@ -58,16 +75,14 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
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,
|
||||
DB_DATA_STRING_TYPE, strlen(name) + 1, name);
|
||||
if(NULL != ret_sql)
|
||||
{
|
||||
|
||||
if(NULL != ret_sql) {
|
||||
/*用户名已存在*/
|
||||
disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
|
||||
authfree_result->resultcode = 2;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = RULE_EXISTED;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
/* 根据指定信息查询数据库的获取的结果的条目数 条目数大于10 则不能再添加 */
|
||||
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,
|
||||
|
@ -79,12 +94,12 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
DB_DATA_INT_TYPE, sizeof(flag), flag);
|
||||
printf("num_sql = %d \n", num_sql);
|
||||
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记录日志
|
||||
authfree_result->resultcode = 8;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = RULE_ID_MAX;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -98,12 +113,12 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
DB_DATA_INT_TYPE, sizeof(dport), dport,
|
||||
DB_DATA_INT_TYPE, sizeof(flag), flag);
|
||||
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记录日志
|
||||
authfree_result->resultcode = 1;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = ADD_RULE_ERR;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -111,17 +126,17 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
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);
|
||||
/*两个字符串相等 strcmp值为0*/
|
||||
int a = strlen(freeauth_array[i].name);
|
||||
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]);
|
||||
memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t));
|
||||
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].dip = dip;
|
||||
freeauth_array[i].dport = dport;
|
||||
|
@ -133,11 +148,10 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
}
|
||||
|
||||
/*添加成功*/
|
||||
authfree_result->resultcode = 0;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = ADD_RULE_OK;
|
||||
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)
|
||||
{
|
||||
|
@ -148,8 +162,7 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
int num;
|
||||
int i;
|
||||
|
||||
if (NULL == authfree_result)
|
||||
{
|
||||
if(NULL == authfree_result) {
|
||||
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);
|
||||
if(NULL == authfree_hdbc)
|
||||
{
|
||||
|
||||
if(NULL == authfree_hdbc) {
|
||||
printf("connetc failure\n");
|
||||
return;
|
||||
}
|
||||
|
@ -172,16 +185,14 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
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,
|
||||
DB_DATA_STRING_TYPE, strlen(name) + 1, name);
|
||||
if(NULL == ret_sql)
|
||||
{
|
||||
|
||||
if(NULL == ret_sql) {
|
||||
/*未认证权限用户名不存在*/
|
||||
disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc);
|
||||
authfree_result->resultcode = 5;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = RULE_NOT_FOUNT;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
/*修改authfree表中内部源IP地址、目的IP地址、目的端口号 未认证权限名称不能修改 */
|
||||
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,
|
||||
|
@ -192,12 +203,12 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
DB_DATA_INT_TYPE, sizeof(flag), flag,
|
||||
DB_DATA_STRING_TYPE, strlen(name) + 1, name);
|
||||
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记录日志
|
||||
authfree_result->resultcode = 4;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = MOD_RULE_ERR;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -205,11 +216,9 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
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*/
|
||||
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]);
|
||||
freeauth_array[i].rule_priority = rule_priority;
|
||||
freeauth_array[i].sip = sip;
|
||||
|
@ -223,17 +232,17 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int
|
|||
}
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*修改成功*/
|
||||
authfree_result->resultcode = 3;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
return;
|
||||
authfree_result->resultcode = MOD_RULE_OK;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
}
|
||||
|
||||
|
||||
|
@ -247,8 +256,7 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
|
|||
int num;
|
||||
int i;
|
||||
|
||||
if (NULL == authfree_result)
|
||||
{
|
||||
if(NULL == authfree_result) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -256,8 +264,8 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
|
|||
|
||||
/* 连接数据库 */
|
||||
authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID);
|
||||
if(NULL == authfree_hdbc)
|
||||
{
|
||||
|
||||
if(NULL == authfree_hdbc) {
|
||||
printf("connetc failure\n");
|
||||
return;
|
||||
}
|
||||
|
@ -271,25 +279,23 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
|
|||
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,
|
||||
DB_DATA_STRING_TYPE, strlen(name) + 1, name);
|
||||
if(NULL == ret_sql)
|
||||
{
|
||||
|
||||
if(NULL == ret_sql) {
|
||||
/*未认证权限用户名不存在*/
|
||||
authfree_result->resultcode = 5;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = RULE_NOT_FOUNT;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
/*删除authfree表中未认证权限名称、内部源IP地址、目的IP地址、目的端口号 */
|
||||
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,
|
||||
DB_DATA_STRING_TYPE, strlen(name) + 1, name);
|
||||
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记录日志
|
||||
authfree_result->resultcode = 7; /*删除失败*/
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
authfree_result->resultcode = DEL_RULE_ERR; /*删除失败*/
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -297,18 +303,11 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
|
|||
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*/
|
||||
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]);
|
||||
freeauth_array[i].rule_priority = 0;
|
||||
memcpy(freeauth_array[i].name, "0" , sizeof(char)*32);
|
||||
freeauth_array[i].sip = 0;
|
||||
freeauth_array[i].dip = 0;
|
||||
freeauth_array[i].dport = 0;
|
||||
freeauth_array[i].flag = 0;
|
||||
memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t));
|
||||
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;
|
||||
|
@ -316,16 +315,16 @@ void del_authfree(char *name, authfree_result_t *authfree_result)
|
|||
}
|
||||
|
||||
#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,
|
||||
freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*删除成功*/
|
||||
authfree_result->resultcode = 6;
|
||||
authfree_result->message = authfreemes[authfree_result->resultcode];
|
||||
return;
|
||||
authfree_result->resultcode = DEL_RUL_OK;
|
||||
authfree_result->message = get_sql_ret_message(authfree_result->resultcode);
|
||||
}
|
|
@ -1,14 +1,30 @@
|
|||
#ifndef USER_AUTHFREE_H_
|
||||
#define USER_AUTHFREE_H_
|
||||
|
||||
#define ADDAUTFREE_SUCCESS 0 //增加未认证权限成功
|
||||
#define ADDAUTFREE_FAIL_DATABASE 1 //增加未认证权限成功失败
|
||||
#define AUTHFREE_NAME_EXISTED 2 //未认证权限名称已存在
|
||||
#define MODAUTHFREE_SUCCESS 3 //修改未认证权限成功
|
||||
#define MODAUTHFREE_FAIL_DATABASE 4 //修改未认证权限失败
|
||||
#define AUTHFREE_NAME_NOTFOUND 5 //未认证权限名称不存在
|
||||
#define DELAUTHFREE_SUCCESS 6 //删除未认证权限成功
|
||||
#define DELAUTHFREE_FAIL_DATABASE 7 //删除未认证权限失败
|
||||
#define ADDAUTFREE_SUCCESS (0) //增加未认证权限成功
|
||||
#define ADDAUTFREE_FAIL_DATABASE (1) //增加未认证权限成功失败
|
||||
#define AUTHFREE_NAME_EXISTED (2) //未认证权限名称已存在
|
||||
#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) //未认证权限数量超过最大值
|
||||
|
||||
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue