69,371
社区成员
发帖
与我相关
我的任务
分享
#ifndef MY_TABLE_STRUCT_H
#define MY_TABLE_STRUCT_H
#define POLICY_UTIL_ARRAY_LENGTH 256*64
#define ARRAY_SIZE 256
long saved_policy_id[10];
long saved_udp_allow_IP_ID[10];
long save_log_ID[10];
/*与日志审计相关的文件路径定义*/
#define SYSTEM_LOG "/tmp/log/system.log"
#define HTTP_LOG "/tmp/log/http.log"
#define SMTP_LOG "/tmp/log/smtp.log"
#define POP3_LOG "/tmp/log/pop3.log"
#define SYSTEM_INTERMEDIARY_LOG "/tmp/log/system_intermediary.log"
#define HTTP_INTERMEDIARY_LOG "/tmp/log/http_intermediary.log"
#define SMTP_INTERMEDIARY_LOG "/tmp/log/smtp_intermediary.log"
#define POP3_INTERMEDIARY_LOG "/tmp/log/pop3_intermediary.log"
typedef struct{
int used; //0 for unused
int AppID;
/*
00 "系统",
01 "HTTP应用",
02 "SMTP应用",
03 "POP3应用",
04 "FTP应用",
05 "TELNET应用",
06 "NULL ",
07 "用户自定义应用",
08 "TCP空白协议",
09 "UDP应用",
0a "ORACLE数据库应用",
0b "SQL Server 数据库应用",
0c "邮件服务器与邮件服务器应用",
*/
char SourceIP[20];
short SourcePort;
char DestIP[20];
short DestPort;
char SourceType; //I for inner;O for outter
char IsDestProxyMode;
short MaxConn;
char IsWorking;
// 'Y' for "自动启用,现启用"
//'N' for "自动启用,现停用"
//'U' for "手动启用,现停用"
//'W' for "手动启用,现启用"
char IsAuth;
// 0 for no auth
// 1 for auth
char name[20];
UINT16 InnerPort; //for udp
UINT16 OuterPort;
char IsAllowed; //安全策略黑白指示
// 'Y' for 白
// 'N' for 黑
char FromTime[8][8];
char ToTime[8][8];
char WeekDay[8][8];
//for udp allowed ip
unsigned int inner_udp_ip[256];
unsigned int outer_udp_ip[256];
//for tcp allowed ip
struct IP {
char ip[255];
int black_white;
} allowed_ip[256];
struct POLICY {
long p_id;
short type;
char IsWorking;
char p_content[255];
char IsAllowed;
} policy[64];
}TABLE_CHANNEL;
TABLE_CHANNEL table_channels[ARRAY_SIZE];
#endif
void chn_write_file()
{
FILE *fp;
int i;
DO_LOG("chn_write_file():write to the file start...\n");
fp=fopen("/tmp/data/db_file/tcp_file","wb");
if(fp==NULL)
{
printf("file /tmp/udp_chn open error\n");
return;
}
//for(i=0;i<256;i++)
//fwrite(&table_channels[i],sizeof(TABLE_CHANNEL),1,fp);//把内存中的信息写入到文件中去
fwrite(table_channels, sizeof(TABLE_CHANNEL), 256, fp);
fclose(fp);
DO_LOG("chn_write_file():write to the file end...\n");
}
void chn_read_file()
{
MY_DEBUG_LOG("chn_read_file():read from the file start...\n");
DO_LOG("chn_read_file():read from the file start...\n");
FILE *fp;
int i, j;
fp= fopen("/tmp/data/db_file/tcp_file", "rb");
if(fp == NULL)
{
DO_LOG("chn_read_file():open file failed, because:%s!\n", strerror(errno));
return ;
}
/*for(i = 0; i< 256; i++)
{
fread(&table_channels[i], sizeof(TABLE_CHANNEL), 1, fp);
}*/
fread(table_channels, sizeof(TABLE_CHANNEL), 256, fp);
/*****打印结构体数组中的数据*******/
MY_DEBUG_LOG("chn_read_file(): The informations of approuteways bellows:\n");
for(i =0; i<256; i++)
{
if(table_channels[i].used == 0)
{
continue;
}
MY_DEBUG_LOG("[ReadFile]:ID:%d, used:%d, AppID:%d, SourceIP:%s, SourcePort:%d,\
DestIP:%s, DestPort:%d, SourceType:%c, IsDestProxyMode:%c, MaxConn:%d,\
IsWorking:%c, IsAuth:%c, InnerPort:%d, OuterPort:%d, IsAllowed:%c, name:%s!\n", \
i, table_channels[i].used, table_channels[i].AppID,table_channels[i].SourceIP,table_channels[i].SourcePort, \
table_channels[i].DestIP, table_channels[i].DestPort, table_channels[i].SourceType, table_channels[i].IsDestProxyMode,\
table_channels[i].MaxConn, table_channels[i].IsWorking,table_channels[i].IsAuth,table_channels[i].InnerPort,\
table_channels[i].OuterPort,table_channels[i].IsAllowed,table_channels[i].name);
}
MY_DEBUG_LOG("chn_read_file(): The informations of allowd time bellows:\n");
for(i=0; i<256; i++)
{
if(table_channels[i].used == 0)
{
continue;
}
for(j=0; j<8; j++)
{
if(table_channels[i].FromTime[j][0] == 0)
{
continue;
}
if(table_channels[i].ToTime[j][0] == 0)
{
continue;
}
if(table_channels[i].WeekDay[j][0] == 0)
{
continue;
}
MY_DEBUG_LOG("chn_read_file():ID:%d,FormTime:%s,ToTime:%s,WeekDay:%s\n",\
i,&table_channels[i].FromTime[j][0], &table_channels[i].ToTime[j][0], &table_channels[i].WeekDay[j][0]);
}
}
MY_DEBUG_LOG("chn_read_file(): The informations of allowd IPs bellows:\n");
for(i=0; i<256; i++)
{
if(table_channels[i].used == 0)
{
continue;
}
for(j=0; j<256; j++)
{
if(table_channels[i].allowed_ip[j].ip[0] ==0)
{
continue;
}
if(table_channels[i].allowed_ip[j].black_white == 0)
{
MY_DEBUG_LOG("chn_read_file():ID:%d, ip %s, black_white:%d\n",
i, table_channels[i].allowed_ip[j].ip, table_channels[i].allowed_ip[j].black_white);
}
}
}
MY_DEBUG_LOG("chn_read_file(): The informations of allowd users bellows:\n");
for(i=0; i<256; i++)
{
if(table_channels[i].used == 0)
{
continue;
}
for(j=0; j<256; j++)
{
if(table_channels[i].allowed_ip[j].ip[0] ==0)
{
continue;
}
if(table_channels[i].allowed_ip[j].black_white == 1)
{
MY_DEBUG_LOG("chn_read_file():ID:%d, users %s, black_white:%d\n",
i, table_channels[i].allowed_ip[j].ip, table_channels[i].allowed_ip[j].black_white);
}
}
}
MY_DEBUG_LOG("chn_read_file(): The informations of policies bellows:\n");
for(i=0; i<256; i++)
{
if(table_channels[i].used == 0)
{
continue;
}
for(j =0 ; j <64; j++)
{
if(table_channels[i].policy[j].type == 0)
{
continue;
}
MY_DEBUG_LOG("[ReadFile]:ID:%d, AppID:%d, used:%d, policy_id:%d , type:%x, IsWorking:%c, p_content:%s, IsAllowed:%c.\n",
i,table_channels[i].AppID,table_channels[i].used,table_channels[i].policy[j].p_id,table_channels[i].policy[j].type,
table_channels[i].policy[j].IsWorking,table_channels[i].policy[j].p_content, table_channels[i].policy[j].IsAllowed);
}
}
fclose(fp);
MY_DEBUG_LOG("chn_read_file():read from the file start end...\n");
}
// fwrite(table_channels, sizeof(TABLE_CHANNEL), 256, fp);
for (int i = 0; i < 256; i++)
{
fwrite(table_channels[i], sizeof(TABLE_CHANNEL), 1, fp);
}