From 2116a1a93a744b95ada72a78d08d40ca27a7b10d Mon Sep 17 00:00:00 2001 From: juanjp600 Date: Sat, 3 Sep 2016 18:15:36 -0300 Subject: [PATCH] Fixed rangeban --- Subsurface/Barotrauma.csproj | 1 + Subsurface/Source/Networking/GameServer.cs | 14 ++--- .../Source/Networking/GameServerLogin.cs | 11 ++-- Subsurface/Source/Screens/NetLobbyScreen.cs | 54 +++++++++---------- 4 files changed, 41 insertions(+), 39 deletions(-) diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index 9909da4cb..471a8c0ef 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -157,6 +157,7 @@ + diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 7e28934e0..d8c0369ae 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -774,7 +774,7 @@ namespace Barotrauma.Networking yield return CoroutineStatus.Success; } - public override void KickPlayer(string playerName, bool ban) + public override void KickPlayer(string playerName, bool ban, bool range=false) { playerName = playerName.ToLowerInvariant(); @@ -782,10 +782,10 @@ namespace Barotrauma.Networking c.name.ToLowerInvariant() == playerName || (c.Character != null && c.Character.Name.ToLowerInvariant() == playerName)); - KickClient(client, ban); + KickClient(client, ban, range); } - public void KickClient(NetConnection conn, bool ban = false) + public void KickClient(NetConnection conn, bool ban = false, bool range = false) { Client client = connectedClients.Find(c => c.Connection == conn); if (client == null) @@ -801,18 +801,20 @@ namespace Barotrauma.Networking } else { - KickClient(client, ban); + KickClient(client, ban, range); } } - public void KickClient(Client client, bool ban = false) + public void KickClient(Client client, bool ban = false, bool range = false) { if (client == null) return; if (ban) { DisconnectClient(client, client.name + " has been banned from the server", "You have been banned from the server"); - banList.BanPlayer(client.name, client.Connection.RemoteEndPoint.Address.ToString()); + string ip = client.Connection.RemoteEndPoint.Address.ToString(); + if (range) { ip = banList.ToRange(ip); } + banList.BanPlayer(client.name, ip); } else { diff --git a/Subsurface/Source/Networking/GameServerLogin.cs b/Subsurface/Source/Networking/GameServerLogin.cs index f50ca2198..9cd42c99a 100644 --- a/Subsurface/Source/Networking/GameServerLogin.cs +++ b/Subsurface/Source/Networking/GameServerLogin.cs @@ -156,14 +156,13 @@ namespace Barotrauma.Networking unauthenticatedClients.Remove(unauthClient); unauthClient = null; return; - } - -#endif - if (!whitelist.IsWhiteListed(name, inc.SenderConnection.RemoteEndPoint.Address.ToString())) - { + } + + if (!whitelist.IsWhiteListed(name, inc.SenderConnection.RemoteEndPoint.Address.ToString())) + { inc.SenderConnection.Disconnect("You're not in this server's whitelist."); DebugConsole.NewMessage(name + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (not in whitelist)", Color.Red); - return; + return; } if (!Client.IsValidName(name)) { diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs index d90197890..a7d87de8a 100644 --- a/Subsurface/Source/Screens/NetLobbyScreen.cs +++ b/Subsurface/Source/Screens/NetLobbyScreen.cs @@ -55,19 +55,19 @@ namespace Barotrauma const float NetworkUpdateInterval = 1.0f; private float networkUpdateTimer; private UInt32 lastUpdateID; - public UInt32 LastUpdateID - { - get { if (GameMain.Server != null && lastUpdateID < 1) lastUpdateID++; return lastUpdateID; } - set { if (GameMain.Server != null) return; lastUpdateID = value; } + public UInt32 LastUpdateID + { + get { if (GameMain.Server != null && lastUpdateID < 1) lastUpdateID++; return lastUpdateID; } + set { if (GameMain.Server != null) return; lastUpdateID = value; } } private Sprite backgroundSprite; private GUITextBox serverMessage; - public string ServerMessage - { - get { return serverMessage.Text; } - set { if (GameMain.Server != null) return; serverMessage.Text = value; } + public string ServerMessage + { + get { return serverMessage.Text; } + set { if (GameMain.Server != null) return; serverMessage.Text = value; } } public GUIListBox SubList @@ -413,10 +413,10 @@ namespace Barotrauma GUIButton settingsButton = new GUIButton(new Rectangle(-100, 0, 80, 30), "Settings", Alignment.BottomRight, GUI.Style, infoFrame); settingsButton.OnClicked = GameMain.Server.ToggleSettingsFrame; - settingsButton.UserData = "settingsButton"; - - GUIButton whitelistButton = new GUIButton(new Rectangle(-200, 0, 80, 30), "Whitelist", Alignment.BottomRight, GUI.Style, infoFrame); - whitelistButton.OnClicked = GameMain.Server.ToggleWhiteListFrame; + settingsButton.UserData = "settingsButton"; + + GUIButton whitelistButton = new GUIButton(new Rectangle(-200, 0, 80, 30), "Whitelist", Alignment.BottomRight, GUI.Style, infoFrame); + whitelistButton.OnClicked = GameMain.Server.ToggleWhiteListFrame; whitelistButton.UserData = "whitelistButton"; if (subList.Selected == null) subList.Select(Math.Max(0, prevSelectedSub)); @@ -573,10 +573,10 @@ namespace Barotrauma { if (GameMain.Server == null) return false; - GameMain.Server.AutoRestart = tickBox.Selected; - - lastUpdateID++; - + GameMain.Server.AutoRestart = tickBox.Selected; + + lastUpdateID++; + return true; } @@ -615,8 +615,8 @@ namespace Barotrauma if (index < 0) index = 2; if (index > 2) index = 0; - SetTraitorsEnabled((YesNoMaybe)index); - + SetTraitorsEnabled((YesNoMaybe)index); + lastUpdateID++; return true; @@ -912,8 +912,8 @@ namespace Barotrauma else if (GameMain.Client != null && GameMain.Client.HasPermission(ClientPermissions.Ban)) { GameMain.Client.KickPlayer(userData.ToString(), true); - } - + } + return false; } @@ -928,8 +928,8 @@ namespace Barotrauma else if (GameMain.Client != null && GameMain.Client.HasPermission(ClientPermissions.Ban)) { GameMain.Client.KickPlayer(userData.ToString(), true, true); - } - + } + return false; } @@ -1084,11 +1084,11 @@ namespace Barotrauma if (!string.IsNullOrWhiteSpace(seed)) { LevelSeed = seed; - } - - //textBox.Text = LevelSeed; - //textBox.Selected = false; - + } + + //textBox.Text = LevelSeed; + //textBox.Selected = false; + lastUpdateID++; return true;