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; }
// 需要回调外部接发送的数据 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 ) ; } }