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

📄 apphttp.cpp

📁 linux 上http email 协议分析程序 主要能够处理大数据量的主干网的应用
💻 CPP
📖 第 1 页 / 共 3 页
字号:
}void CAppHttp::registerPage(){	STRU_TR_T_SENPAGE recpage;		struct in_addr inaddr;		if(m_pappweb->matchedUrl())	{		recpage.ACT_ID=m_pappweb->getACT_ID();				recpage.WAP_ID=m_pappweb->getWAP_ID();	}	else	{		recpage.ACT_ID=0;		recpage.WAP_ID=0;	}	recpage.SPG_ID=m_pseqweb->getS_TR_T_SENPAGE();			if(strlen(m_szdir)<sizeof(recpage.SPG_PAGEPOSITION))		strcpy(recpage.SPG_PAGEPOSITION,m_szdir);	else	{		memcpy(recpage.SPG_PAGEPOSITION,m_szdir,sizeof(recpage.SPG_PAGEPOSITION)-1);		recpage.SPG_PAGEPOSITION[sizeof(recpage.SPG_PAGEPOSITION)-1]=0;	}	if(strlen(m_szurl)<sizeof(recpage.SPG_DOMAINNAME))		strcpy(recpage.SPG_DOMAINNAME,m_szurl);	else	{		memcpy(recpage.SPG_DOMAINNAME,m_szurl,sizeof(recpage.SPG_DOMAINNAME)-1);		recpage.SPG_DOMAINNAME[sizeof(recpage.SPG_DOMAINNAME)-1]=0;	}	inaddr.s_addr = m_theHead.src_ip;	sprintf(recpage.SPG_CLIENTIP,"%s",inet_ntoa(inaddr));	inaddr.s_addr = m_theHead.dst_ip;	sprintf(recpage.SPG_SERVERIP,"%s",inet_ntoa(inaddr));		strcpy(recpage.SPG_CAPTIME,TUTime::YYYYMMDDHHMMSS());		recpage.SPG_DATAFLOW=m_idataflow;	/*	if(strcasecmp(m_szmethod,"POST")==0)		recpage.SPG_DATAFLOW=0;	else		recpage.SPG_DATAFLOW=1;	*/	recpage.SPG_RESOURCELENGTH=m_iretDataLen;			strcpy(recpage.SPG_CLNTCALLID,"-");	m_pInfo->getAccount(m_theHead.src_ip, recpage.SPG_CLNTACCOUNT,recpage.SPG_CLNTCALLID);	//TLog::toErr("[%s] act=[%s][%s]\n",recpage.SPG_CLIENTIP, recpage.SPG_CLNTACCOUNT,recpage.SPG_CLNTCALLID);	m_pInfo->getLocation(m_theHead.src_ip, recpage.SPG_CLNTLOCATION);			recpage.SPG_HASSUBMIT=0;	m_ptblweb->insRecord(&recpage);}void CAppHttp::registerspPage(char *szdir,int isubmit){	STRU_TR_T_SPESENPAGE recpage;		struct in_addr inaddr;		recpage.SSP_ID=m_pspseqweb->getS_TR_T_SPESENPAGE();		printf("sspid=%d\n",recpage.SSP_ID);		if(strlen(szdir)<sizeof(recpage.SSP_PAGEPOSITION))		strcpy(recpage.SSP_PAGEPOSITION,szdir);	else	{		memcpy(recpage.SSP_PAGEPOSITION,szdir,sizeof(recpage.SSP_PAGEPOSITION)-1);		recpage.SSP_PAGEPOSITION[sizeof(recpage.SSP_PAGEPOSITION)-1]=0;	}	if(strlen(m_szurl)<sizeof(recpage.SSP_DOMAINNAME))		strcpy(recpage.SSP_DOMAINNAME,m_szurl);	else	{		memcpy(recpage.SSP_DOMAINNAME,m_szurl,sizeof(recpage.SSP_DOMAINNAME)-1);		recpage.SSP_DOMAINNAME[sizeof(recpage.SSP_DOMAINNAME)-1]=0;	}	inaddr.s_addr = m_theHead.src_ip;	sprintf(recpage.SSP_CLIENTIP,"%s",inet_ntoa(inaddr));	inaddr.s_addr = m_theHead.dst_ip;	sprintf(recpage.SSP_SERVERIP,"%s",inet_ntoa(inaddr));		strcpy(recpage.SSP_CAPTIME,TUTime::YYYYMMDDHHMMSS());		recpage.SSP_DATAFLOW=m_idataflow;	/*	if(strcasecmp(m_szmethod,"POST")==0)		recpage.SPG_DATAFLOW=0;	else		recpage.SPG_DATAFLOW=1;	*/	recpage.SSP_RESOURCELENGTH=m_iretDataLen;			strcpy(recpage.SSP_CLNTCALLID,"-");	m_pInfo->getAccount(m_theHead.src_ip, recpage.SSP_CLNTACCOUNT,recpage.SSP_CLNTCALLID);	//TLog::toErr("[%s] act=[%s][%s]\n",recpage.SPG_CLIENTIP, recpage.SPG_CLNTACCOUNT,recpage.SPG_CLNTCALLID);	m_pInfo->getLocation(m_theHead.src_ip, recpage.SSP_CLNTLOCATION);			recpage.SSP_HASSUBMIT=isubmit;	m_psptblweb->insRecord(&recpage);}void CAppHttp::initDir(){	ST_AIMOBJ stObj[32];	#ifdef SIMULATE_SPE		sprintf(m_szinidir,"/html/%05d/",102);	#else	int iobjs=m_prdsip->isInWatched(m_theHead.src_ip,stObj);	if(iobjs>=1)		sprintf(m_szinidir,"/html/%05d/",stObj[0].amgid);	else		strcpy(m_szinidir,"html/default/");	#endif}int CAppHttp::registerspWatchedObj(){		#ifdef SIMULATE_SPE				STRU_TR_T_OBJECT2INFO rec;				rec.OTI_ID=m_pSeqSpWarm->getS_TR_T_OBJECT2INFO();		rec.AMG_ID=102;		rec.OTI_INFOID=m_pspseqweb->getfkS_TR_T_SPESENPAGE();		rec.OTI_INFOTYPE=2;		rec.OTI_RPRECISION=0;		rec.OTI_READSTATUS=1;		m_pTblSpWarm->insRecord(&rec);		return 102;			#else		ST_AIMOBJ stObj[32];		int iobjs=m_prdsip->isInWatched(m_theHead.src_ip,stObj);		for(int i=0;i<iobjs;i++)		{			STRU_TR_T_OBJECT2INFO rec;						rec.OTI_ID=m_pSeqSpWarm->getS_TR_T_OBJECT2INFO();			rec.AMG_ID=stObj[i].amgid;			rec.OTI_INFOID=m_pspseqweb->getfkS_TR_T_SPESENPAGE();			rec.OTI_INFOTYPE=2;			rec.OTI_RPRECISION=stObj[i].precision;			rec.OTI_READSTATUS=1;			m_pTblSpWarm->insRecord(&rec);					}		return stObj[0].amgid;	#endif}	int CAppHttp::registerWatchedObj(){	#ifdef SIMULATE_SPE		STRU_TR_T_OBJECT2INFO rec;				rec.OTI_ID=m_pSeqSpWarm->getS_TR_T_OBJECT2INFO();		rec.AMG_ID=102;		rec.OTI_INFOID=m_pseqweb->getfkS_TR_T_SENPAGE();		rec.OTI_INFOTYPE=2;		rec.OTI_RPRECISION=0;		rec.OTI_READSTATUS=1;		m_pTblSpWarm->insRecord(&rec);		return 102;	#else	ST_AIMOBJ stObj[32];	int iobjs=m_prdsip->isInWatched(m_theHead.src_ip,stObj);	for(int i=0;i<iobjs;i++)	{		STRU_TR_T_OBJECT2INFO rec;				rec.OTI_ID=m_pSeqSpWarm->getS_TR_T_OBJECT2INFO();		rec.AMG_ID=stObj[i].amgid;		rec.OTI_INFOID=m_pseqweb->getfkS_TR_T_SENPAGE();		rec.OTI_INFOTYPE=2;		rec.OTI_RPRECISION=stObj[i].precision;		rec.OTI_READSTATUS=1;		m_pTblSpWarm->insRecord(&rec);			}	return stObj[0].amgid;;	#endif}	void CAppHttp::registerContent(){	bool m_bhascontent=false;	STRU_TR_T_SUBMITCONTENT rec;	#define len_fname sizeof(rec.SBC_FIELDNAME)	#define len_val sizeof(rec.SBC_FIELDVALUE)		if(!m_pappweb->matchedUrl())		return;	if(m_pappweb->isCAPCOOKIE())	{		char *pcookie=m_pinqhv->getValue("Cookie");		#ifdef DEBUG			printf("cookie=[%s]\n",pcookie);		#endif		if(pcookie!=NULL)		{			if(m_pappweb->initSubmitContent(pcookie, ";",THIS_IS_COOKIE))			{				while(m_pappweb->getNextContent())				{					if(m_pappweb->matchWP(rec.SBC_FIELDNAME,len_fname,rec.SBC_FIELDVALUE, len_val))					{						rec.SBC_ID=m_pseqweb->getS_TR_T_SUBMITCONTENT();						rec.SPG_ID=m_pseqweb->getfkS_TR_T_SENPAGE();						m_ptblweb->insRecord(&rec);						m_bhascontent=true;					}				}			}		}	}	char *pszdata=NULL;	if(strcasecmp(m_szmethod,"POST")==0 )		pszdata=m_pszpostdata;	else if	(strcasecmp(m_szmethod,"GET")==0 && strlen(m_szpostpara)>10)		pszdata=m_szpostpara;	if(pszdata!=NULL)	{		printf("prof post data[%s]\n",pszdata);		//TLog::toErr("prof post data[%s]\n",m_pszpostdata);		if(m_pappweb->initSubmitContent(pszdata, "&",NOT_COOKIE))		{			while(m_pappweb->getNextContent())			{				if(m_pappweb->matchWP(rec.SBC_FIELDNAME,len_fname,rec.SBC_FIELDVALUE, len_val))				{					rec.SBC_ID=m_pseqweb->getS_TR_T_SUBMITCONTENT();					rec.SPG_ID=m_pseqweb->getfkS_TR_T_SENPAGE();					m_ptblweb->insRecord(&rec);					m_bhascontent=true;				}				else if(m_pappweb->isCAPALL())				{					m_pappweb->setWP(rec.SBC_FIELDNAME,len_fname,rec.SBC_FIELDVALUE, len_val);					rec.SBC_ID=m_pseqweb->getS_TR_T_SUBMITCONTENT();					rec.SPG_ID=m_pseqweb->getfkS_TR_T_SENPAGE();					m_ptblweb->insRecord(&rec);					m_bhascontent=true;				}												}		}	}	if(m_bhascontent)		m_ptblweb->updateSUBMIT(m_pseqweb->getfkS_TR_T_SENPAGE());	}	void CAppHttp::registerspContent(){	bool m_bhascontent=false;	//STRU_TR_T_SUBMITCONTENT rec;	STRU_TR_T_SPESUBMITCONTENT rec;		if(!m_pappweb->matchedUrl())		return;	if(m_pappweb->isCAPCOOKIE())	{		char *pcookie=m_pinqhv->getValue("Cookie");		#ifdef DEBUG			printf("cookie=[%s]\n",pcookie);		#endif		if(pcookie!=NULL)		{			if(m_pappweb->initSubmitContent(pcookie, ";",THIS_IS_COOKIE))			{				while(m_pappweb->getNextContent())				{					if(m_pappweb->matchWP(rec.SSB_FIELDNAME,sizeof(rec.SSB_FIELDNAME),rec.SSB_FIELDVALUE, sizeof(rec.SSB_FIELDVALUE)))					{						rec.SSB_ID=m_pspseqweb->getS_TR_T_SPESUBMITCONTENT();						rec.SSP_ID=m_pspseqweb->getfkS_TR_T_SPESENPAGE();						m_psptblweb->insRecord(&rec);						m_bhascontent=true;					}				}			}		}	}	char *pszdata=NULL;	if(strcasecmp(m_szmethod,"POST")==0 )		pszdata=m_pszpostdata;	else if	(strcasecmp(m_szmethod,"GET")==0 && strlen(m_szpostpara)>10)		pszdata=m_szpostpara;	if(pszdata!=NULL)	{		printf("prof post data[%s]\n",pszdata);		//TLog::toErr("prof post data[%s]\n",m_pszpostdata);		if(m_pappweb->initSubmitContent(pszdata, "&",NOT_COOKIE))		{			while(m_pappweb->getNextContent())			{				if(m_pappweb->matchWP(rec.SSB_FIELDNAME,sizeof(rec.SSB_FIELDNAME),rec.SSB_FIELDVALUE, sizeof(rec.SSB_FIELDVALUE)))				{					rec.SSB_ID=m_pspseqweb->getS_TR_T_SPESUBMITCONTENT();					rec.SSP_ID=m_pspseqweb->getfkS_TR_T_SPESENPAGE();					m_psptblweb->insRecord(&rec);					m_bhascontent=true;				}				else if(m_pappweb->isCAPALL())				{					m_pappweb->setWP(rec.SSB_FIELDNAME,sizeof(rec.SSB_FIELDNAME),rec.SSB_FIELDVALUE, sizeof(rec.SSB_FIELDVALUE));					rec.SSB_ID=m_pspseqweb->getS_TR_T_SPESUBMITCONTENT();					rec.SSP_ID=m_pspseqweb->getfkS_TR_T_SPESENPAGE();					m_psptblweb->insRecord(&rec);					m_bhascontent=true;				}												}		}	}	if(m_bhascontent)		m_psptblweb->updateSPESUBMIT(m_pspseqweb->getfkS_TR_T_SPESENPAGE());	}bool CAppHttp::setinqHead(){	char *p;	int len;	char szbuf[1024];		memset(szbuf,0,sizeof(szbuf));	memcpy(szbuf,m_theinqStream->getCurPos(),80);	printf("inq=[%s]\n",szbuf);	memset(szbuf,0,sizeof(szbuf));	len=m_theinqStream->getLine(szbuf);	if(len<=0)		return false;			if((p=strtok(szbuf,"? "))==NULL)	{		return false;	}	if(strlen(p)>=16)		return false;	strcpy(m_szmethod,p);	if(strcasecmp(m_szmethod,"GET")!=0 && 	   strcasecmp(m_szmethod,"POST")!=0)		return false;		if((p=strtok(NULL,"? "))==NULL)	{		return false;	}	if(strlen(p)>=256)	{		printf("error url[%s]\n",p);		TLog::toErr("url=[%s]",p);		return false;	}	strcpy(m_szurl,p);	if(m_szurl[strlen(m_szurl)-1]=='/')	{		strcat(m_szurl,"index.html");	}		*m_szpostpara=0;	if(strcasecmp(m_szmethod,"get")==0)	{		if((p=strtok(NULL,"? "))!=NULL)			strcpy(m_szpostpara,p);	}	//printf("get url[%s]\n",m_szurl);	#ifdef DEBUG		printf("set inq hv\n");	#endif	m_pinqhv->clear();			m_pinqhv->setValues(m_theinqStream);				/*		if(strcasecmp(m_szmethod,"post")==0)	{//this is post method		//m_pinqhv->						}	else	*/	{//this is get method		strcpy(m_szdir,m_szinidir);		char *p=m_pinqhv->getValue("Host");		if(p!=NULL)		{			strcat(m_szdir,p);			strcat(m_szdir,"/");			strcpy(m_szhost,p);						char *pp=m_szurl;			while(pp)			{				if(*pp=='/')					pp++;				else					break;			}			strcat(m_szdir,pp);			strcpy(szbuf,m_szhost);			strcat(szbuf,m_szurl);						strcpy(m_szurl,szbuf);		}		else		{			char *pp=m_szurl;			while(pp)			{				if(*pp=='/')					pp++;				else					break;			}			strcat(m_szdir,pp);		}		printf("m_szdir=[%s]\n",m_szdir);	}		return true;}bool CAppHttp::profoneInqData(){	if(strcasecmp(m_szmethod,"post")==0)	{//this is post method		char *p=m_pinqhv->getValue("Content-Length");		if(p==NULL)		{			printf("post method losing Content-Length\n");			return false;		}		int len=atoi(p);		p=m_pinqhv->getValue("Content-Type");				if(p!=NULL)		{						printf("[%s]\n",p);			int ii=strncmp(p,sztype_multidata,strlen(sztype_multidata));			if(ii==0)			{				profmultiform();			}			//else{			//	return false;		}				memset(m_pszpostdata,0,sizeof(m_pszpostdata));		memcpy(m_pszpostdata,m_theinqStream->getCurPos(),len);		m_ilenpostdata=len;		m_theinqStream->goaHead(len);			}	return true;	}bool CAppHttp::isavailfilename(char *filename){		char *pval=m_szline;		char aword[1024];		m_theinqStream->getLine( m_szline);						if(Cval::getNextAtom(pval,aword))		{			if(strcasecmp(aword,"Content-Disposition"))				return false;			else if(Cval::getNextAtom(pval,aword))			{				Cval::getNextAtom(pval,aword);				if(strcasecmp(aword,"form-data"))					return false;				Cval::getNextAtom(pval,aword);			}			else				return false;		}		else			return false;		if(Cval::getNextAtom(pval,aword))		{			if(strcasecmp(aword,"name"))				return false;			else if(Cval::getNextAtom(pval,aword))			{				Cval::getNextAtom(pval,aword);			}			else				return false;			if (Cval::getNextAtom(pval,aword))			{// the word is ;			}			else				return false;		}		else			return false;

⌨️ 快捷键说明

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