📄 db.pc
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <sqlda.h>
#include <sqlcpr.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
char WMR_HOST[64+1];
}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_PAGEPOSITION[300+1];
int SPG_RESOURCELENGTH;
int SPG_HASSUBMIT;
int SPG_SPEINFOSTATUS;
}DBSTRU_TR_T_SENPAGE;
typedef struct
{
int SSP_ID;
char SSP_SERVERIP[15+1];
char SSP_DOMAINNAME[64+1];
char SSP_PAGEPOSITION[300+1];
char SSP_CLIENTIP[15+1];
char SSP_CAPTIME[14+1];
int SSP_DATAFLOW;
char SSP_CLNTLOCATION[300+1];
char SSP_CLNTACCOUNT[64+1];
char SSP_CLNTCALLID[64+1];
int SSP_RESOURCELENGTH;
int SSP_HASSUBMIT;
int SSP_SPEINFOSTATUS;
}DBSTRU_TR_T_SPESENPAGE;
//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;
typedef struct
{
int SSB_ID;
int SSP_ID;
char SSB_FIELDNAME[64+1];
char SSB_FIELDVALUE[4000+1];
}DBSTRU_TR_T_SPESUBMITCONTENT;
/**********
告警
**********/
//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;
short ALE_FORWARDSTATUS;
}DBSTRU_TR_T_ALARMEVENT;
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;
typedef struct
{
int TLN_ID;
char TLN_STRATTIME[14+1];
char TLN_STOPTIME[14+1];
char TLN_CLIENTIP[15+1];
char TLN_CLIENTLOCATION[300+1];
char TLN_CLIENTACCOUNT[64+1];
char TLN_CLIENTCALLID[64+1];
char TLN_SERVERIP[15+1];
char TLN_SERVERLOCATION[300+1];
char TLN_SERVERACCOUNT[64+1];
char TLN_SERVERCALLID[64+1];
char TLN_FILEPATH[300+1];
int TLN_FILELENGTH;
int TLN_FILESTATUS;
}DBSTRU_TR_T_TELNETINFO;
typedef struct
{
int FTP_ID;
char FTP_STRATTIME[14+1];
char FTP_STOPTIME[14+1];
char FTP_CLIENTIP[15+1];
char FTP_CLIENTLOCATION[300+1];
char FTP_CLIENTACCOUNT[64+1];
char FTP_CLIENTCALLID[64+1];
char FTP_SERVERIP[15+1];
char FTP_SERVERLOCATION[300+1];
char FTP_SERVERACCOUNT[64+1];
char FTP_SERVERCALLID[64+1];
char FTP_FILEPATH[300+1];
int FTP_FILELENGTH;
int FTP_FILESTATUS;
}DBSTRU_TR_T_FTPINFO;
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;
}
int readTblDiv(char *tblname,char *yyyymm)
{
EXEC SQL BEGIN DECLARE SECTION;
char vc_tablename[64];
char vc_suffix[64];
int i_id;
EXEC SQL END DECLARE SECTION;
strcpy(vc_tablename,tblname);
strcpy(vc_suffix,yyyymm);
EXEC SQL SELECT STC_MODULE INTO :i_id
FROM tr_t_splittablecfg WHERE STC_TABLENAME=:vc_tablename and STC_SUFFIX=:vc_suffix ;
if(checkSqlCode()!=0)
{
printf("select FROM tr_t_splittablecfg (%s) (%s) (%d)\n",vc_tablename,vc_suffix,sqlca.sqlcode);
TLog::toErr("select FROM tr_t_splittablecfg (%s) (%s) (%d)\n",vc_tablename,vc_suffix,sqlca.sqlcode);
return -1;
}
return i_id;
}
//USE prepare
/*int readTblDiv(char *tblname,char *yyyymm)
{
static bool pre_do=true;
EXEC SQL BEGIN DECLARE SECTION;
char c_sql[256];
char vc_tablename[64];
char vc_suffix[64];
int i_id;
EXEC SQL END DECLARE SECTION;
if(pre_do)
{
sprintf(c_sql,"%s",
"SELECT STC_MODULE INTO :v0 FROM tr_t_splittablecfg WHERE STC_TABLENAME=:v1 and STC_SUFFIX=:v2 ");
printf("to prepare %s\n",c_sql);
EXEC SQL PREPARE sel_STC_MODULE FROM :c_sql;
if(checkSqlCode()!=0)
{
printf("prepare %s %d\n",c_sql,sqlca.sqlcode);
TLog::toErr("prepare %s %d\n",c_sql,sqlca.sqlcode);
exit(-1);
}
printf("prepare %s\n",c_sql);
pre_do=false;
}
strcpy(vc_tablename,tblname);
strcpy(vc_suffix,yyyymm);
EXEC SQL EXECUTE sel_STC_MODULE using :i_id,:vc_tablename,:vc_suffix;
if(checkSqlCode()!=0)
{
printf("select FROM tr_t_splittablecfg (%s) (%s) (%d)\n",vc_tablename,vc_suffix,sqlca.sqlcode);
TLog::toErr("select FROM tr_t_splittablecfg (%s) (%s) (%d)\n",vc_tablename,vc_suffix,sqlca.sqlcode);
return -1;
}
return i_id;
}
*/
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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -