added -ip so you are able to specify which ip to bind the server

This commit is contained in:
Evil Factory
2021-11-08 19:57:13 -03:00
parent 50427390f2
commit 89942fb8f5
5 changed files with 20 additions and 5 deletions
@@ -12,6 +12,7 @@ using System.Reflection;
using System.Threading; using System.Threading;
using System.Xml.Linq; using System.Xml.Linq;
using MoonSharp.Interpreter; using MoonSharp.Interpreter;
using System.Net;
namespace Barotrauma namespace Barotrauma
{ {
@@ -221,6 +222,7 @@ namespace Barotrauma
int maxPlayers = 10; int maxPlayers = 10;
int? ownerKey = null; int? ownerKey = null;
UInt64 steamId = 0; UInt64 steamId = 0;
IPAddress listenIp = IPAddress.Any;
XDocument doc = XMLExtensions.TryLoadXml(ServerSettings.SettingsFile); XDocument doc = XMLExtensions.TryLoadXml(ServerSettings.SettingsFile);
if (doc?.Root == null) if (doc?.Root == null)
@@ -254,6 +256,12 @@ namespace Barotrauma
name = CommandLineArgs[i + 1]; name = CommandLineArgs[i + 1];
i++; i++;
break; break;
case "-ip":
if (IPAddress.TryParse(CommandLineArgs[i + 1], out IPAddress address))
listenIp = address;
else
DebugConsole.ThrowError($"Invalid Ip Address '{CommandLineArgs[i + 1]}'.");
break;
case "-port": case "-port":
int.TryParse(CommandLineArgs[i + 1], out port); int.TryParse(CommandLineArgs[i + 1], out port);
i++; i++;
@@ -302,6 +310,7 @@ namespace Barotrauma
Server = new GameServer( Server = new GameServer(
name, name,
listenIp,
port, port,
queryPort, queryPort,
publiclyVisible, publiclyVisible,
@@ -12,6 +12,7 @@ using System.Linq;
using System.Threading; using System.Threading;
using System.Xml.Linq; using System.Xml.Linq;
using MoonSharp.Interpreter; using MoonSharp.Interpreter;
using System.Net;
namespace Barotrauma.Networking namespace Barotrauma.Networking
{ {
@@ -114,7 +115,7 @@ namespace Barotrauma.Networking
private readonly int? ownerKey; private readonly int? ownerKey;
private readonly UInt64? ownerSteamId; private readonly UInt64? ownerSteamId;
public GameServer(string name, int port, int queryPort = 0, bool isPublic = false, string password = "", bool attemptUPnP = false, int maxPlayers = 10, int? ownKey = null, UInt64? steamId = null) public GameServer(string name, IPAddress listenIp, int port, int queryPort = 0, bool isPublic = false, string password = "", bool attemptUPnP = false, int maxPlayers = 10, int? ownKey = null, UInt64? steamId = null)
{ {
name = name.Replace(":", ""); name = name.Replace(":", "");
name = name.Replace(";", ""); name = name.Replace(";", "");
@@ -127,7 +128,7 @@ namespace Barotrauma.Networking
LastClientListUpdateID = 0; LastClientListUpdateID = 0;
serverSettings = new ServerSettings(this, name, port, queryPort, maxPlayers, isPublic, attemptUPnP); serverSettings = new ServerSettings(this, name, port, queryPort, maxPlayers, isPublic, attemptUPnP, listenIp);
KarmaManager.SelectPreset(serverSettings.KarmaPreset); KarmaManager.SelectPreset(serverSettings.KarmaPreset);
serverSettings.SetPassword(password); serverSettings.SetPassword(password);
@@ -37,7 +37,8 @@ namespace Barotrauma.Networking
AutoExpandMTU = false, AutoExpandMTU = false,
MaximumConnections = NetConfig.MaxPlayers * 2, MaximumConnections = NetConfig.MaxPlayers * 2,
EnableUPnP = serverSettings.EnableUPnP, EnableUPnP = serverSettings.EnableUPnP,
Port = serverSettings.Port Port = serverSettings.Port,
LocalAddress = serverSettings.ListenIPAddress
}; };
netPeerConfiguration.DisableMessageType(NetIncomingMessageType.DebugMessage | netPeerConfiguration.DisableMessageType(NetIncomingMessageType.DebugMessage |
@@ -16,7 +16,8 @@ namespace Barotrauma.Steam
{ {
GamePort = (ushort)server.Port, GamePort = (ushort)server.Port,
QueryPort = isPublic ? (ushort)server.QueryPort : (ushort)0, QueryPort = isPublic ? (ushort)server.QueryPort : (ushort)0,
Mode = isPublic ? Steamworks.InitServerMode.Authentication : Steamworks.InitServerMode.NoAuthentication Mode = isPublic ? Steamworks.InitServerMode.Authentication : Steamworks.InitServerMode.NoAuthentication,
IpAddress = server.ServerSettings.ListenIPAddress
}; };
//options.QueryShareGamePort(); //options.QueryShareGamePort();
@@ -273,7 +273,7 @@ namespace Barotrauma.Networking
partial void InitProjSpecific(); partial void InitProjSpecific();
public ServerSettings(NetworkMember networkMember, string serverName, int port, int queryPort, int maxPlayers, bool isPublic, bool enableUPnP) public ServerSettings(NetworkMember networkMember, string serverName, int port, int queryPort, int maxPlayers, bool isPublic, bool enableUPnP, IPAddress listenIp)
{ {
ServerLog = new ServerLog(serverName); ServerLog = new ServerLog(serverName);
@@ -288,6 +288,7 @@ namespace Barotrauma.Networking
InitProjSpecific(); InitProjSpecific();
ServerName = serverName; ServerName = serverName;
ListenIPAddress = listenIp;
Port = port; Port = port;
QueryPort = queryPort; QueryPort = queryPort;
EnableUPnP = enableUPnP; EnableUPnP = enableUPnP;
@@ -359,6 +360,8 @@ namespace Barotrauma.Networking
public int QueryPort; public int QueryPort;
public IPAddress ListenIPAddress;
public bool EnableUPnP; public bool EnableUPnP;
public ServerLog ServerLog; public ServerLog ServerLog;