📄 appip.cpp
字号:
return ;
printf("tkong[%s]\n",szbuf);
TLog::toErr("[%s]\n",szbuf);
if((p=strtok(szbuf,"? "))==NULL)
return;
if(strlen(p)>=16)
return ;
strcpy(m_szmethod,p);
if(strcasecmp(m_szmethod,"GET")!=0 &&
strcasecmp(m_szmethod,"POST")!=0)
return ;
if((p=strtok(NULL,"? "))==NULL)
return ;
if(strlen(p)>=256)
{
printf("error url[%s]\n",p);
TLog::toErr("err url=[%s]",p);
return ;
}
strcpy(m_szurl,p);
/*appip 不加么默认的后缀
if(m_szurl[strlen(m_szurl)-1]=='/')
{
strcat(m_szurl,"index.html");
}*/
*m_szhost=0;
*m_szpostpara=0;
if(strcasecmp(m_szmethod,"get")==0)
{
if((p=strtok(NULL,"? "))!=NULL)
{
if(strcasecmp(p,"HTTP/1.1"))
strcpy(m_szpostpara,p);
}
}
m_pinqhv->clear();
m_pinqhv->setValues(m_theinqStream);
p=m_pinqhv->getValue("Host");
if(p!=NULL)
strcpy(m_szhost,p);
if(strcasecmp(m_szmethod,"post")==0)
{
char *ppost=m_theinqStream->getCurPos();
int lenpost=lendata-(ppost-szdata);
if(lenpost>0 && lenpost<sizeof(m_szpostpara)-1)
{
memcpy(m_szpostpara,ppost,lenpost);
m_szpostpara[lenpost]=0;
}
}
memcpy(szbuf,m_theinqStream->getCurPos(),80);
printf("post para is [%s]\n",m_szpostpara);
TLog::toErr("[%s]\n",m_szpostpara);
}
/*bool CAppHttp::availContType()
{
if(strcasecmp(m_szmethod,"POST")==0)
{
char *p=m_pinqhv->getValue("Content-Type");
if(p!=NULL)
{
//TLog::toLog("inqContent-Type=[%s]\n",p);
}
m_idataflow=0;
return true;
}
else if(strcasecmp(m_szmethod,"GET")==0)
{
char *p=m_prethv->getValue("Content-Type");
if(p!=NULL)
{
//TLog::toLog("retContent-Type=[%s]\n",p);
m_idataflow=1;
if(strncasecmp(p,"text/html",9)==0)
{
return true;
}
}
return false;
}
return false;
}
*/
void CAppIp::writeTKongPage(int lendata)
{
STRU_TR_T_SPESENPAGE recpage;
struct in_addr inaddr;
recpage.SSP_ID=m_pspseqweb->getS_TR_T_SPESENPAGE();
if(strlen(m_szurl)<sizeof(recpage.SSP_PAGEPOSITION))
strcpy(recpage.SSP_PAGEPOSITION,m_szurl);
else
{
memcpy(recpage.SSP_PAGEPOSITION,m_szurl,sizeof(recpage.SSP_PAGEPOSITION)-1);
recpage.SSP_PAGEPOSITION[sizeof(recpage.SSP_PAGEPOSITION)-1]=0;
}
if(strlen(m_szhost)<sizeof(recpage.SSP_DOMAINNAME))
strcpy(recpage.SSP_DOMAINNAME,m_szhost);
else
{
memcpy(recpage.SSP_DOMAINNAME,m_szhost,sizeof(recpage.SSP_DOMAINNAME)-1);
recpage.SSP_DOMAINNAME[sizeof(recpage.SSP_DOMAINNAME)-1]=0;
}
inaddr.s_addr = m_piph->saddr;
sprintf(recpage.SSP_CLIENTIP,"%s",inet_ntoa(inaddr));
inaddr.s_addr = m_piph->daddr;
sprintf(recpage.SSP_SERVERIP,"%s",inet_ntoa(inaddr));
strcpy(recpage.SSP_CAPTIME,TUTime::YYYYMMDDHHMMSS());
recpage.SSP_DATAFLOW=0;
recpage.SSP_RESOURCELENGTH=lendata;
strcpy(recpage.SSP_CLNTCALLID,"-");
m_pInfo->getAccount(m_piph->saddr, recpage.SSP_CLNTACCOUNT,recpage.SSP_CLNTCALLID);
m_pInfo->getLocation(m_piph->saddr, recpage.SSP_CLNTLOCATION);
TLog::toErr("radius %u %s %s",ntohl(m_piph->saddr),recpage.SSP_CLNTACCOUNT,recpage.SSP_CLNTCALLID);
recpage.SSP_HASSUBMIT=0;
recpage.SSP_SPEINFOSTATUS=1;
m_psptblweb->insRecord(&recpage);
}
void CAppIp::registerWatchedObj()
{
ST_AIMOBJ stObj[32];
int iobjs=m_prdsip.isInWatched(m_piph->saddr,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);
}
}
void CAppIp::registerContent()
{
bool bupd=false;
char szbuf[1024];
char *p;
STRU_TR_T_SPESUBMITCONTENT rec;
if(*m_szpostpara==0)
return;
if(strlen(m_szpostpara)>=sizeof(szbuf)-1)
return;
strcpy(szbuf,m_szpostpara);
p=strtok(szbuf,"&");
// return;
do
{
TLog::toErr("submit=[%s]\n",p);
char *pv=strchr(p,'=');
if(pv==NULL)
break;
int len=pv-p;
memcpy(rec.SSB_FIELDNAME,p,len);
rec.SSB_FIELDNAME[len]=0;
pv++;
strcpy(rec.SSB_FIELDVALUE,pv);
rec.SSB_ID=m_pspseqweb->getS_TR_T_SPESUBMITCONTENT();
rec.SSP_ID=m_pspseqweb->getfkS_TR_T_SPESENPAGE();
m_psptblweb->insRecord(&rec);
bupd=true;
p=strtok(NULL,"&");
}while(p!=NULL);
if(bupd)
m_psptblweb->updateSPESUBMIT(m_pspseqweb->getfkS_TR_T_SPESENPAGE());
}
void CAppIp::processFKong(u_int32_t ip, char *szdata,int lendata)
{
m_bmatch=false;
for(int icurcfg=0;icurcfg<m_totipcfg;icurcfg++)
{
if((m_pipcfg+icurcfg)->option=='1')
{
if((m_pipcfg+icurcfg)->ip==ip)
m_bmatch=true;
}
else
{
char *ptr=TU::searchKey(szdata, lendata,(m_pipcfg+icurcfg)->szpost );
if(ptr!=NULL)
{
char *ptr=TU::searchKey(szdata, lendata,(m_pipcfg+icurcfg)->szdomain );
if(ptr!=NULL)
{
m_bmatch=true;
}
}
}
if(m_bmatch)
{
printf("*********************this is fankong**********************\n");
char *ptr=TU::searchKey(szdata, lendata,(m_pipcfg+icurcfg)->szdomain );
if(ptr!=NULL)
{
char *ptre=strchr(ptr,'&');
if(ptre==NULL)
return;
{
char filename[128];
if(!getIpFileName(filename))
return;
writeIpFile(filename,szdata,lendata);
writeFKongPage(lendata,filename,(m_pipcfg+icurcfg)->szurl,(m_pipcfg+icurcfg)->wapid);
}
}
char *pcurdomain=(m_pipcfg+icurcfg)->szdomain;
for(int j=0;j<(m_pipcfg+icurcfg)->inumdomain;j++)
{
pcurdomain+=32*j;
printf("search [%s]\n",pcurdomain);
char *ptr=TU::searchKey(szdata, lendata,pcurdomain );
if(ptr!=NULL)
{
char *ptre=strchr(ptr,'&');
if(ptre!=NULL)
{
STRU_TR_T_SUBMITCONTENT rec;
strcpy(rec.SBC_FIELDNAME,pcurdomain );
memcpy(rec.SBC_FIELDVALUE,ptr,ptre-ptr);
rec.SBC_FIELDVALUE[ptre-ptr]=0;
rec.SBC_ID=m_pseqweb->getS_TR_T_SUBMITCONTENT();
rec.SPG_ID=m_pseqweb->getfkS_TR_T_SENPAGE();
printf("%d %d %s %s \n",rec.SBC_ID,rec.SPG_ID,rec.SBC_FIELDNAME,rec.SBC_FIELDVALUE);
m_ptblweb->insRecord(&rec);
}
}
}
}
}
}
void CAppIp::processFKongDB(u_int32_t ip, char *szdata,int lendata)
{
char *ptr;
for(int icurcfg=0;icurcfg<m_totipcfg;icurcfg++)
{
m_bmatch=false;
ptr=TU::searchKey(szdata, lendata,(m_pipcfgdb+icurcfg)->szurl );
if(ptr)
{
ptr=TU::searchKey(szdata, lendata,(m_pipcfgdb+icurcfg)->szhost );
if(ptr)
{
m_bmatch=true;
}
}
if(!m_bmatch)
continue;
//printf("*********************this is fankong**********************\n");
ptr=TU::searchKey(szdata, lendata,(m_pipcfgdb+icurcfg)->szdomain );
if(ptr!=NULL)
{
char *ptre=strchr(ptr,'&');
if(ptre==NULL)
return;
else
{
char filename[128];
if(!getIpFileName(filename))
return;
writeIpFile(filename,szdata,lendata);
writeFKongPage(lendata,filename,(m_pipcfgdb+icurcfg)->szurl,(m_pipcfgdb+icurcfg)->wapid);
}
char *pcurdomain=(m_pipcfgdb+icurcfg)->szdomain;
for(int j=0;j<(m_pipcfgdb+icurcfg)->inumdomain;j++)
{
pcurdomain+=64*j;
printf("search [%s]\n",pcurdomain);
char *ptr=TU::searchKey(szdata, lendata,pcurdomain );
if(ptr!=NULL)
{
char *ptre=strchr(ptr,'&');
if(ptre!=NULL)
{
STRU_TR_T_SUBMITCONTENT rec;
strcpy(rec.SBC_FIELDNAME,pcurdomain );
memcpy(rec.SBC_FIELDVALUE,ptr,ptre-ptr);
rec.SBC_FIELDVALUE[ptre-ptr]=0;
rec.SBC_ID=m_pseqweb->getS_TR_T_SUBMITCONTENT();
rec.SPG_ID=m_pseqweb->getfkS_TR_T_SENPAGE();
printf("%d %d %s %s \n",rec.SBC_ID,rec.SPG_ID,rec.SBC_FIELDNAME,rec.SBC_FIELDVALUE);
m_ptblweb->insRecord(&rec);
}
}
}//end of all domain
}
return;
}//end of for
}
bool CAppIp::getIpFileName(char *filename)
{
struct in_addr inaddr;
inaddr.s_addr = m_piph->saddr;
sprintf(filename,"%s/%s:%d:","../iplog",inet_ntoa(inaddr),ntohs(m_ptcph->source));
inaddr.s_addr = m_piph->daddr;
sprintf(filename+strlen(filename),"%s:%d",inet_ntoa(inaddr),ntohs(m_ptcph->dest));
TLog::toLog("%s\n",filename);
return true;
}
bool CAppIp::writeIpFile(char *filename,char *data,int lendata)
{
ofstream *pofslog= new ofstream(filename,ios::trunc);
for(int i=0;i<lendata;i++)
*pofslog<<data[i];
//printf("flush\n");
pofslog->flush();
//printf("close\n");
pofslog->close();
delete pofslog;
return true;
}
void CAppIp::writeFKongPage(int lendata,char *filename,char *szurl,int wapid)
{
STRU_TR_T_SENPAGE recpage;
struct in_addr inaddr;
recpage.ACT_ID=0;
recpage.WAP_ID=wapid;
recpage.SPG_ID=m_pseqweb->getS_TR_T_SENPAGE();
if(strlen(filename)<sizeof(recpage.SPG_PAGEPOSITION))
strcpy(recpage.SPG_PAGEPOSITION,filename);
else
{
memcpy(recpage.SPG_PAGEPOSITION,filename,sizeof(recpage.SPG_PAGEPOSITION)-1);
recpage.SPG_PAGEPOSITION[sizeof(recpage.SPG_PAGEPOSITION)-1]=0;
}
if(strlen(szurl)<sizeof(recpage.SPG_DOMAINNAME))
strcpy(recpage.SPG_DOMAINNAME,szurl);
else
{
memcpy(recpage.SPG_DOMAINNAME,szurl,sizeof(recpage.SPG_DOMAINNAME)-1);
recpage.SPG_DOMAINNAME[sizeof(recpage.SPG_DOMAINNAME)-1]=0;
}
inaddr.s_addr = m_piph->saddr;
sprintf(recpage.SPG_CLIENTIP,"%s",inet_ntoa(inaddr));
inaddr.s_addr = m_piph->daddr;
sprintf(recpage.SPG_SERVERIP,"%s",inet_ntoa(inaddr));
strcpy(recpage.SPG_CAPTIME,TUTime::YYYYMMDDHHMMSS());
recpage.SPG_DATAFLOW=0;
recpage.SPG_RESOURCELENGTH=lendata;
strcpy(recpage.SPG_CLNTCALLID,"-");
m_pInfo->getAccount(m_piph->saddr, recpage.SPG_CLNTACCOUNT,recpage.SPG_CLNTCALLID);
m_pInfo->getLocation(m_piph->saddr, recpage.SPG_CLNTLOCATION);
recpage.SPG_HASSUBMIT=1;
recpage.SPG_SPEINFOSTATUS=1;
m_ptblweb->insRecord(&recpage);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -