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

📄 xregex.cpp

📁 BQYAHOO的Visual C++源代码
💻 CPP
字号:
#include "StdAfx.h"
#include "XREGEX.h"

//本页源代码使用了ATL Server 中的正则表达式功能


bool XREGEX::GetChallengeText(char response[],XDATA * xdata)//获取challenge,用于生成登录URL
{
	
	CAtlRegExp<> reCT;
	reCT.Parse ("{challenge}[^<>]+value=\"{[^<>]+}\"");
	CAtlREMatchContext<> mcCT;
	if(reCT.Match (response,&mcCT)==false) return false;
	const CAtlREMatchContext<>::RECHAR* szStart = 0;
	const CAtlREMatchContext<>::RECHAR* szEnd = 0;
	mcCT.GetMatch(1, &szStart, &szEnd);
	memset(xdata->ChallengeText,0,40);
	strncpy(xdata->ChallengeText,szStart,szEnd-szStart);
	return true;
}





void XREGEX::GetFileInfo(char response[],XDATA * xdata)//分析共享文件的信息
{
	char p[200];
	memset(p,0,200);
	if(xdata->DownLoadCode .find (".part")!=-1)
	{
		sprintf(p,"{/ym/ShowLetter}[^<]+MsgId={[0-9_]+}[^<]+{%s![0-9]}",xdata->DownLoadCode  .c_str ());
	}
	else
	{
		sprintf(p,"{/ym/ShowLetter}[^<]+MsgId={[0-9_]+}[^<]+{%s.part[0-9]+}",xdata->DownLoadCode  .c_str ());
	}

	CAtlRegExp<> reCT;
	CAtlREMatchContext<> mcCT;
	
	reCT.Parse (p);
	char i[300];
	char f[300];
	char u[300];
	char *b=response;


	while(reCT.Match (b,&mcCT))
	{
		const CAtlREMatchContext<>::RECHAR* szStart = 0;
		const CAtlREMatchContext<>::RECHAR* szEnd = 0;

		mcCT.GetMatch(1, &szStart, &szEnd);		
		memset(i,0,300);
		strncpy(i,szStart,szEnd-szStart);
		xdata->VMsgId .push_back (i);

		mcCT.GetMatch(2, &szStart, &szEnd);
		memset(f,0,300);
		strncpy(f,szStart,szEnd-szStart);
		xdata->VFileName .push_back (f);


		memset(u,0,300);
		sprintf(u,"%sym/ShowLetter?box=Inbox&MsgId=%s&bodyPart=2&order=down",xdata->MailHostUrl .c_str (),i);
		xdata->VFileDownLoadUrl .push_back (u);
		
		b=(char *)szEnd;
		
	}

	
}


bool XREGEX::GetDescribeUrl(const char response[],XDATA * xdata)//获取描述文件的URL
{
	char p[200];
	memset(p,0,200);
	sprintf(p,"{/ym/ShowLetter}[^<]+MsgId={[0-9_]+}[^<]+{%s.describe}",xdata->DownLoadCode  .c_str ());
	CAtlRegExp<> reCT;
	CAtlREMatchContext<> mcCT;
	
	reCT.Parse (p);
	if(reCT.Match (response,&mcCT)==false) return false;

	const CAtlREMatchContext<>::RECHAR* szStart = 0;
	const CAtlREMatchContext<>::RECHAR* szEnd = 0;

	char i[300];
	char u[300];

	mcCT.GetMatch(1, &szStart, &szEnd);		
	memset(i,0,300);
	strncpy(i,szStart,szEnd-szStart);
	

	memset(u,0,300);
	sprintf(u,"%sym/ShowLetter?box=Inbox&MsgId=%s&bodyPart=2&order=down",xdata->MailHostUrl .c_str (),i);
	



	xdata->DescribeUrl =u;
	return true;
}

bool XREGEX::GetMailAndHostUrl(const char response[],XDATA * xdata)//获取邮箱的URL
{
	char p[200];
	memset(p,0,200);
	strcpy(p,"{http://cn\.[^\.]+\.mail\.yahoo\.com/}");

	CAtlRegExp<> reCT;
	CAtlREMatchContext<> mcCT;
	CAtlREMatchContext<>::MatchGroup mg;
	reCT.Parse (p);
	char s[100];

	if(!reCT.Match (response,&mcCT)) return false;

	const CAtlREMatchContext<>::RECHAR* szStart = 0;
	const CAtlREMatchContext<>::RECHAR* szEnd = 0;
	mcCT.GetMatch(0, &szStart, &szEnd);

	memset(s,0,100);
	strncpy(s,szStart,szEnd-szStart);

	xdata->MailHostUrl =s;

	xdata->LogOutUrl =xdata->MailHostUrl +"ym/Logout";
	memset(p,0,200);
	strcpy(p,"{http://cn\.[^\.]+\.mail\.yahoo\.com/[^\"]+}");
	reCT.Parse (p);
	
	if(!reCT.Match (response,&mcCT)) return false;
	mcCT.GetMatch(0, &szStart, &szEnd);

	memset(s,0,100);
	strncpy(s,szStart,szEnd-szStart);

	xdata->MailUrl  =s;
	return true;


}

⌨️ 快捷键说明

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