From ec4ad61acbe9e67c5e803e0549841dc5ef5cef2a Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 12 Dec 2018 12:30:44 +1300 Subject: yas --- loader/server/client.cpp | 252 ++++++++++++++++++++++++----------------------- 1 file changed, 127 insertions(+), 125 deletions(-) (limited to 'loader/server/client.cpp') diff --git a/loader/server/client.cpp b/loader/server/client.cpp index fd2ba65..b749f16 100644 --- a/loader/server/client.cpp +++ b/loader/server/client.cpp @@ -1,125 +1,127 @@ -#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); - uint8_t 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(), (int)length + 1, 0); - if(result == -1) { - #if WIN64 - 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); - uint8_t 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(), (int)length + 1, 0); - if(result == -1) { - #if WIN64 - 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() { - - return true; -} +#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); + uint8_t 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(), (int)length + 1, 0); + if(result == -1) { + #if WIN64 + 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); + uint8_t 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(), (int)length + 1, 0); + if(result == -1) { + #if WIN64 + 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() { + if(get_msg() != "hello") + return false; + + return true; +} -- cgit v1.2.3