appweb.cpp

来自「linux 上http email 协议分析程序 主要能够处理大数据量的主干网」· C++ 代码 · 共 294 行

CPP
294
字号
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <time.h>#include <string.h>#include <assert.h>#include <string.h>#include <netinet/in.h>#include <arpa/inet.h>#include <BaseConst.h>#include <UTF8Util.h>#include <Utility.h>#include "AppWeb.h"#include "Db.h"#include "Consts.h"CAppWeb::~CAppWeb(){	if(m_pstAppWeb!=NULL)	{		for(int i=0;i<m_itotmonrule;i++)		{			delete (m_pstAppWeb+i)->pfield;		}		delete m_pstAppWeb;	}}CAppWeb::CAppWeb(){	int iii;		CTblWebApp tblweb;		m_itotmonrule=tblweb.totCount_TR_T_WEBMONRULE();	if( m_itotmonrule<=0)		return;	m_pstAppWeb=new STRU_APPWEB[m_itotmonrule];		assert(m_pstAppWeb!=NULL);	iii=0;	for(iii=0;iii<m_itotmonrule;iii++)	{				tblweb.fetchRecord(&((m_pstAppWeb+iii)->rule));		TU::delSpace((m_pstAppWeb+iii)->rule.WMR_URLFEATURE);		printf("[%d][%d,%d][%s]\n",iii,(m_pstAppWeb+iii)->rule.WMR_CAPCALL,(m_pstAppWeb+iii)->rule.WMR_CAPCOOKIE,(m_pstAppWeb+iii)->rule.WMR_URLFEATURE);			TLog::toErr("[%d][%d,%d] [%s]\n",iii,(m_pstAppWeb+iii)->rule.WMR_CAPCALL,(m_pstAppWeb+iii)->rule.WMR_CAPCOOKIE,(m_pstAppWeb+iii)->rule.WMR_URLFEATURE);		}	tblweb.closeCur();	for( iii=0;iii<m_itotmonrule;iii++)	{		(m_pstAppWeb+iii)->totfield=tblweb.totCount_TR_T_SUBMITRULE((m_pstAppWeb+iii)->rule.WMR_ID);		(m_pstAppWeb+iii)->pfield=new STRU_TR_T_SUBMITRULE[(m_pstAppWeb+iii)->totfield];		assert((m_pstAppWeb+iii)->pfield!=NULL);		printf("[%d][%d][%s]\n",iii,(m_pstAppWeb+iii)->totfield,(m_pstAppWeb+iii)->rule.WMR_URLFEATURE);		TLog::toErr("[%d][%d][%s]\n",iii,(m_pstAppWeb+iii)->totfield,(m_pstAppWeb+iii)->rule.WMR_URLFEATURE);	}		for( iii=0;iii<m_itotmonrule;iii++)	{		STRU_TR_T_SUBMITRULE *pfield=(m_pstAppWeb+iii)->pfield;		int id=(m_pstAppWeb+iii)->rule.WMR_ID;		for(int j=0;j<(m_pstAppWeb+iii)->totfield;j++)		{			tblweb.fetchRecord((pfield+j),id);			TU::delSpace((pfield+j)->SBR_SUBMITFIELD);			TU::delSpace((pfield+j)->SBR_APPFIELD);			printf("[%d][%d][%d][%d][%s]",iii,(m_pstAppWeb+iii)->totfield,j,id,(m_pstAppWeb+iii)->rule.WMR_URLFEATURE);			TLog::toErr("[%d][%d][%d][%d][%s]",iii,(m_pstAppWeb+iii)->totfield,j,id,(m_pstAppWeb+iii)->rule.WMR_URLFEATURE);			printf("[%s][%s][%d]\n",(pfield+j)->SBR_SUBMITFIELD,(pfield+j)->SBR_APPFIELD,(pfield+j)->SBR_SUBMITWAY);			TLog::toErr("[%s][%s][%d]\n",(pfield+j)->SBR_SUBMITFIELD,(pfield+j)->SBR_APPFIELD,(pfield+j)->SBR_SUBMITWAY);		}		tblweb.closeCur();	}}bool CAppWeb::setcurUrlID(char *szurl){	int i;	TLog::toLog("to search url[%s]\n",szurl);	m_wpid=-1;	for(i=0;i<m_itotmonrule;i++)	{		//printf("check url[%s]-[%s]\n",url,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);		if(strstr(szurl,(m_pstAppWeb+i)->rule.WMR_URLFEATURE)!=NULL)		{			//recna.ACT_ID=(m_pstAppWeb+i)->rule.ACT_ID;			TLog::toLog("identical[%d][%s][%s]\n",i,szurl,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);			printf("----------------check url is identical--------------");			printf("[%s][%s]\n",szurl,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);									m_wpid=i;			return true;		}	}		return false;		}bool CAppWeb::matchedUrl(){	if(m_wpid<0)		return false;	return true;}/*bool CAppWeb::ismatchUrl(char *url,int *pactid,int *pwapid){	int i;	//TLog::toLog("identical[%d][%s][%s]\n",i,url,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);	m_wpid=-1;	for(i=0;i<m_itotmonrule;i++)	{		//printf("check url[%s]-[%s]\n",url,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);		if(strstr(url,(m_pstAppWeb+i)->rule.WMR_URLFEATURE)!=NULL)		{			//recna.ACT_ID=(m_pstAppWeb+i)->rule.ACT_ID;			//TLog::toLog("identical[%d][%s][%s]\n",i,url,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);			printf("----------------check url is identical--------------");			printf("[%s][%s]\n",url,(m_pstAppWeb+i)->rule.WMR_URLFEATURE);						*pactid=(m_pstAppWeb+i)->rule.ACT_ID;			*pwapid=(m_pstAppWeb+i)->rule.WAP_ID;			m_wpid=i;			return true;		}	}		return false;		}*/int CAppWeb::getACT_ID(){	assert(m_wpid>=0);	return (m_pstAppWeb+m_wpid)->rule.ACT_ID;}int CAppWeb::getWAP_ID(){	assert(m_wpid>=0);	return (m_pstAppWeb+m_wpid)->rule.WAP_ID;}	bool CAppWeb::initSubmitContent(char *pcontent, char* separators,int way){		if(m_wpid>=m_itotmonrule || m_wpid<0)		return false;			#ifdef DEBUG		TLog::toLog("bef=[%s]",pcontent);	#endif	hex2ascii(pcontent,strlen(pcontent),m_szcontent,sizeof(m_szcontent)-1);	#ifdef DEBUG		TLog::toLog("aft=[%s]",m_szcontent);	#endif	//strcpy(m_szcontent,pcontent);			//m_wpid=id;	m_bfirst=true;	m_SBR_SUBMITWAY=way;	strncpy(m_szseparators,separators,sizeof(m_szseparators)-1);		return true;		}bool CAppWeb::setVal(){	int len;	char *pv=strchr(m_pszone,'=');	if(pv==NULL)		return false;	 	len=pv-m_pszone;	#ifdef DEBUG		printf("hd len=[%d]\n",len);	#endif	if(len>sizeof(m_szname)-1)		return false;	memcpy(m_szname,m_pszone,len);	m_szname[len]=0;	TU::delSpace(m_szname);	*m_szvalue=0;	int vlen=strlen(pv)-1;	/*#ifdef DEBUG		printf("v len=[%d]\n",vlen);	#endif*/	if(vlen>=0 && vlen<=sizeof(m_szvalue)-1 )	{		strcpy(m_szvalue,pv+1);	}	else	{		memcpy(m_szvalue,pv+1,sizeof(m_szvalue)-1);		m_szvalue[sizeof(m_szvalue)-1]=0;	}	printf("[%s]=[%s]\n",m_szname,m_szvalue);	return true;}bool CAppWeb::getNextContent(){	while(1)	{		if(m_bfirst)		{			m_pszone=strtok(m_szcontent,m_szseparators);			m_bfirst=false;		}		else			m_pszone=strtok(NULL,m_szseparators);		if(m_pszone==NULL)			return false;		if(setVal())			return true;			}	}bool CAppWeb::matchWP(char *name,int lenname,char *val ,int lenval){	STRU_TR_T_SUBMITRULE *pfield=m_pstAppWeb[m_wpid].pfield;	if(m_wpid<0)		return false;	for(int i=0;i<m_pstAppWeb[m_wpid].totfield;i++)	{		#ifdef DEBUG			//printf("[%d] [%s]\n",(pfield+i)->SBR_SUBMITWAY,(pfield+i)->SBR_SUBMITFIELD);		#endif		if((pfield+i)->SBR_SUBMITWAY==m_SBR_SUBMITWAY)		{			if(strcmp((pfield+i)->SBR_SUBMITFIELD,m_szname)==0)			{							strcpy(name ,(pfield+i)->SBR_APPFIELD);				strncpy(val,m_szvalue,lenval);				//hex2ascii(m_szvalue,strlen(m_szvalue),val,lenval);				#ifdef DEBUG					printf("matched web value szname=[%s] savalue=[%s]\n",name,val);				#endif				return true;				}		}	}	return false;	}//short WMR_CAPCALL;//0 表示只捕捉设定的字段  1 表示捕捉全部字段//short WMR_CAPCOOKIE;//0 表示不捕捉cookie  1 表示捉cookiebool CAppWeb::isCAPALL(){	if(m_wpid<0)		return false;	if(m_pstAppWeb[m_wpid].rule.WMR_CAPCALL==0)		return false;	else		return true;}bool CAppWeb::isCAPCOOKIE(){	if(m_wpid<0)		return false;	if(m_pstAppWeb[m_wpid].rule.WMR_CAPCOOKIE==0)		return false;	else		return true;}void CAppWeb::setWP(char *name,int lenname,char *val ,int lenval){	//hex2ascii(m_szname,strlen(m_szname),name,lenname);	//hex2ascii(m_szval,strlen(m_szval),val,lenval);	strncpy(name,m_szname,lenname);	strncpy(val,m_szvalue,lenval);}	

⌨️ 快捷键说明

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