diff options
Diffstat (limited to 'server/client.cpp')
| -rw-r--r-- | server/client.cpp | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/server/client.cpp b/server/client.cpp deleted file mode 100644 index 22aa053..0000000 --- a/server/client.cpp +++ /dev/null @@ -1,201 +0,0 @@ -#include "client.hpp" -#include "server.hpp" - -/* -std::vector< byte > server::c_client::receive_message( ) { - std::vector< uint8_t > ret; - char buffer[ BUFFER_SIZE ]{ }; - int received = 0; - - while( true ) { - received = recv( m_socket, buffer, BUFFER_SIZE, 0 ); - if( received < 0 ) - break; - - for( int i{ }; i < received; ++i ) - ret.push_back( buffer[ i ] ); - - if( received < BUFFER_SIZE ) - break; - } - - if( ret.size( ) ) { - decode_buffer( ret.data( ), ret.size( ) ); - ret.push_back( 0 ); - ret.erase( ret.begin( ) ); - } - - return ret; -} -*/ - -void server::c_client::kill( ) { - closesocket( m_socket ); - printf( "%s disconnected\n", get_ip( ) ); -} - -std::string server::c_client::get_msg( ) { - std::string ret{ }; - char buffer[ BUFFER_SIZE ]{ }; - int received = 0; - - while ( true ) { - received = recv( m_socket, buffer, BUFFER_SIZE, 0 ); - if ( received < 0 ) - break; - - for ( int i{ }; i < received; ++i ) - ret.push_back( buffer[ i ] ); - - if ( received < BUFFER_SIZE ) - break; - } - - if ( ret.size( ) ) { - decode_buffer( ( uint8_t* )ret.data( ), ret.size( ) ); - // ret.push_back( 0 ); somehow broke things :/ - ret.erase( ret.begin( ) ); - } - - return ret; -} - -bool server::c_client::send_msg( byte* msg, size_t length ) { - auto buffer = std::make_unique< uint8_t[ ] >( length + 1 ); - auto key = util::random_number( 0, 255 ) & 0xff; - - buffer[ 0 ] = key; - memcpy( buffer.get( ) + 1, - msg, - length ); - - for( size_t i = 1; i <= length; ++i ) { - buffer[ i ] ^= key; - } - - int result = send( m_socket, ( char* )buffer.get( ), length + 1, 0 ); - if( result == -1 ) { -#if WIN - printf( "error sending message to %s: %d\n", - get_ip( ), WSAGetLastError( ) ); -#else - printf( "error sending message to %s\n", - get_ip( ) ); -#endif - return false; - } - - return true; -} - -bool server::c_client::send_msg( const char* msg ) { - auto length = strlen( msg ); - auto buffer = std::make_unique< uint8_t[ ] >( length + 1 ); - auto key = util::random_number( 0, 255 ) & 0xff; - - memset( buffer.get( ), 0, length+1 ); - - buffer[ 0 ] = key; - memcpy( buffer.get( ) + 1, - msg, - length ); - - for ( size_t i = 1; i <= length; ++i ) { - buffer[ i ] ^= key; - } - - int result = send( m_socket, ( char* )buffer.get( ), length + 1, 0 ); - if ( result == -1 ) { -#if WIN - printf( "error sending message to %s: %d\n", - get_ip( ), WSAGetLastError( ) ); -#else - printf( "error sending message to %s\n", - get_ip( ) ); -#endif - return false; - } - - return true; -} - -bool server::c_client::handle( ) { - /* - ALL TEST CODE BELOW. - */ - auto hello_msg = get_msg( ); - printf( "%s\n", hello_msg.c_str( ) ); - - if ( hello_msg != "hello" ) - return false; - - auto username = get_msg( ); - if ( username != "friendly" ) - return false; - - printf( "correct username\n" ); - send_msg( "correct username" ); - - auto password = get_msg( ); - if ( password != "nigger" ) - return false; - - printf( "correct password\n" ); - send_msg( "correct password" ); - - const char* games_list = -R"(games: -1: CSGO -2: CSGO (test) -3: Garry's Mod -)"; - - send_msg( games_list ); - - auto game_id = get_msg( ); - - if ( game_id== "1" ) { - printf( "csgo\n" ); - send_msg( "csgo.exe" ); - } - else if ( game_id == "2" ) { - printf( "csgo test\n" ); - send_msg( "csgo.exe" ); - } - else if ( game_id == "3" ) { - printf( "gmod\n" ); - send_msg( "hl2.exe" ); - } - else { - printf( "invalid\n" ); - return false; - } - - auto found = get_msg( ); - if ( found != "found" ) - return false; - - printf( "process found\n" ); - - if ( game_id == "3" ) { - // test. make sure the file is in ur directory - auto file = std::ifstream( "gmod.dll", std::ifstream::binary ); - if ( file.is_open( ) ) { - file.seekg( 0, file.end ); - - auto size = ( int )file.tellg( );
- auto buffer = std::make_unique< char[ ] >( size );
-
- memset( buffer.get( ), 0, size );
-
- file.seekg( 0, file.beg );
- file.read( buffer.get( ), size );
- - send_msg( ( byte* )buffer.get( ), size ); - - file.close( ); - } - } - - return true; -} |
