Add Connection.EndPoint property.

This commit is contained in:
Paul Chote
2021-05-23 15:01:30 +01:00
committed by reaperrr
parent 7e79e69eae
commit 7c02b4d264
3 changed files with 25 additions and 27 deletions

View File

@@ -12,6 +12,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
namespace OpenRA.Server
@@ -130,6 +131,8 @@ namespace OpenRA.Server
}
}
}
public EndPoint EndPoint => Socket.RemoteEndPoint;
}
public enum ReceiveState { Header, Data }

View File

@@ -421,8 +421,7 @@ namespace OpenRA.Server
{
if (State == ServerState.GameStarted)
{
Log.Write("server", "Rejected connection from {0}; game is already started.",
newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; game is already started.", newConn.EndPoint);
SendOrderTo(newConn, "ServerError", "The game has already started");
DropClient(newConn);
@@ -439,7 +438,7 @@ namespace OpenRA.Server
return;
}
var ipAddress = ((IPEndPoint)newConn.Socket.RemoteEndPoint).Address;
var ipAddress = ((IPEndPoint)newConn.EndPoint).Address;
var client = new Session.Client
{
Name = OpenRA.Settings.SanitizedPlayerName(handshake.Client.Name),
@@ -459,7 +458,7 @@ namespace OpenRA.Server
if (ModData.Manifest.Id != handshake.Mod)
{
Log.Write("server", "Rejected connection from {0}; mods do not match.",
newConn.Socket.RemoteEndPoint);
newConn.EndPoint);
SendOrderTo(newConn, "ServerError", "Server is running an incompatible mod");
DropClient(newConn);
@@ -468,8 +467,7 @@ namespace OpenRA.Server
if (ModData.Manifest.Metadata.Version != handshake.Version)
{
Log.Write("server", "Rejected connection from {0}; Not running the same version.",
newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; Not running the same version.", newConn.EndPoint);
SendOrderTo(newConn, "ServerError", "Server is running an incompatible version");
DropClient(newConn);
@@ -479,7 +477,7 @@ namespace OpenRA.Server
if (handshake.OrdersProtocol != ProtocolVersion.Orders)
{
Log.Write("server", "Rejected connection from {0}; incompatible Orders protocol version {1}.",
newConn.Socket.RemoteEndPoint, handshake.OrdersProtocol);
newConn.EndPoint, handshake.OrdersProtocol);
SendOrderTo(newConn, "ServerError", "Server is running an incompatible protocol");
DropClient(newConn);
@@ -490,7 +488,7 @@ namespace OpenRA.Server
var bans = Settings.Ban.Union(TempBans);
if (bans.Contains(client.IPAddress))
{
Log.Write("server", "Rejected connection from {0}; Banned.", newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; Banned.", newConn.EndPoint);
SendOrderTo(newConn, "ServerError", $"You have been {(Settings.Ban.Contains(client.IPAddress) ? "banned" : "temporarily banned")} from the server");
DropClient(newConn);
return;
@@ -524,20 +522,17 @@ namespace OpenRA.Server
var clientPing = new Session.ClientPing { Index = client.Index };
LobbyInfo.ClientPings.Add(clientPing);
Log.Write("server", "Client {0}: Accepted connection from {1}.",
newConn.PlayerIndex, newConn.Socket.RemoteEndPoint);
Log.Write("server", "Client {0}: Accepted connection from {1}.", newConn.PlayerIndex, newConn.EndPoint);
if (client.Fingerprint != null)
Log.Write("server", "Client {0}: Player fingerprint is {1}.",
newConn.PlayerIndex, client.Fingerprint);
Log.Write("server", "Client {0}: Player fingerprint is {1}.", newConn.PlayerIndex, client.Fingerprint);
foreach (var t in serverTraits.WithInterface<IClientJoined>())
t.ClientJoined(this, newConn);
SyncLobbyInfo();
Log.Write("server", "{0} ({1}) has joined the game.",
client.Name, newConn.Socket.RemoteEndPoint);
Log.Write("server", "{0} ({1}) has joined the game.", client.Name, newConn.EndPoint);
// Report to all other players
SendMessage($"{client.Name} has joined the game.", newConn);
@@ -595,29 +590,29 @@ namespace OpenRA.Server
if (!profile.KeyRevoked && CryptoUtil.VerifySignature(parameters, newConn.AuthToken, handshake.AuthSignature))
{
client.Fingerprint = handshake.Fingerprint;
Log.Write("server", "{0} authenticated as {1} (UID {2})", newConn.Socket.RemoteEndPoint,
Log.Write("server", "{0} authenticated as {1} (UID {2})", newConn.EndPoint,
profile.ProfileName, profile.ProfileID);
}
else if (profile.KeyRevoked)
{
profile = null;
Log.Write("server", "{0} failed to authenticate as {1} (key revoked)", newConn.Socket.RemoteEndPoint, handshake.Fingerprint);
Log.Write("server", "{0} failed to authenticate as {1} (key revoked)", newConn.EndPoint, handshake.Fingerprint);
}
else
{
profile = null;
Log.Write("server", "{0} failed to authenticate as {1} (signature verification failed)",
newConn.Socket.RemoteEndPoint, handshake.Fingerprint);
newConn.EndPoint, handshake.Fingerprint);
}
}
else
Log.Write("server", "{0} failed to authenticate as {1} (invalid server response: `{2}` is not `Player`)",
newConn.Socket.RemoteEndPoint, handshake.Fingerprint, yaml.Key);
newConn.EndPoint, handshake.Fingerprint, yaml.Key);
}
catch (Exception ex)
{
Log.Write("server", "{0} failed to authenticate as {1} (exception occurred)",
newConn.Socket.RemoteEndPoint, handshake.Fingerprint);
newConn.EndPoint, handshake.Fingerprint);
Log.Write("server", ex.ToString());
}
@@ -630,16 +625,16 @@ namespace OpenRA.Server
if (notAuthenticated)
{
Log.Write("server", "Rejected connection from {0}; Not authenticated.", newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; Not authenticated.", newConn.EndPoint);
SendOrderTo(newConn, "ServerError", "Server requires players to have an OpenRA forum account");
DropClient(newConn);
}
else if (blacklisted || notWhitelisted)
{
if (blacklisted)
Log.Write("server", "Rejected connection from {0}; In server blacklist.", newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; In server blacklist.", newConn.EndPoint);
else
Log.Write("server", "Rejected connection from {0}; Not in server whitelist.", newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; Not in server whitelist.", newConn.EndPoint);
SendOrderTo(newConn, "ServerError", "You do not have permission to join this server");
DropClient(newConn);
@@ -655,7 +650,7 @@ namespace OpenRA.Server
{
if (Type == ServerType.Dedicated && (Settings.RequireAuthentication || Settings.ProfileIDWhitelist.Any()))
{
Log.Write("server", "Rejected connection from {0}; Not authenticated.", newConn.Socket.RemoteEndPoint);
Log.Write("server", "Rejected connection from {0}; Not authenticated.", newConn.EndPoint);
SendOrderTo(newConn, "ServerError", "Server requires players to have an OpenRA forum account");
DropClient(newConn);
}
@@ -665,7 +660,7 @@ namespace OpenRA.Server
}
catch (Exception ex)
{
Log.Write("server", "Dropping connection {0} because an error occurred:", newConn.Socket.RemoteEndPoint);
Log.Write("server", "Dropping connection {0} because an error occurred:", newConn.EndPoint);
Log.Write("server", ex.ToString());
DropClient(newConn);
}
@@ -873,7 +868,7 @@ namespace OpenRA.Server
else
{
Log.Write("server", "Rejected connection from {0}; Order `{1}` is not a `HandshakeResponse`.",
conn.Socket.RemoteEndPoint, o.OrderString);
conn.EndPoint, o.OrderString);
DropClient(conn);
}

View File

@@ -144,7 +144,7 @@ namespace OpenRA.Mods.Common.Server
}
client.State = state;
Log.Write("server", "Player @{0} is {1}", conn.Socket.RemoteEndPoint, client.State);
Log.Write("server", "Player @{0} is {1}", conn.EndPoint, client.State);
server.SyncLobbyClients();
CheckAutoStart(server);
@@ -759,7 +759,7 @@ namespace OpenRA.Mods.Common.Server
if (sanitizedName == client.Name)
return true;
Log.Write("server", "Player@{0} is now known as {1}.", conn.Socket.RemoteEndPoint, sanitizedName);
Log.Write("server", "Player@{0} is now known as {1}.", conn.EndPoint, sanitizedName);
server.SendMessage($"{client.Name} is now known as {sanitizedName}.");
client.Name = sanitizedName;
server.SyncLobbyClients();