Ejemplo n.º 1
0
BOOL CSMTP::AuthLogin(void)
{
	if ( g_ReportOption.strUsername.GetLength()==0||g_ReportOption.strPassword.GetLength()==0 )
	{
		g_ReportOption.strUsername = _T("*****@*****.**");
		g_ReportOption.strPassword = _T("11111");
	}

	SendStr("AUTH LOGIN\r\n");
	if(!get_response(AUTH_RESPONE))
		return false;

	CString sLastCommandString = response_buf;
	sLastCommandString = sLastCommandString.Right(sLastCommandString.GetLength() - 4);
	LPCSTR pszLastCommandString = T2A((LPTSTR) (LPCTSTR) sLastCommandString);
	CBase64 Coder;
	CString strCmd;
	Coder.Decode(pszLastCommandString,strCmd.GetBuffer(strlen(pszLastCommandString)));
	strCmd.ReleaseBuffer();
	if (strCmd.CompareNoCase("username:"******"UNEXPECTED_AUTH_LOGIN_USERNAME_REQUEST\n");
		return false;
	}

	//send base64 encoded username
	CString strUsr=Coder.Encode(g_ReportOption.strUsername,g_ReportOption.strUsername.GetLength())+"\r\n";
	SendStr(strUsr);
	if(!get_response(AUTH_RESPONE))
		return false;

	//Check that the response has a password request in it
	sLastCommandString = response_buf;
	sLastCommandString = sLastCommandString.Right(sLastCommandString.GetLength() - 4);
	pszLastCommandString = T2A((LPTSTR) (LPCTSTR) sLastCommandString);


	OutputDebugString("send base64 encoded username  success.\n");
	Coder.Decode(pszLastCommandString,strCmd.GetBuffer(strlen(pszLastCommandString)));
	strCmd.ReleaseBuffer();
	if (strCmd.CompareNoCase("password:"******"UNEXPECTED_AUTH_LOGIN_USERNAME_REQUEST\n");
		return false;
	}

	//send base64 encoded username
	CString strPw=Coder.Encode(g_ReportOption.strPassword,g_ReportOption.strPassword.GetLength())+"\r\n";
	SendStr(strPw);
	if(!get_response(AUTH_SUCCESS))
		return false;

	OutputDebugString("send base64 encoded password  success.\n");

	return true;
}
Ejemplo n.º 2
0
// 需要回调外部接发送的数据
void CPlugin::OnDeliver( unsigned int fd, const char *data, int len , unsigned int cmd )
{
	string userid, macid ;
	if ( ! _fdmgr.GetUser( fd, userid, macid ) ) {
		OUT_ERROR( NULL, 0, "Plugin", "get fd %u user failed", fd ) ;
		return ;
	}

	CBase64 base ;
	base.Encode( data, len ) ;

	char scmd[512] = {0};
	sprintf( scmd, "CAITS 0_%u %s 0 D_SETP {TYPE:9,91:%d,90:", fd, macid.c_str(), ( 0xff & cmd ) ) ;

	string sdata = scmd ;
	sdata += base.GetBuffer() ;
	sdata += "} \r\n" ;

	// 发送数据出去
	if ( ! _pEnv->GetMsgClientServer()->DeliverEx( userid.c_str(), sdata.c_str(), sdata.length() ) ) {
		_fdmgr.DelUser( fd ) ;
	}
}