Clients can be given access to server logs. Closes #366
This commit is contained in:
@@ -7,7 +7,7 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
enum ChatMessageType
|
||||
{
|
||||
Default, Error, Dead, Server, Radio, Private, Console, MessageBox
|
||||
Default, Error, Dead, Server, Radio, Private, Console, MessageBox, ServerLog
|
||||
}
|
||||
|
||||
partial class ChatMessage
|
||||
|
||||
@@ -23,7 +23,9 @@ namespace Barotrauma.Networking
|
||||
[Description("Manage campaign")]
|
||||
ManageCampaign = 32,
|
||||
[Description("Console commands")]
|
||||
ConsoleCommands = 64
|
||||
ConsoleCommands = 64,
|
||||
[Description("Access server log")]
|
||||
ServerLog = 128
|
||||
}
|
||||
|
||||
class PermissionPreset
|
||||
|
||||
@@ -32,9 +32,7 @@ namespace Barotrauma.Networking
|
||||
private RestClient restClient;
|
||||
private bool masterServerResponded;
|
||||
private IRestResponse masterServerResponse;
|
||||
|
||||
private ServerLog log;
|
||||
|
||||
|
||||
private bool initiatedStartGame;
|
||||
private CoroutineHandle startGameCoroutine;
|
||||
|
||||
@@ -57,12 +55,7 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
get { return entityEventManager; }
|
||||
}
|
||||
|
||||
public ServerLog ServerLog
|
||||
{
|
||||
get { return log; }
|
||||
}
|
||||
|
||||
|
||||
public TimeSpan UpdateInterval
|
||||
{
|
||||
get { return updateInterval; }
|
||||
@@ -115,7 +108,7 @@ namespace Barotrauma.Networking
|
||||
|
||||
config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
|
||||
|
||||
log = new ServerLog(name);
|
||||
ServerLog = new ServerLog(name);
|
||||
|
||||
InitProjSpecific();
|
||||
|
||||
@@ -342,9 +335,9 @@ namespace Barotrauma.Networking
|
||||
#if CLIENT
|
||||
if (ShowNetStats) netStats.Update(deltaTime);
|
||||
if (settingsFrame != null) settingsFrame.Update(deltaTime);
|
||||
if (log.LogFrame != null) log.LogFrame.Update(deltaTime);
|
||||
if (ServerLog.LogFrame != null) ServerLog.LogFrame.Update(deltaTime);
|
||||
#endif
|
||||
|
||||
|
||||
if (!started) return;
|
||||
|
||||
base.Update(deltaTime);
|
||||
@@ -1503,7 +1496,7 @@ namespace Barotrauma.Networking
|
||||
GameMain.NetLobbyScreen.LastUpdateID++;
|
||||
}
|
||||
|
||||
if (SaveServerLogs) log.Save();
|
||||
if (SaveServerLogs) ServerLog.Save();
|
||||
|
||||
Character.Controlled = null;
|
||||
|
||||
@@ -1951,7 +1944,7 @@ namespace Barotrauma.Networking
|
||||
msg.Write((byte)transfer.SequenceChannel);
|
||||
server.SendMessage(msg, transfer.Connection, NetDeliveryMethod.ReliableOrdered, transfer.SequenceChannel);
|
||||
}
|
||||
|
||||
|
||||
public void UpdateVoteStatus()
|
||||
{
|
||||
if (server.Connections.Count == 0|| connectedClients.Count == 0) return;
|
||||
@@ -2260,7 +2253,15 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
if (GameMain.Server == null || !GameMain.Server.SaveServerLogs) return;
|
||||
|
||||
GameMain.Server.log.WriteLine(line, messageType);
|
||||
GameMain.Server.ServerLog.WriteLine(line, messageType);
|
||||
|
||||
foreach (Client client in GameMain.Server.ConnectedClients)
|
||||
{
|
||||
if (!client.HasPermission(ClientPermissions.ServerLog)) continue;
|
||||
//use sendername as the message type
|
||||
GameMain.Server.SendChatMessage(
|
||||
ChatMessage.Create(messageType.ToString(), line, ChatMessageType.ServerLog, null), client);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Disconnect()
|
||||
@@ -2281,7 +2282,7 @@ namespace Barotrauma.Networking
|
||||
if (SaveServerLogs)
|
||||
{
|
||||
Log("Shutting down the server...", ServerLog.MessageType.ServerMessage);
|
||||
log.Save();
|
||||
ServerLog.Save();
|
||||
}
|
||||
|
||||
GameAnalyticsManager.AddDesignEvent("GameServer:ShutDown");
|
||||
|
||||
@@ -151,11 +151,11 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
get
|
||||
{
|
||||
return log.LinesPerFile;
|
||||
return ServerLog.LinesPerFile;
|
||||
}
|
||||
set
|
||||
{
|
||||
log.LinesPerFile = value;
|
||||
ServerLog.LinesPerFile = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -122,6 +122,12 @@ namespace Barotrauma.Networking
|
||||
get { return respawnManager; }
|
||||
}
|
||||
|
||||
public ServerLog ServerLog
|
||||
{
|
||||
get;
|
||||
protected set;
|
||||
}
|
||||
|
||||
public NetworkMember()
|
||||
{
|
||||
InitProjSpecific();
|
||||
|
||||
@@ -59,9 +59,7 @@ namespace Barotrauma.Networking
|
||||
private int linesPerFile = 800;
|
||||
|
||||
public const string SavePath = "ServerLogs";
|
||||
|
||||
private string serverName;
|
||||
|
||||
|
||||
private readonly Queue<LogMessage> lines;
|
||||
|
||||
private int unsavedLineCount;
|
||||
@@ -75,10 +73,11 @@ namespace Barotrauma.Networking
|
||||
set { linesPerFile = Math.Max(value, 10); }
|
||||
}
|
||||
|
||||
public string ServerName;
|
||||
|
||||
public ServerLog(string serverName)
|
||||
{
|
||||
this.serverName = serverName;
|
||||
|
||||
ServerName = serverName;
|
||||
lines = new Queue<LogMessage>();
|
||||
}
|
||||
|
||||
@@ -139,7 +138,7 @@ namespace Barotrauma.Networking
|
||||
}
|
||||
}
|
||||
|
||||
string fileName = serverName + "_" + DateTime.Now.ToString("yyyy-MM-dd_HH:mm") + ".txt";
|
||||
string fileName = ServerName + "_" + DateTime.Now.ToString("yyyy-MM-dd_HH:mm") + ".txt";
|
||||
|
||||
var invalidChars = Path.GetInvalidFileNameChars();
|
||||
foreach (char invalidChar in invalidChars)
|
||||
@@ -156,6 +155,7 @@ namespace Barotrauma.Networking
|
||||
catch (Exception e)
|
||||
{
|
||||
DebugConsole.ThrowError("Saving the server log to " + filePath + " failed", e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user