summaryrefslogtreecommitdiff
path: root/loader/server/client.cpp
diff options
context:
space:
mode:
authorboris <wzn@moneybot.cc>2018-12-12 12:30:44 +1300
committerboris <wzn@moneybot.cc>2018-12-12 12:30:44 +1300
commitec4ad61acbe9e67c5e803e0549841dc5ef5cef2a (patch)
treef30480f8c0e45b0cd2e0c5cd2f2dbccd54ec70ae /loader/server/client.cpp
parenta25b6f6b11a3ae44d0c3b19ba8081a3d9eb1ac5f (diff)
yas
Diffstat (limited to 'loader/server/client.cpp')
-rw-r--r--loader/server/client.cpp252
1 files changed, 127 insertions, 125 deletions
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;
+}