📄 msnloginclient.cpp
字号:
}
else if(strCommand == CString("LST"))
{
DoLST( strMsg );
FileLog("LST :获取(联系人列表)请求的应答!");
}
else if(strCommand == CString("BLP"))
{
FileLog("BLP :BLP设置保密策略请求的应答!");
memset(buf,0x00,sizeof(buf));
m_iSendXh++;
sprintf(buf, "PNG\r\n");
m_pSocket->Send( (void*)buf, strlen(buf));
}
else if(strCommand == CString("QNG"))
{
FileLog("QNG :PNG(ping)请求的应答!");
}
else if(strCommand == CString("QRY"))
{
FileLog("QRY :CHL服务器验证通过!");
memset(buf,0x00,sizeof(buf));
m_iSendXh++;
sprintf(buf, "PNG\r\n");
m_pSocket->Send( (void*)buf, strlen(buf));
DoUserInput("AddUser sim_m_s_n@hotmail.com",9999);
DispMainPage(); /*显示*/
}
else if(strCommand == CString("MSG"))
{
//MSG Hotmail Hotmail 499
FileLog("MSG:NS服务器发出消息数据 ...");
memset(alTmp0,0x00,sizeof(alTmp0));
memset(alTmp1,0x00,sizeof(alTmp1));
memset(alTmp2,0x00,sizeof(alTmp2));
memset(alTmp3,0x00,sizeof(alTmp3));
memset(alTmp4,0x00,sizeof(alTmp4));
sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
int iLen;
sscanf(alTmp0,"%s %s %s %s",alTmp1,alTmp2,alTmp3 ,alTmp4);
iLen = atoi( alTmp4 );
FileLog("MSG : %s %s %s ,Len=%d",alTmp1,alTmp2,alTmp3 ,iLen);
m_iBytesForCmd = iLen;
}
else if(strCommand == CString("ILN"))
{
//ILN 10 NLN tcpip_2005@126.com 动力通信工作组 1073791020
memset(alTmp0,0x00,sizeof(alTmp0));
memset(alTmp1,0x00,sizeof(alTmp1));
memset(alTmp2,0x00,sizeof(alTmp2));
memset(alTmp3,0x00,sizeof(alTmp3));
memset(alTmp4,0x00,sizeof(alTmp4));
memset(alTmp5,0x00,sizeof(alTmp5));
memset(alTmp6,0x00,sizeof(alTmp6));
memset(alTmp7,0x00,sizeof(alTmp7));
sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
sscanf(alTmp0,"%s %s %s %s %s %s %s",alTmp1,alTmp2,alTmp3 ,alTmp4,alTmp5,alTmp6,alTmp7);
FileLog("ILN:NS->[联系人: %s %s %s Status:%s]",alTmp4,alTmp5,alTmp6, alTmp3);
//memset(alTmp0,0x00,sizeof(alTmp0));
//memcpy(alTmp0,(LPCTSTR)strMsg,strMsg.GetLength());
for( int i=0;i<m_iCountUser; i ++ )
{
if( !m_MsnUser[i]->m_strEmail.CompareNoCase(alTmp4) )
{
m_MsnUser[i]->m_strStatus.Format("%s",alTmp3);
m_MsnUser[i]->m_strNickName.Format("%s",alTmp5);
FileLog("ILN:NS->联系人 i=[%d](%s) ,更新状态完成!", i,(LPCTSTR)m_MsnUser[i]->m_strEmail );
break;
}
}
DeCodeBuf( alTmp7 , strlen(alTmp7)) ;
alTmp7[0]='_';
FileLog("ILN:NS->[联系人:%s]",alTmp7 );
DispMainPage();
}
else if(strCommand == CString("REA"))
{
FileLog("REA:NS-> OK!");
DispMainPage();
}
else if(strCommand == CString("REM"))
{
FileLog("REM:NS-> 删除联系人OK!");
DispMainPage();
}
else if(strCommand == CString("NLN"))
{
//NLN BSY tcpip_2005@126.com 动力通信工作组 1073791020
memset(alTmp0,0x00,sizeof(alTmp0));
memset(alTmp1,0x00,sizeof(alTmp1));
memset(alTmp2,0x00,sizeof(alTmp2));
memset(alTmp3,0x00,sizeof(alTmp3));
memset(alTmp4,0x00,sizeof(alTmp4));
memset(alTmp5,0x00,sizeof(alTmp5));
memset(alTmp6,0x00,sizeof(alTmp6));
memset(alTmp7,0x00,sizeof(alTmp7));
sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
sscanf(alTmp0,"%s %s %s %s %s %s",alTmp1,alTmp3 ,alTmp4,alTmp5,alTmp6,alTmp7);
FileLog("NLN:NS->[联系人: %s %s %s Status:%s]",alTmp4,alTmp5,alTmp6, alTmp3);
for( int i=0;i<m_iCountUser; i ++ )
{
if( !m_MsnUser[i]->m_strEmail.CompareNoCase(alTmp4) )
{
m_MsnUser[i]->m_strStatus.Format("%s",alTmp3);
m_MsnUser[i]->m_strNickName.Format("%s",alTmp5);
FileLog("NLN:NS->联系人 i=[%d](%s) ,更新状态完成!", i,(LPCTSTR)m_MsnUser[i]->m_strEmail );
break;
}
}
if( i == m_iCountUser )
{
CString strTmp1;
//[LST tcpip_2005@126.com 动力通信工作组 11 1]
strTmp1.Format("LST %s %s 11 0",alTmp4,alTmp5);
//m_MsnUser[i]->m_strStatus.Format("%s",alTmp3);
DoLST(strTmp1);
}
DeCodeBuf( alTmp7 , strlen(alTmp7)) ;
alTmp7[0]='_';
FileLog("NLN:NS->[联系人:%s]",alTmp7 );
DispMainPage();
}
else if(strCommand == CString("FLN"))
{
//FLN @sina.com.cn
memset(alTmp0,0x00,sizeof(alTmp0));
memset(alTmp1,0x00,sizeof(alTmp1));
memset(alTmp2,0x00,sizeof(alTmp2));
memset(alTmp3,0x00,sizeof(alTmp3));
memset(alTmp4,0x00,sizeof(alTmp4));
sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
sscanf(alTmp0,"%s %s ",alTmp3 ,alTmp4);
for( int i=0;i<m_iCountUser; i ++ )
{
if( !m_MsnUser[i]->m_strEmail.CompareNoCase(alTmp4) )
{
m_MsnUser[i]->m_strStatus.Format("%s",alTmp3);
FileLog("FLN:NS->联系人 i=[%d](%s) ,更新状态完成!", i,(LPCTSTR)m_MsnUser[i]->m_strEmail );
break;
}
}
DispMainPage();
}
else if(strCommand == CString("RNG"))
{
//RNG 17149548 207.46.108.49:1863 CKI 1116489150.3878 acd@sina.com.cn 静
memset(alTmp0,0x00,sizeof(alTmp0));
memset(alTmp1,0x00,sizeof(alTmp1));
memset(alTmp2,0x00,sizeof(alTmp2));
memset(alTmp3,0x00,sizeof(alTmp3));
memset(alTmp4,0x00,sizeof(alTmp4));
memset(alTmp5,0x00,sizeof(alTmp5));
memset(alTmp6,0x00,sizeof(alTmp6));
memset(alTmp7,0x00,sizeof(alTmp7));
sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
sscanf(alTmp0,"%s %s %s %s %s %s %s",alTmp1,alTmp2,alTmp3 ,alTmp4,alTmp5,alTmp6,alTmp7);
FileLog("RNG:NS->[联系人: %s(%s) 发出私聊session请求 ...]",alTmp6, alTmp7);
for( int i=0;i<m_iCountUser; i ++ )
{
if( !m_MsnUser[i]->m_strEmail.CompareNoCase(alTmp6) )
{
FileLog("RNG:NS->[联系人: i=[%d](%s) ...]", i,(LPCTSTR)m_MsnUser[i]->m_strEmail );
m_MsnUser[i]->m_strSessionID.Format("%s",alTmp2);
m_MsnUser[i]->SBInit(alTmp3,alTmp5);
break;
}
}
}
else if(strCommand == CString("ADD"))
{
//09:59:18:323 S->C 0046 [ADD 0 RL 0 abc@sina.com.cn %e5%a4%8f%e4%bb%a4%e9%9d%99
//09:59:28:448 C->S 0063 [ADD 13 AL abc@sina.com.cn %25e5%25a4%258f%25e4%25bb%25a4%25e9%259d%2599
//09:59:28:748 S->C 0061 [ADD 13 AL 1 abc@sina.com.cn abc@sina.com.cn
//09:59:42:147 C->S 0065 [ADD 14 FL abc@sina.com.cn %25e5%25a4%258f%25e4%25bb%25a4%25e9%259d%2599 0
//09:59:42:478 S->C 0049 [ADD 14 FL 1 abc@sina.com.cn %e5%a4%8f%e4%bb%a4%e9%9d%99 0
//09:59:42:668 S->C 0304 [ILN 14 NLN abc@sina.com.cn %e5%a4%8f%e4%bb%a4%e9%9d%99 1073795116 %
memset(alTmp0,0x00,sizeof(alTmp0));
memset(alTmp1,0x00,sizeof(alTmp1));
memset(alTmp2,0x00,sizeof(alTmp2));
memset(alTmp3,0x00,sizeof(alTmp3));
memset(alTmp4,0x00,sizeof(alTmp4));
memset(alTmp5,0x00,sizeof(alTmp5));
sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
sscanf(alTmp0,"%s %s %s %s %s",alTmp1,alTmp2,alTmp3,alTmp4,alTmp5);
FileLog("USR : %s %s %s %s",alTmp1,alTmp2,alTmp3,alTmp4,alTmp5);
//USR 7 OK tcpip_2005@126.com tcpip_2005@126.com 1 0 \r\n
if( memcmp( alTmp3 ,"RL", 2) == 0 )
{
//09:59:28:448 C->S 0063 [ADD 13 AL abc@sina.com.cn
memset(buf,0x00,sizeof(buf));
m_iSendXh++;
sprintf(buf, "ADD %d AL %s %s\r\n",m_iSendXh,alTmp5,alTmp5 );
iTem = strlen(buf);
buf[iTem] = 0x00;
m_pSocket->Send( (void*)buf, strlen(buf));
return ;
}
else if( memcmp( alTmp3 ,"AL", 2) == 0 )
{
memset(buf,0x00,sizeof(buf));
m_iSendXh++;
sprintf(buf, "ADD %d FL %s %s 0\r\n",m_iSendXh,alTmp5,alTmp5 );
iTem = strlen(buf);
buf[iTem] = 0x00;
m_pSocket->Send( (void*)buf, strlen(buf));
return ;
}
else if( memcmp( alTmp3 ,"FL", 2) == 0 )
{
FileLog("ADD %s FL OK !" , alTmp5);
return ;
}
}
else
{
FileLog("Error! Command[%s]",(LPCTSTR)strCommand);
}
}
void CMsnLoginClient::ParseInputCommandStr(CString strText)
{
int iEnd;
CString strCommand,strParams;
char buf[50];
int iTem;
//this input is a command
//get the command:
iEnd = strText.Find(_T(' '));
if(iEnd == -1)
{
//the input command like: '/list'
strCommand = strText.Mid(1,strText.GetLength());
strParams = CString(_T(""));
}
else
{
strCommand = strText.Mid(1,iEnd);
strParams = strText.Mid(iEnd+1,strText.GetLength());
strParams.TrimLeft();
strParams.TrimRight();
}
strCommand.MakeUpper();
strCommand.TrimLeft();
strCommand.TrimRight();
if( strCommand == CString(_T("JOIN")) )
{
//DoJoin( LPCSTR(strParams) );
}
else if( strCommand == CString(_T("LIST")) )
{
//DoList();
if(m_pSocket == NULL) return;
memset(buf,0x00,sizeof(buf));
if( iEnd != -1 ) sprintf( buf, "LIST %s",LPCSTR(strParams));
else strcpy(buf,"LIST");
iTem = strlen(buf);
buf[iTem] = 0x0d;
buf[iTem+1] = 0x0a;
buf[iTem+2] = 0x00;
m_pSocket->Send( (void*)buf, strlen(buf));
}
else if( strCommand == CString(_T("CLEAR")) || strCommand == CString(_T("CLS")) )
{
// DoClear();
}
else
{
if(m_pSocket == NULL) return;
memset(buf,0x00,sizeof(buf));
if( iEnd != -1 ) sprintf( buf, "%s %s",LPCSTR(strCommand),LPCSTR(strParams));
else sprintf( buf, "%s",LPCSTR(strCommand));
iTem = strlen(buf);
buf[iTem] = 0x0d;
buf[iTem+1] = 0x0a;
buf[iTem+2] = 0x00;
m_pSocket->Send( (void*)buf, strlen(buf));
}
}
void CMsnLoginClient::DoXFR()
{
FileLog("->XFR:断开服务器连接!");
m_pSocket->ShutDown(2);
m_pSocket->Close();
delete m_pSocket;
m_pSocket = NULL;
m_iLoginOk=0;
Init();
}
int CMsnLoginClient::DoHTTPSAuthentication(char *alTmp3, char *alTmp4)
{
FileLog("DoHTTPSAuthentication:NS给出的信息(S:Subsequent)[%s]", alTmp3);
CInternetSession session("My Session");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
DWORD dwHttpRequestFlags = INTERNET_FLAG_NO_AUTO_REDIRECT|INTERNET_FLAG_SECURE;
char szLogin[] = "https://login.passport.com/login2.srf?lc=1033";
char szHeaders[2000];
//char szBuf[1024];
memset(szHeaders,0x00,sizeof(szHeaders));
//Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=example%40passport.com,pwd=password, lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom,ct=1073355862,kpp=1,kv=5,ver=2.1.0173.1, tpf=ed1c2f217a21c191c61251eb8b73bb60 \r\n
sprintf( szHeaders,"Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%%3A%%2F%%2Fmessenger%%2Emsn%%2Ecom,sign-in=%s,pwd=%s, %s \r\n", (LPCTSTR)m_strMyNickName,(LPCTSTR)m_strPassword,alTmp3 );
FileLog( "szHeaders=[%s]",szHeaders);
try
{
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwRet;
strServerName.Format("login.passport.com");
strObject.Format("/login2.srf?lc=1033");
nPort=443;
FileLog("session.GetHttpConnection(%s,%d) ...",(LPCTSTR)strServerName, nPort);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -