diff options
Diffstat (limited to 'csgo-loader/csgo-server')
| -rw-r--r-- | csgo-loader/csgo-server/Login/RemoteLogin.cpp | 6 | ||||
| -rw-r--r-- | csgo-loader/csgo-server/Networking/TCPServer.cpp | 14 | ||||
| -rw-r--r-- | csgo-loader/csgo-server/Networking/TCPServer.hpp | 2 | ||||
| -rw-r--r-- | csgo-loader/csgo-server/Networking/WebSocket.cpp | 17 | ||||
| -rw-r--r-- | csgo-loader/csgo-server/Server.cpp | 9 |
5 files changed, 31 insertions, 17 deletions
diff --git a/csgo-loader/csgo-server/Login/RemoteLogin.cpp b/csgo-loader/csgo-server/Login/RemoteLogin.cpp index 83ab4a7..3cc5c77 100644 --- a/csgo-loader/csgo-server/Login/RemoteLogin.cpp +++ b/csgo-loader/csgo-server/Login/RemoteLogin.cpp @@ -12,7 +12,7 @@ namespace Login return false;
// Epic direct casts :---DDDD
- m_Header = *(RemoteLoginHeader *)(&RawLoginHeader[0]);
+ m_Header = *(RemoteLoginHeader *)&RawLoginHeader[0];
return true;
}
@@ -51,8 +51,8 @@ namespace Login // Checksum validation.
uint8_t Checksum = m_Header.m_IntegrityBit1
- | m_Header.m_IntegrityBit2
- | m_Header.m_IntegrityBit3;
+ | m_Header.m_IntegrityBit2
+ | m_Header.m_IntegrityBit3;
if(Checksum || Checksum != m_Header.m_IntegrityBit4)
{
diff --git a/csgo-loader/csgo-server/Networking/TCPServer.cpp b/csgo-loader/csgo-server/Networking/TCPServer.cpp index dbd109d..739cbdd 100644 --- a/csgo-loader/csgo-server/Networking/TCPServer.cpp +++ b/csgo-loader/csgo-server/Networking/TCPServer.cpp @@ -4,7 +4,7 @@ namespace Networking {
void TCPConnection::Close()
{
- printf("[<=] %s disconnected!\n", m_IpAddress);
+ printf("[ <= ] %s disconnected!\n", m_IpAddress);
if(m_Socket)
closesocket(m_Socket);
@@ -18,10 +18,12 @@ namespace Networking // Send data.
int32_t Result = send(m_Socket, (char *)Bytes.data(), (int)Bytes.size(), 0);
- printf("[=>] Sending %zd bytes to %s.\n", Bytes.size(), m_IpAddress);
+ if(m_IpAddress)
+
+ printf("[ => ] Sending %zd bytes to %s.\n", Bytes.size(), m_IpAddress);
if(Result == -1)
- printf("[=>] Failed to send %zd bytes to %s. (Socket %04Ix)\n", Bytes.size(), m_IpAddress, m_Socket);
+ printf("[ => ] Failed to send %zd bytes to %s. (Socket %04Ix)\n", Bytes.size(), m_IpAddress, m_Socket);
}
ByteArray TCPConnection::ReceiveRawBytes()
@@ -49,7 +51,7 @@ namespace Networking break;
}
- printf("[<=] Received %zd bytes from %s.\n", ReceivedBytes.size(), m_IpAddress);
+ printf("[ <= ] Received %zd bytes from %s.\n", ReceivedBytes.size(), m_IpAddress);
return ReceivedBytes;
}
@@ -88,8 +90,8 @@ namespace Networking // Set up server context.
m_Context.sin_addr.s_addr = INADDR_ANY;
- m_Context.sin_family = AF_INET;
- m_Context.sin_port = htons(ServerPort);
+ m_Context.sin_family = AF_INET;
+ m_Context.sin_port = htons(ServerPort);
int32_t Bind = bind(m_Socket, (sockaddr *)&m_Context, sizeof sockaddr_in);
diff --git a/csgo-loader/csgo-server/Networking/TCPServer.hpp b/csgo-loader/csgo-server/Networking/TCPServer.hpp index 388bdc2..092254d 100644 --- a/csgo-loader/csgo-server/Networking/TCPServer.hpp +++ b/csgo-loader/csgo-server/Networking/TCPServer.hpp @@ -29,7 +29,7 @@ namespace Networking TCPConnection(SOCKET Connection, const char *IpAddress, Wrapper::Encryption &RSA) :
m_Encryption(RSA), m_Socket(Connection), m_IpAddress(IpAddress)
{
- printf("[=>] %s connected!\n", IpAddress);
+ printf("[ => ] %s connected!\n", IpAddress);
}
// Release the connection once it goes out of scope.
diff --git a/csgo-loader/csgo-server/Networking/WebSocket.cpp b/csgo-loader/csgo-server/Networking/WebSocket.cpp index 2c42001..75b5731 100644 --- a/csgo-loader/csgo-server/Networking/WebSocket.cpp +++ b/csgo-loader/csgo-server/Networking/WebSocket.cpp @@ -21,27 +21,30 @@ namespace Networking // Receives a response from a request.
ByteArray WebSocket::Request(const char *File, const char *Header, ByteArray &Data)
{
+ DWORD ReceivedSize{};
ByteArray Response;
InternetHandle WebRequest = HttpOpenRequestA(m_Address, "POST", File, 0, 0, 0, INTERNET_FLAG_SECURE | INTERNET_FLAG_KEEP_CONNECTION, 0);
+ if(!WebRequest)
+ return Response;
+
// Make connection request.
bool Sent = HttpSendRequestA(WebRequest, Header, (DWORD)strlen(Header), Data.data(), (DWORD)Data.size());
if(Sent)
{
- DWORD ReceivedSize{};
-
- uint8_t *Block = (uint8_t *)malloc(4096);
+ // Allocate a buffer to read the response into.
+ uint8_t *Block = (uint8_t *)malloc(0x1000);
// Read response.
- while(InternetReadFile(WebRequest, Block, 4096, &ReceivedSize))
+ while(InternetReadFile(WebRequest, Block, 0x1000, &ReceivedSize))
{
- for(size_t n{}; n < std::min< int >(4096, ReceivedSize); ++n)
- {
+ const size_t RequestRange = std::min< int >(0x1000, ReceivedSize);
+ for(size_t n{}; n < RequestRange; ++n)
Response.push_back(Block[n]);
- }
}
+ // Free the buffer to avoid leaking memory.
free(Block);
}
diff --git a/csgo-loader/csgo-server/Server.cpp b/csgo-loader/csgo-server/Server.cpp index d71a758..3b6bdea 100644 --- a/csgo-loader/csgo-server/Server.cpp +++ b/csgo-loader/csgo-server/Server.cpp @@ -1,5 +1,10 @@ #include <Server.hpp>
+void ConnectionHandler(Networking::TCPConnection &)
+{
+
+}
+
int __stdcall WinMain(HINSTANCE, HINSTANCE, char*, int)
{
// Open a debugging console.
@@ -13,6 +18,10 @@ int __stdcall WinMain(HINSTANCE, HINSTANCE, char*, int) if(Result)
{
+ // Attach our connection handler.
+ Server += ConnectionHandler;
+
+ // Accept any incoming connections.
for(;;)
Server.AcceptConnection();
}
|
