⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db.pc.not_sp

📁 linux 上http email 协议分析程序 主要能够处理大数据量的主干网的应用
💻 NOT_SP
📖 第 1 页 / 共 4 页
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <sqlca.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <Utility.h>
#include "Db.h"
#include "Stru.h"

#define DEBUG

//2004-05-20 
/*********
			EMAIL
*********/
//1:邮件账号

EXEC SQL BEGIN DECLARE SECTION;

typedef struct 
{
	int MAC_ID;
	char MAC_USERID[50+1];
	char MAC_PASSWORD[50+1];
	char MAC_SERVERIP[15+1];
	char MAC_DOMAINNAME[64+1];
	short MAC_SERVICE;
	char MAC_CAPTIME[14+1];
}DBSTRU_TR_T_MAILACCOUNT;

//2:邮件附件
typedef struct 
{
	
   int	MLF_ID;           
   char MIF_ORIGINALFILE[100+1];
   int MIF_FILEBEGIN;
   int MIF_FILESIZE;
  
}DBSTRU_TR_T_MAILFILE;

//3: 邮件信息
typedef struct 
{
   int MIF_ID;
   int MLF_ID;
   char MIF_DATE[19+1];
   char MIF_SUBJECT[100+1];
   short MIF_PROTOCOL;
   char MIF_CLIENTIP[15+1];
   char MIF_SERVERIP[15+1];
   char MIF_CAPTIME[14+1];
   char MIF_CLNTLOCATION[300+1];
   char MIF_CLNTACCOUNT[64+1];
   char MIF_CLNTCALLID[64+1];
}DBSTRU_TR_T_MAILINFO ;

//4: 邮件地址

typedef struct  
{
   int ADM_ID;  
   int MIF_ID;
   char ADM_ADDRESS[80+1];
   short ADM_MAILROLE;
   char ADM_SHOWNAME[50+1];
   short ADM_ISCLIENT;
}DBSTRU_TR_T_MAILADDRESS ;

//5:邮件文本
typedef struct 
{
   int MTX_ID ;
   int MIF_ID;
   char MTX_CONTENTTYPE[50+1];
   char MTX_CHARSET[50+1];
   char MTX_TEXTBODY[4000+1];
}DBSTRU_TR_T_MAILTEXT;

//6:特控邮件附件

typedef struct 
{
   int SMF_ID;
   char SMF_ORIGINALFILE[100+1];
   int SMF_FILEBEGIN;
   int SMF_FILESIZE;
   
}DBSTRU_TR_T_SPEMAILFILE;

//7:特控邮件信息
typedef struct  
{
	int SMI_ID;
	int SMF_ID;
	char SMI_DATE[19+1];
	char SMI_CAPTIME[14+1];
	char SMI_SUBJECT[100+1];
	char SMI_CLIENTIP[15+1];
	char SMI_SERVERIP[15+1];
	short SMI_PROTOCOL;
	char SMI_CLNTLOCATION[300+1];
	char SMI_CLNTACCOUNT[64+1];
	char SMI_CLNTCALLID[64+1];
	short SMI_SPEINFOSTATUS;
}DBSTRU_TR_T_SPEMAILINFO;

//8:特控邮件地址
typedef struct  
{
   int SMA_ID;
   int SMI_ID;
   short SMA_MAILROLE;
   char SMA_SHOWNAME[50+1];
   char SMA_ADDRESS[80+1];
   short SMA_ISCLIENT; 
}DBSTRU_TR_T_SPEMAILADDRESS;

//9:特控邮件文本
typedef struct 
{
   int SMT_ID;
   int SMI_ID;
   char SMT_TEXTBODY[4000+1];
   char SMT_CONTENTTYPE[50+1];
   char SMT_CHARSET[50+1];
}DBSTRU_TR_T_SPEMAILTEXT;


/*********
			HTTP 
*********/
//10:提交监控规则
typedef struct  
{
   int SBR_ID ;
   int WMR_ID ;
   char SBR_SUBMITFIELD[64+1];
   char SBR_APPFIELD[64+1];
   char SBR_SUBMITVALUE[64+1];
   short SBR_SUBMITWAY;//  0 非cookie  1 表示cookie
}DBSTRU_TR_T_SUBMITRULE;

//11:WEB应用


typedef struct 
{
   int WAP_ID;
   char WAP_WEBAPPNAME[64+1];
   char WAP_WEBAPPDESC[300+1];
}DBSTRU_TR_T_WEBAPP;

//12:WEB监控规则

typedef struct  
{
   int WMR_ID;
   int ACT_ID;
   int WAP_ID;
   char WMR_URLFEATURE[500+1];
   short WMR_DATAFLOW;
   short WMR_CAPCALL;//0 表示只捕捉设定的字段  1 表示捕捉全部字段
   short WMR_CAPCOOKIE;//0 表示不捕捉cookie  1 表示捉cookie
}DBSTRU_TR_T_WEBMONRULE;

//13:敏感网页

typedef struct  
{
    int SPG_ID;
   int ACT_ID;
   int WAP_ID;
   char SPG_CLIENTIP[15+1];
   char SPG_SERVERIP[15+1];
   char SPG_DOMAINNAME[64+1];
   char SPG_CAPTIME[14+1];
   int SPG_DATAFLOW;
   char SPG_CLNTLOCATION[300+1];
   char SPG_CLNTACCOUNT[64+1];
   char SPG_CLNTCALLID[64+1];
   char SPG_PAGECONTENT[300+1];
   int	SPG_RESOURCELENGTH;
   int  SPG_HASSUBMIT;
   int  SPG_SPEINFOSTATUS;
}DBSTRU_TR_T_SENPAGE;


//14:活动类型
typedef struct  
{
   int ACT_ID;
   char ACT_TYPENAME[50+1];
   char ACT_TYPEDESC[250+1];
}DBSTRU_TR_T_ACTIONTYPE;

//15:提交内容
typedef struct 
{
	int SBC_ID;
	int SPG_ID;
	
	char SBC_FIELDNAME[64+1];
	char SBC_FIELDVALUE[4000+1];
}DBSTRU_TR_T_SUBMITCONTENT;


/**********
	告警
**********/

//16: 特定对象邮件地址
typedef struct  
{
   int AMA_ID;
   int AMG_ID;
   char AMA_EMAILADDRESS[80+1];
}DBSTRU_TR_T_AIMEDMAILADD;


/**********
	活动记录
**********/
typedef struct  
{   
	int INA_ID;
	int CPR_ID;
	int ACT_ID;
	char INA_CLIENTIP[15+1];
	char INA_SERVERIP[15+1];
	char INA_CAPTIME[14+1];
	char INA_ABOUTACTION[500+1];
	char INA_CLNTLOCATION[300+1];
	char INA_CLNTACCOUNT[64+1];
	char INA_CLNTCALLID[64+1];
	char INA_SRVRLOCATION[300+1];
	char INA_SRVRACCOUNT[64+1];
	char INA_SRVRCALLID[64+1];
}DBSTRU_TR_T_INETACTION;

typedef struct
{
	int AMA_ID;
 	int AMG_ID;
 	char AMA_EMAILADDRESS[80+1];
}DBSSTRU_TR_T_AIMEDMAILADD;

typedef struct
{
   int ALE_ID ;
   int AMG_ID  ;
   int ALE_ALARMTYPE ;
   int ALE_ALARMSTATUS  ;
   char ALE_ALARMTITLE [64+1];
   char ALE_ALARMCONTENT[500+1];
   char ALE_ALARMTIME [14+1];
   short ALE_INFOTYPE;                                       
   int  ALE_INFOID;   
}DBSTRU_TR_T_ALARMEVENT;


typedef struct
{
   int CMS_ID ;
   char CMS_STARTIP[15+1];
   char CMS_STOPIP[15+1];
   char CMS_DOMAINNAME[64+1];
   char CMS_DESC[300+1];

}DBSTRU_TR_T_COMMONMONSITE;

typedef struct
{
   int AFE_ID;
   int AMG_ID;
   int AFE_TYPE;
   char AFE_BEGINVALUE[150+1];
   char AFE_ENDVALUE[150+1];
   char AFE_ADDVALUE[150+1];
  
}DBSTRU_TR_T_AIMEDFEATURE;

typedef struct
{
	int	GPR_ID;
	char GPR_PARANAME[64+1];
	char GPR_PARAVALUE[4000+1];
	char GPR_PARADESC[300+1];
}DBSTRU_TR_T_GENERALPARA;

typedef struct
{
	int OTI_ID;
	int AMG_ID;
	int OTI_INFOID;
	int OTI_INFOTYPE;
	int OTI_RPRECISION;
	int OTI_READSTATUS; 
}DBSTRU_TR_T_OBJECT2INFO;

typedef struct 
{
	int SKW_ID;                                   
	short  SKW_TYPE;                                          
	char  SKW_VALUE[250+1];
}DBSTRU_TR_T_SENKEYWORD;

//加密网页 TR_T_SSLWEBPAGE 只记录https请求
typedef struct
{  
	int SWP_ID;
	//int	LS_ID;
	char SWP_SERVERIP[15+1];
	char SWP_CLIENTIP[15+1];
	char SWP_CAPTIME[14+1];
	char SWP_CLNTLOCATION[300+1];
	char SWP_CLNTACCOUNT[64+1];
	char SWP_CLNTCALLID[64+1];
 }DBSTRU_TR_T_SSLWEBPAGE;

//加密网站 TR_T_SSLSITE
typedef struct
{ 
   int SLS_ID;
   char SLS_DOMAINNAME[64+1];
   char SLS_REMARKS[200+1];
}DBSTRU_TR_T_SSLSITE;

//动态IP TR_T_DYNAMICIP
typedef struct
{    
	int DIP_ID;
	int SLS_ID;
	char DIP_IP[15+1];
	char DIP_STARTTIME[14+1];
	char DIP_STOPTIME[14+1];
}DBSTRU_TR_T_DYNAMICIP;



int gi_id;

EXEC SQL END DECLARE SECTION;

int checkSqlCode()
{
if(sqlca.sqlcode==-1405)
	sqlca.sqlcode=0;
if(sqlca.sqlcode==-28 || sqlca.sqlcode==-3313  || sqlca.sqlcode==-3314)
	{
		TLog::toErr("!!!exit by oracle errcode=[%d]!!!",sqlca.sqlcode);
		exit(0);
	}
return sqlca.sqlcode;

}

bool ifExitSqlCode()
{
	
		return true;
	return false;
}

COra::COra(char *cname,char *cpass,char *server)
{
	EXEC SQL BEGIN DECLARE SECTION;
	
		char vc_name[32];
		char vc_pass[32];
		char vc_server[32];
	
	EXEC SQL END DECLARE SECTION;

	assert(cname!=NULL && strlen(cname)<32);
	assert(cpass!=NULL && strlen(cpass)<32);

	strcpy(vc_name,cname);
	strcpy(vc_pass,cpass);
	strcpy(vc_server,server);
	EXEC SQL CONNECT :vc_name IDENTIFIED BY :vc_pass AT:vc_server;
	if(sqlca.sqlcode<0)
	{
		printf("connect oracle(%s %s %s) error (%d)\n",vc_name,vc_pass,vc_server,sqlca.sqlcode);
		TLog::toErr("connect oracle(%s %s %s) error (%d)\n",vc_name,vc_pass,vc_server,sqlca.sqlcode);
		exit(-1);
	}
	printf("connected to oracle\n");

}

COra::COra(char *cname,char *cpass)
{
	EXEC SQL BEGIN DECLARE SECTION;
	
		char vc_name[32];
		char vc_pass[32];
		char vc_server[32];
	
	EXEC SQL END DECLARE SECTION;

	assert(cname!=NULL && strlen(cname)<32);
	assert(cpass!=NULL && strlen(cpass)<32);

	strcpy(vc_name,cname);
	strcpy(vc_pass,cpass);
	EXEC SQL CONNECT :vc_name IDENTIFIED BY :vc_pass ;
	if(sqlca.sqlcode<0)
	{
		printf("connect oracle error (%d)\n",sqlca.sqlcode);
		TLog::toErr("connect oracle error (%d)\n",sqlca.sqlcode);
		exit(-1);
	}
	printf("connected to oracle\n");
	

}

COra::~COra()
{
	EXEC SQL COMMIT WORK RELEASE;
}

/*void CSeqEmail::prepare()
{
	EXEC SQL BEGIN DECLARE SECTION;
		char c_sql[512];
	EXEC SQL END DECLARE SECTION;

	strcpy(c_sql, "SELECT S_TR_T_MAILADDRESS.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_MAILADDRESS FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}
		   
	strcpy(c_sql, "SELECT S_TR_T_MAILFILE.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_MAILFILE FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}
	
	strcpy(c_sql, "SELECT S_TR_T_MAILINFO.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_MAILINFO FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}
	
	strcpy(c_sql, "SELECT S_TR_T_MAILACCOUNT.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_MAILACCOUNT FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}
	
 	strcpy(c_sql, "SELECT S_TR_T_MAILTEXT.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_MAILTEXT FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}

 	strcpy(c_sql, "SELECT S_TR_T_SPEMAILFILE.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_SPEMAILFILE FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}
	
	strcpy(c_sql, "SELECT S_TR_T_SPEMAILINFO.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_SPEMAILINFO FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}

 	strcpy(c_sql, "SELECT S_TR_T_SPEMAILADDRESS.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_SPEMAILADDRESS FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}
 	
	strcpy(c_sql, "SELECT S_TR_T_SPEMAILTEXT.NEXTVAL INTO :? FROM DUAL");
	EXEC SQL PREPARE getseq_S_TR_T_SPEMAILTEXT FROM :c_sql;  
	if(checkSqlCode()!=0)
	{
		TLog::toErr("prepare [%s] [%d]\n",c_sql,sqlca.sqlcode);
	}


}*/

CSeqEmail::CSeqEmail()
{

 m_iS_TR_T_MAILADDRESS=getS_TR_T_MAILADDRESS();
 m_iS_TR_T_MAILFILE=getS_TR_T_MAILFILE();
 m_iS_TR_T_MAILINFO=getS_TR_T_MAILINFO();
 m_iS_TR_T_MAILACCOUNT=getS_TR_T_MAILACCOUNT();
 m_iS_TR_T_MAILTEXT=getS_TR_T_MAILTEXT();
 m_iS_TR_T_SPEMAILFILE=getS_TR_T_SPEMAILFILE();
 m_iS_TR_T_SPEMAILINFO=getS_TR_T_SPEMAILINFO();
 m_iS_TR_T_SPEMAILADDRESS=getS_TR_T_SPEMAILADDRESS();
 m_iS_TR_T_SPEMAILTEXT=getS_TR_T_SPEMAILTEXT();

}

CSeqEmail::~CSeqEmail()
{
}
int CSeqEmail::getS_TR_T_MAILADDRESS()
{
	
	EXEC SQL BEGIN DECLARE SECTION;
		int i_id;
	EXEC SQL END DECLARE SECTION;
	
	printf("getS_TR_T_MAILADDRESS()\n");
	EXEC SQL SELECT S_TR_T_MAILADDRESS.NEXTVAL INTO :i_id FROM DUAL ;
	
	printf("getS_TR_T_MAILADDRESS(%d)\n",i_id);
	m_iS_TR_T_MAILADDRESS=i_id;
	printf("getS_TR_T_MAILADDRESS(%d)\n",m_iS_TR_T_MAILADDRESS);
	if(checkSqlCode()!=0)
	{
		printf("SELECT S_TR_T_MAILADDRESS.NEXTVAL [%d]\n",sqlca.sqlcode);
		TLog::toErr("SELECT S_TR_T_MAILADDRESS.NEXTVAL [%d]\n",sqlca.sqlcode);
	}
	
	return (m_iS_TR_T_MAILADDRESS);

}
int CSeqEmail::getS_TR_T_MAILFILE()
{
	EXEC SQL BEGIN DECLARE SECTION;
		int i_id;
	EXEC SQL END DECLARE SECTION;
	
	EXEC SQL SELECT S_TR_T_MAILFILE.NEXTVAL INTO :i_id FROM DUAL ;
	
	m_iS_TR_T_MAILFILE=i_id;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -