From bea3803917ced3229699c168678441648bd9db44 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Wed, 12 Oct 2016 09:44:20 -0400 Subject: [PATCH 1/3] Log IP address to console --- src/network/TcpSocket.cpp | 20 +++++++++++++++++++- src/network/TcpSocket.h | 3 +++ src/network/network.cpp | 4 ++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/network/TcpSocket.cpp b/src/network/TcpSocket.cpp index 4d470ac262..77b93a220c 100644 --- a/src/network/TcpSocket.cpp +++ b/src/network/TcpSocket.cpp @@ -87,6 +87,8 @@ private: uint16 _listeningPort = 0; SOCKET _socket = INVALID_SOCKET; + std::string _hostStr; + SDL_mutex * _connectMutex = nullptr; std::string _error; @@ -182,9 +184,11 @@ public: { throw Exception("Socket not listening."); } + struct sockaddr_storage client_addr; + socklen_t client_len = sizeof(struct sockaddr_storage); ITcpSocket * tcpSocket = nullptr; - SOCKET socket = accept(_socket, nullptr, nullptr); + SOCKET socket = accept(_socket, (struct sockaddr *)&client_addr, &client_len); if (socket == INVALID_SOCKET) { if (LAST_SOCKET_ERROR() != EWOULDBLOCK) @@ -201,8 +205,12 @@ public: } else { + char hoststr[NI_MAXHOST]; + int rc = getnameinfo((struct sockaddr *)&client_addr, client_len, hoststr, sizeof(hoststr), nullptr, 0, NI_NUMERICHOST | NI_NUMERICSERV); SetTCPNoDelay(socket, true); tcpSocket = new TcpSocket(socket); + if (rc == 0) + tcpSocket->SetHostStr(hoststr); } } return tcpSocket; @@ -403,6 +411,16 @@ public: SDL_UnlockMutex(_connectMutex); } + const char * GetHostStr() override + { + return _hostStr.empty() ? nullptr : _hostStr.c_str(); + } + + void SetHostStr(const char * hostStr) override + { + _hostStr = std::string(hostStr); + } + private: TcpSocket(SOCKET socket) { diff --git a/src/network/TcpSocket.h b/src/network/TcpSocket.h index 3e248951fa..3a2a1e1429 100644 --- a/src/network/TcpSocket.h +++ b/src/network/TcpSocket.h @@ -58,6 +58,9 @@ public: virtual void Disconnect() abstract; virtual void Close() abstract; + + virtual const char * GetHostStr() abstract; + virtual void SetHostStr(const char * hostStr) abstract; }; ITcpSocket * CreateTcpSocket(); diff --git a/src/network/network.cpp b/src/network/network.cpp index 26a80e51a1..25900500f7 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -1408,6 +1408,10 @@ void Network::Server_Client_Joined(const char* name, const std::string &keyhash, if (player) { char text[256]; const char * player_name = (const char *) player->name.c_str(); + //Relay connection information to console + auto hostStr = connection.Socket->GetHostStr(); + log_info("%s has joined from host: %s", player_name, hostStr); + //Show join message in chat format_string(text, 256, STR_MULTIPLAYER_PLAYER_HAS_JOINED_THE_GAME, &player_name); chat_history_add(text); Server_Send_MAP(&connection); From 5bd5310038fa8f16fd58e5a9c8009e43ba03ef75 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Wed, 12 Oct 2016 16:56:39 -0400 Subject: [PATCH 2/3] Refactor, remove temporary console logging --- src/network/TcpSocket.cpp | 27 +++++++++++++++------------ src/network/TcpSocket.h | 3 +-- src/network/network.cpp | 4 ---- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/network/TcpSocket.cpp b/src/network/TcpSocket.cpp index 77b93a220c..48913d1053 100644 --- a/src/network/TcpSocket.cpp +++ b/src/network/TcpSocket.cpp @@ -87,7 +87,7 @@ private: uint16 _listeningPort = 0; SOCKET _socket = INVALID_SOCKET; - std::string _hostStr; + std::string _hostName; SDL_mutex * _connectMutex = nullptr; std::string _error; @@ -205,12 +205,20 @@ public: } else { - char hoststr[NI_MAXHOST]; - int rc = getnameinfo((struct sockaddr *)&client_addr, client_len, hoststr, sizeof(hoststr), nullptr, 0, NI_NUMERICHOST | NI_NUMERICSERV); + char hostName[NI_MAXHOST]; + int rc = getnameinfo( + (struct sockaddr *)&client_addr, + client_len, + hostName, + sizeof(hostName), + nullptr, + 0, + NI_NUMERICHOST | NI_NUMERICSERV); SetTCPNoDelay(socket, true); tcpSocket = new TcpSocket(socket); - if (rc == 0) - tcpSocket->SetHostStr(hoststr); + if (rc == 0) { + _hostName = std::string(hostName); + } } } return tcpSocket; @@ -411,14 +419,9 @@ public: SDL_UnlockMutex(_connectMutex); } - const char * GetHostStr() override + const char * GetHostName() const override { - return _hostStr.empty() ? nullptr : _hostStr.c_str(); - } - - void SetHostStr(const char * hostStr) override - { - _hostStr = std::string(hostStr); + return _hostName.empty() ? nullptr : _hostName.c_str(); } private: diff --git a/src/network/TcpSocket.h b/src/network/TcpSocket.h index 3a2a1e1429..cd428c830a 100644 --- a/src/network/TcpSocket.h +++ b/src/network/TcpSocket.h @@ -59,8 +59,7 @@ public: virtual void Disconnect() abstract; virtual void Close() abstract; - virtual const char * GetHostStr() abstract; - virtual void SetHostStr(const char * hostStr) abstract; + virtual const char * GetHostName() const abstract; }; ITcpSocket * CreateTcpSocket(); diff --git a/src/network/network.cpp b/src/network/network.cpp index 25900500f7..26a80e51a1 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -1408,10 +1408,6 @@ void Network::Server_Client_Joined(const char* name, const std::string &keyhash, if (player) { char text[256]; const char * player_name = (const char *) player->name.c_str(); - //Relay connection information to console - auto hostStr = connection.Socket->GetHostStr(); - log_info("%s has joined from host: %s", player_name, hostStr); - //Show join message in chat format_string(text, 256, STR_MULTIPLAYER_PLAYER_HAS_JOINED_THE_GAME, &player_name); chat_history_add(text); Server_Send_MAP(&connection); From 3ae63da9a573d7727580daf507b2840d05c4b848 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Wed, 12 Oct 2016 17:54:13 -0400 Subject: [PATCH 3/3] More Reformatting --- src/network/TcpSocket.cpp | 3 ++- src/network/TcpSocket.h | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/network/TcpSocket.cpp b/src/network/TcpSocket.cpp index 48913d1053..090df63b6e 100644 --- a/src/network/TcpSocket.cpp +++ b/src/network/TcpSocket.cpp @@ -216,7 +216,8 @@ public: NI_NUMERICHOST | NI_NUMERICSERV); SetTCPNoDelay(socket, true); tcpSocket = new TcpSocket(socket); - if (rc == 0) { + if (rc == 0) + { _hostName = std::string(hostName); } } diff --git a/src/network/TcpSocket.h b/src/network/TcpSocket.h index cd428c830a..1e7f9e0320 100644 --- a/src/network/TcpSocket.h +++ b/src/network/TcpSocket.h @@ -45,6 +45,7 @@ public: virtual SOCKET_STATUS GetStatus() abstract; virtual const char * GetError() abstract; + virtual const char * GetHostName() const abstract; virtual void Listen(uint16 port) abstract; virtual void Listen(const char * address, uint16 port) abstract; @@ -58,8 +59,6 @@ public: virtual void Disconnect() abstract; virtual void Close() abstract; - - virtual const char * GetHostName() const abstract; }; ITcpSocket * CreateTcpSocket();