(874dff4ad) Fixed server not saving the whitelist when it's enabled/disabled, causing the setting to revert when relaunching the server.

This commit is contained in:
Joonas Rikkonen
2019-06-15 19:46:47 +03:00
parent 3e1dd274bb
commit 62dd6f0f4e
2 changed files with 37 additions and 43 deletions
@@ -61,6 +61,7 @@ namespace Barotrauma.Networking
localEnabled = box.Selected; localEnabled = box.Selected;
return true; return true;
} }
}; };
@@ -145,16 +146,12 @@ namespace Barotrauma.Networking
{ {
if (obj is WhiteListedPlayer) if (obj is WhiteListedPlayer)
{ {
WhiteListedPlayer wlp = obj as WhiteListedPlayer; if (!(obj is WhiteListedPlayer wlp)) return false;
if (wlp == null) return false;
if (!localRemoved.Contains(wlp.UniqueIdentifier)) localRemoved.Add(wlp.UniqueIdentifier); if (!localRemoved.Contains(wlp.UniqueIdentifier)) localRemoved.Add(wlp.UniqueIdentifier);
} }
else if (obj is LocalAdded) else if (obj is LocalAdded)
{ {
LocalAdded lad = obj as LocalAdded; if (!(obj is LocalAdded lad)) return false;
if (lad == null) return false;
if (localAdded.Contains(lad)) localAdded.Remove(lad); if (localAdded.Contains(lad)) localAdded.Remove(lad);
} }
@@ -25,47 +25,45 @@ namespace Barotrauma.Networking
{ {
partial void InitProjSpecific() partial void InitProjSpecific()
{ {
if (File.Exists(SavePath)) if (!File.Exists(SavePath)) { return; }
string[] lines;
try
{ {
string[] lines; lines = File.ReadAllLines(SavePath);
try }
{ catch (Exception e)
lines = File.ReadAllLines(SavePath); {
} DebugConsole.ThrowError("Failed to open whitelist in " + SavePath, e);
catch (Exception e) return;
{ }
DebugConsole.ThrowError("Failed to open whitelist in " + SavePath, e);
return;
}
foreach (string line in lines) foreach (string line in lines)
{
if (line[0] == '#')
{ {
if (line[0] == '#') string lineval = line.Substring(1, line.Length - 1);
Int32.TryParse(lineval, out int intVal);
if (lineval.ToLower() == "true" || intVal != 0)
{ {
string lineval = line.Substring(1, line.Length - 1); Enabled = true;
int intVal = 0;
Int32.TryParse(lineval, out intVal);
if (lineval.ToLower() == "true" || intVal != 0)
{
Enabled = true;
}
else
{
Enabled = false;
}
} }
else else
{ {
string[] separatedLine = line.Split(','); Enabled = false;
if (separatedLine.Length < 2) continue;
string name = String.Join(",", separatedLine.Take(separatedLine.Length - 1));
string ip = separatedLine.Last();
whitelistedPlayers.Add(new WhiteListedPlayer(name, ip));
} }
} }
} else
{
string[] separatedLine = line.Split(',');
if (separatedLine.Length < 2) continue;
string name = string.Join(",", separatedLine.Take(separatedLine.Length - 1));
string ip = separatedLine.Last();
whitelistedPlayers.Add(new WhiteListedPlayer(name, ip));
}
}
} }
public void Save() public void Save()
@@ -119,9 +117,7 @@ namespace Barotrauma.Networking
private void RemoveFromWhiteList(WhiteListedPlayer wlp) private void RemoveFromWhiteList(WhiteListedPlayer wlp)
{ {
GameServer.Log("Removing " + wlp.Name + " from whitelist", ServerLog.MessageType.ServerMessage); GameServer.Log("Removing " + wlp.Name + " from whitelist", ServerLog.MessageType.ServerMessage);
whitelistedPlayers.Remove(wlp); whitelistedPlayers.Remove(wlp);
Save();
} }
private void AddToWhiteList(string name, string ip) private void AddToWhiteList(string name, string ip)
@@ -129,7 +125,6 @@ namespace Barotrauma.Networking
if (string.IsNullOrWhiteSpace(name)) return; if (string.IsNullOrWhiteSpace(name)) return;
if (whitelistedPlayers.Any(x => x.Name.ToLower() == name.ToLower() && x.IP == ip)) return; if (whitelistedPlayers.Any(x => x.Name.ToLower() == name.ToLower() && x.IP == ip)) return;
whitelistedPlayers.Add(new WhiteListedPlayer(name, ip)); whitelistedPlayers.Add(new WhiteListedPlayer(name, ip));
Save();
} }
public void ServerAdminWrite(NetBuffer outMsg, Client c) public void ServerAdminWrite(NetBuffer outMsg, Client c)
@@ -201,8 +196,10 @@ namespace Barotrauma.Networking
GameServer.Log(c.Name + " added " + name + " to whitelist (" + ip + ")", ServerLog.MessageType.ConsoleUsage); GameServer.Log(c.Name + " added " + name + " to whitelist (" + ip + ")", ServerLog.MessageType.ConsoleUsage);
AddToWhiteList(name, ip); AddToWhiteList(name, ip);
} }
return removeCount > 0 || addCount > 0 || prevEnabled!=enabled; bool changed = removeCount > 0 || addCount > 0 || prevEnabled != enabled;
if (changed) { Save(); }
return changed;
} }
} }
} }