From 85a658b987fe125ea44b6949384d8f64fff88cac Mon Sep 17 00:00:00 2001 From: RaidMax Date: Thu, 21 Jan 2016 11:41:00 -0600 Subject: [PATCH] -no more server duplicates on webfront when the server crashes ( was intentional ) -warn reasons no longer show player's name --- Admin/Command.cs | 2 +- Admin/Manager.cs | 2 +- Admin/Server.cs | 25 +++++++++++++++++-------- Admin/version.txt | 4 +++- SharedLibrary/Server.cs | 2 ++ Webfront Plugin/Framework.cs | 10 +++++++++- Webfront Plugin/Main.cs | 2 ++ 7 files changed, 35 insertions(+), 12 deletions(-) diff --git a/Admin/Command.cs b/Admin/Command.cs index baf49007..bc587150 100644 --- a/Admin/Command.cs +++ b/Admin/Command.cs @@ -34,7 +34,7 @@ namespace IW4MAdmin E.Origin.Tell("You cannot warn " + E.Target.Name); else { - E.Target.Warn(E.Data, E.Origin); + E.Target.Warn(E.Target.lastOffense, E.Origin); } } } diff --git a/Admin/Manager.cs b/Admin/Manager.cs index 3bb62a38..ae2dbf5c 100644 --- a/Admin/Manager.cs +++ b/Admin/Manager.cs @@ -74,7 +74,7 @@ namespace IW4MAdmin if (!S.isRunning) Utilities.shutdownInterface(S.pID()); - mainLog.Write("Server with PID #" + S.pID() + " can no longer be monitored.", Log.Level.Debug); + mainLog.Write("Server with PID #" + S.pID() + " can no longer be monitored.", Log.Level.Production); activePIDs.Remove(S.pID()); defunctServers.Add(S); } diff --git a/Admin/Server.cs b/Admin/Server.cs index dae20646..e1ffb275 100644 --- a/Admin/Server.cs +++ b/Admin/Server.cs @@ -419,6 +419,11 @@ namespace IW4MAdmin } } + public override void Stop() + { + this.isRunning = false; + } + //Starts the monitoring process override public void Monitor() { @@ -568,6 +573,7 @@ namespace IW4MAdmin } events.Enqueue(new Event(Event.GType.Stop, "Server monitoring stopped", null, null, this)); + SharedLibrary.Utilities.Wait(3); isRunning = false; eventQueueThread.Join(); } @@ -840,15 +846,18 @@ namespace IW4MAdmin public override void Warn(String Reason, Player Target, Player Origin) { - Penalty newPenalty = new Penalty(Penalty.Type.Warning, SharedLibrary.Utilities.stripColors(Reason), Target.npID, Origin.npID, DateTime.Now, Target.IP); - clientDB.addBan(newPenalty); - foreach (SharedLibrary.Server S in Program.getServers()) // make sure bans show up on the webfront - S.Bans = S.clientDB.getBans(); - Target.Warnings++; - String Message = String.Format("^1WARNING ^7[^3{0}^7]: ^3{1}^7, {2}", Target.Warnings, Target.Name, Target.lastOffense); - Broadcast(Message); if (Target.Warnings >= 4) - Target.Kick("You were kicked for too many warnings!", Origin); + Target.Kick("Too many warnings!", Origin); + else + { + Penalty newPenalty = new Penalty(Penalty.Type.Warning, SharedLibrary.Utilities.stripColors(Reason), Target.npID, Origin.npID, DateTime.Now, Target.IP); + clientDB.addBan(newPenalty); + foreach (SharedLibrary.Server S in Program.getServers()) // make sure bans show up on the webfront + S.Bans = S.clientDB.getBans(); + Target.Warnings++; + String Message = String.Format("^1WARNING ^7[^3{0}^7]: ^3{1}^7, {2}", Target.Warnings, Target.Name, Target.lastOffense); + Broadcast(Message); + } } public override void Kick(String Reason, Player Target, Player Origin) diff --git a/Admin/version.txt b/Admin/version.txt index 4cb82804..1b2e1f7d 100644 --- a/Admin/version.txt +++ b/Admin/version.txt @@ -6,7 +6,9 @@ CHANGELOG: -readded pubbans page http://127.0.0.1:1624/pubbans -updated RepZ profile link -added trusted group ( will need a new database or manual update ) --reports capture screenshot +-reports capture screenshot (maybe) +-no more server duplicates on webfront when the server crashes ( was intentional ) +-warn reasons no longer show player's name VERSION 1.0 CHANGELOG: diff --git a/SharedLibrary/Server.cs b/SharedLibrary/Server.cs index ed107551..86a03098 100644 --- a/SharedLibrary/Server.cs +++ b/SharedLibrary/Server.cs @@ -122,6 +122,8 @@ namespace SharedLibrary return clientDB.getPlayers(databaseIDs); } + + abstract public void Stop(); /// /// Add a player to the server's player list diff --git a/Webfront Plugin/Framework.cs b/Webfront Plugin/Framework.cs index bea23b4e..c2be811b 100644 --- a/Webfront Plugin/Framework.cs +++ b/Webfront Plugin/Framework.cs @@ -24,8 +24,16 @@ namespace Webfront_Plugin public void removeServer(Server S) { - if (activeServers.Contains(S)) + if (S != null && activeServers.Contains(S)) + { + S.Stop(); activeServers.Remove(S); + } + } + + public List getServers() + { + return activeServers; } private String processTemplate(String Input, String Param) diff --git a/Webfront Plugin/Main.cs b/Webfront Plugin/Main.cs index 39badb2e..d87ede3e 100644 --- a/Webfront Plugin/Main.cs +++ b/Webfront Plugin/Main.cs @@ -1,6 +1,7 @@ using System; using SharedLibrary; using System.Threading; +using System.Collections.Generic; namespace Webfront_Plugin { @@ -12,6 +13,7 @@ namespace Webfront_Plugin { if (E.Type == Event.GType.Start) { + Manager.webFront.removeServer(Manager.webFront.getServers().Find(x => x.getPort() == E.Owner.getPort())); Manager.webFront.addServer(E.Owner); E.Owner.Log.Write("Webfront now listening", Log.Level.Production); }