i will try and edit with the result..
i think i`ll extract the code directly from .inc for only reason that i need it to be fast.
EDIT:
i tried something.. but its working in the same way..
PHP Code:
/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < sockets >
#define PLUGIN "Socket Test#2"
#define VERSION "1.0"
enum _:iServerData
{
DATA[ 256 ],
HOST[ 64 ],
REQUEST[ 128 ],
SOCKET,
ERROR,
DATABLOCKS,
DATASTART,
PACKETNUM
}
new g_ServerData[ iServerData ];
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar" );
FormatHostAndRequest( );
set_task( 5.0, "GetPlayerInfo", 112233 );
// Add your code here...
}
FormatHostAndRequest( )
{
g_ServerData[ HOST ] = "gametracker.com";
formatex( g_ServerData[ REQUEST ], sizeof ( g_ServerData[ REQUEST ] ) -1,"GET /player/Askhanar/188.212.106.110:27015/ HTTP/1.1^r^nHost:%s^r^n^r^n", g_ServerData[ HOST ] );
}
public GetPlayerInfo( )
{
if( g_ServerData[ SOCKET ] > 0 )
socket_close( g_ServerData[ SOCKET ] );
g_ServerData[ SOCKET ] = socket_open( g_ServerData[ HOST ], 80, SOCKET_TCP, g_ServerData[ ERROR ] );
if( g_ServerData[ ERROR ] == 0 && g_ServerData[ SOCKET ] > 0 )
{
socket_send( g_ServerData[ SOCKET ], g_ServerData[ REQUEST ], strlen( g_ServerData[ REQUEST ] ) );
set_task( 0.1, "task_ReciveData", g_ServerData[ SOCKET ] );
}
else
{
switch( g_ServerData[ ERROR ] )
{
case 1: log_amx("[ERROR] Unable to create socket." );
case 2: log_amx("[ERROR] Unable to connect to hostname." );
case 3: log_amx("[ERROR] Unable to connect to the HTTP port." );
}
set_fail_state( "An error occured, read logs." );
}
}
public task_ReciveData( )
{
if( !socket_change( g_ServerData[ SOCKET ], 0 ) )
{
set_task( 0.1, "task_ReciveData", g_ServerData[ SOCKET ] );
return;
}
if ( ( g_ServerData[ DATABLOCKS ] = socket_recv( g_ServerData[ SOCKET ], g_ServerData[ DATA ], sizeof ( g_ServerData[ DATA ] ) ) ) )
{
if ( ( ++g_ServerData[ PACKETNUM ] == 1 ) && ( ( g_ServerData[ DATASTART ] = strfind( g_ServerData[ DATA ] , "^r^n^r^n" ) ) > -1 ) )
{
g_ServerData[ DATASTART ] += 4;
}
else
{
g_ServerData[ DATASTART ] = 0;
}
log_amx( "[%i] RECEIVED: %s", g_ServerData[ PACKETNUM ], g_ServerData[ DATA ][ g_ServerData[ DATASTART ] ] );
}
else
{
socket_close( g_ServerData[ SOCKET ] );
g_ServerData[ SOCKET ] = 0;
g_ServerData[ PACKETNUM ] = 0;
g_ServerData[ DATASTART ] = 0;
g_ServerData[ DATABLOCKS ] = 0;
}
}
i tried with http.inc by myself and it successfully donwloaded the page content in a .txt file..
idk how to make it store in a string cause http.inc its using fwrite_blocks..
LE2: i tested for more than 1 hour and here it is.
excuse my ugly coded.. its for testing.
PHP Code:
/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < sockets >
#define PLUGIN "Socket Test#2"
#define VERSION "1.0"
enum _:iServerInfos
{
Server[ 64 ],
RemoteFile[ 64 ],
Socket,
Error,
PacketNum
}
new g_ServerData[ iServerInfos ];
new szRequest[ 128 ];
new g_DataBuffer[ 4096 ];
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar" );
FormatHostAndRequest( );
register_concmd( "test", "GetPlayerInfo" );
set_task( 5.0, "GetPlayerInfo", 112233 );
// Add your code here...
}
FormatHostAndRequest( )
{
g_ServerData[ Server ] = "www.gametracker.com";
g_ServerData[ RemoteFile ] = "player/askhanar/188.212.106.110:27015";
formatex( szRequest, sizeof ( szRequest ) -1,"GET /%s/ HTTP/1.1^r^nHost: %s^r^n^r^n", g_ServerData[ RemoteFile ], g_ServerData[ Server ] );
}
public GetPlayerInfo( )
{
if( g_ServerData[ Socket ] > 0 )
socket_close( g_ServerData[ Socket ] );
g_ServerData[ Socket ] = socket_open( g_ServerData[ Server ], 80, SOCKET_TCP, g_ServerData[ Error ] );
if( g_ServerData[ Error ] == 0 && g_ServerData[ Socket ] > 0 )
{
log_amx( "connected, sending: %s", szRequest );
socket_send( g_ServerData[ Socket ], szRequest, sizeof( szRequest ) );
g_ServerData[ PacketNum ] = 0;
set_task( 0.1, "task_ReciveData", 112233, _, _, "b", 0 );
set_task( 5.0, "task_close" );
}
else
{
switch( g_ServerData[ Error ] )
{
case 1: log_amx("[ERROR] Unable to create socket." );
case 2: log_amx("[ERROR] Unable to connect to hostname." );
case 3: log_amx("[ERROR] Unable to connect to the HTTP port." );
}
set_fail_state( "An error occured, read logs." );
}
}
public task_close( )
{
log_amx( "removed_task" );
socket_close( g_ServerData[ Socket ] );
g_ServerData[ Socket ] = 0;
g_ServerData[ PacketNum ] = 0;
remove_task( 112233 );
}
public task_ReciveData( )
{
log_amx( "task_rec" );
static iDataStart
new iLen;
if( socket_change( g_ServerData[ Socket ], 0 ) )
{
if( ( iLen = socket_recv( g_ServerData[ Socket ], g_DataBuffer, sizeof( g_DataBuffer ) ) ) )
{
if ( ( ++g_ServerData[ PacketNum ] == 1 ) && ( ( iDataStart = strfind( g_DataBuffer , "^r^n^r^n" ) ) > -1 ) )
{
iDataStart += 4;
}
else
{
iDataStart = 0;
}
log_amx( "[%i] [ %i ] RECEIVED: %s", g_ServerData[ PacketNum ], iLen, g_DataBuffer[ iDataStart ] );
}
/*else
{
log_amx( "removed_task" );
socket_close( g_ServerData[ Socket ] );
g_ServerData[ Socket ] = 0;
g_ServerData[ PacketNum ] = 0;
remove_task( 112233 );
}*/
}
}