Fix color output on Linux and Mac OS X, log time stamps with packets, allow configuring local end point with command line parameter.

This commit is contained in:
Ray Koopa 2020-07-11 05:12:32 +02:00
parent 4e1f9b17a8
commit db3a49539f
5 changed files with 29 additions and 9 deletions

View File

@ -1,4 +1,5 @@
using System.Net; using System;
using System.Net;
namespace Syroot.Worms.Worms2.GameServer namespace Syroot.Worms.Worms2.GameServer
{ {
@ -9,11 +10,22 @@ namespace Syroot.Worms.Worms2.GameServer
{ {
// ---- METHODS (PRIVATE) -------------------------------------------------------------------------------------- // ---- METHODS (PRIVATE) --------------------------------------------------------------------------------------
private static void Main() private static void Main(string[] args)
{ {
//Proxy.Run(); return; //Proxy.Run(); return;
Server server = new Server(); Server server = new Server();
server.Run(new IPEndPoint(IPAddress.Any, 17000)); server.Run(ParseEndPoint(args.Length > 0 ? args[0] : null));
}
private static IPEndPoint ParseEndPoint(string? s)
{
if (UInt16.TryParse(s, out ushort port))
return new IPEndPoint(IPAddress.Any, port);
else if (IPEndPoint.TryParse(s, out IPEndPoint endPoint))
return endPoint;
else
return new IPEndPoint(IPAddress.Any, 17000);
} }
} }
} }

View File

@ -0,0 +1,8 @@
{
"profiles": {
"Syroot.Worms.Worms2.GameServer": {
"commandName": "Project",
"commandLineArgs": "127.0.0.1:17002"
}
}
}

View File

@ -19,7 +19,7 @@ namespace Syroot.Worms.Worms2.GameServer
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 17000); IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 17000);
TcpListener listener = new TcpListener(localEndPoint); TcpListener listener = new TcpListener(localEndPoint);
listener.Start(); listener.Start();
ColorConsole.WriteLine($"Proxy listening under {localEndPoint}..."); ColorConsole.WriteLine(Color.Orange, $"Proxy listening under {localEndPoint}...");
TcpClient? client; TcpClient? client;
while ((client = listener.AcceptTcpClient()) != null) while ((client = listener.AcceptTcpClient()) != null)

View File

@ -69,9 +69,9 @@ namespace Syroot.Worms.Worms2.GameServer
private static void LogPacket(PacketConnection connection, Packet packet, bool fromClient) private static void LogPacket(PacketConnection connection, Packet packet, bool fromClient)
{ {
if (fromClient) if (fromClient)
ColorConsole.WriteLine(Color.Cyan, $"{connection.RemoteEndPoint} >> {packet}"); ColorConsole.WriteLine(Color.Cyan, $"{DateTime.Now:HH:mm:ss} {connection.RemoteEndPoint} >> {packet}");
else else
ColorConsole.WriteLine(Color.Magenta, $"{connection.RemoteEndPoint} << {packet}"); ColorConsole.WriteLine(Color.Magenta, $"{DateTime.Now:HH:mm:ss} {connection.RemoteEndPoint} << {packet}");
} }
private User? GetUser(PacketConnection connection) private User? GetUser(PacketConnection connection)
@ -93,7 +93,7 @@ namespace Syroot.Worms.Worms2.GameServer
// Start a new listener for new incoming connections. // Start a new listener for new incoming connections.
TcpListener listener = new TcpListener(localEndPoint); TcpListener listener = new TcpListener(localEndPoint);
listener.Start(); listener.Start();
Console.WriteLine($"Server listening under {listener.LocalEndpoint}..."); ColorConsole.WriteLine(Color.Orange, $"Server listening under {listener.LocalEndpoint}...");
// Dispatch each connection into its own thread. // Dispatch each connection into its own thread.
TcpClient? client; TcpClient? client;

View File

@ -3,7 +3,7 @@
<!-- Metadata --> <!-- Metadata -->
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>..\..\..\res\icon.ico</ApplicationIcon> <ApplicationIcon>..\..\..\res\icon.ico</ApplicationIcon>
<AssemblyName>Worms 2 Server</AssemblyName> <AssemblyName>w2server</AssemblyName>
<Authors>Syroot</Authors> <Authors>Syroot</Authors>
<Copyright>(c) Syroot, licensed under MIT</Copyright> <Copyright>(c) Syroot, licensed under MIT</Copyright>
<Description>Worms 2 Game Server</Description> <Description>Worms 2 Game Server</Description>
@ -12,7 +12,7 @@
<!-- References --> <!-- References -->
<ItemGroup> <ItemGroup>
<PackageReference Include="Syroot.ColoredConsole" Version="1.0.0" /> <PackageReference Include="Syroot.ColoredConsole" Version="1.0.1" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" /> <PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" />
<ProjectReference Include="..\..\library\Syroot.Worms\Syroot.Worms.csproj" /> <ProjectReference Include="..\..\library\Syroot.Worms\Syroot.Worms.csproj" />
</ItemGroup> </ItemGroup>