Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions LineHandlers/AbstractLineHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public interface ILineHandler

bool HandleLine(string line);

void LogColor( string color );
void LogOutputColor( string color );
}


Expand All @@ -19,9 +19,9 @@ public abstract class AbstractLineHandler: ILineHandler
protected string Pattern { get; }
protected Regex regex;
public List<IAction> Actions = new List<IAction>();
protected bool LogOutput { get; set; } = true;
protected string LogColor = "37m"; // Default to white
public string COLOR_PREFIX => $"\u001b[{LogColor}";
public bool LogOutput { get; set; } = true;
public string LogOutputColor { get; set; } = "37m"; // Default to white
public string COLOR_PREFIX => $"\u001b[{LogOutputColor}";
public static readonly string COLOR_RESET = "\u001b[0m";
public static Logger logger = LogManager.GetCurrentClassLogger();

Expand All @@ -30,8 +30,6 @@ protected AbstractLineHandler(string matchPattern)
{
Pattern = matchPattern;
regex = new Regex(Pattern);
logger.Info($"Initialized Regular Expression: {Pattern}");

}

public abstract bool HandleLine(string line);
Expand All @@ -49,9 +47,9 @@ protected void ExecuteActions()
}
}

void ILineHandler.LogColor(string color)
void ILineHandler.LogOutputColor(string color)
{
LogColor = color;
LogOutputColor = color;
}
}

Expand Down
1 change: 1 addition & 0 deletions LineHandlers/AvatarChangeHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class AvatarChangeHandler : AbstractLineHandler

public AvatarChangeHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** AvatarChange Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand Down
1 change: 1 addition & 0 deletions LineHandlers/AvatarUnpackHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class AvatarUnpackHandler : AbstractLineHandler

public AvatarUnpackHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** AvatarUnpack Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand Down
1 change: 0 additions & 1 deletion LineHandlers/LoggingLineHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ public override bool HandleLine(string line)
if( LogOutput )
{
logger.Info($"{COLOR_PREFIX}{line}{COLOR_RESET}");
//Console.WriteLine(line);
}
return true;
}
Expand Down
5 changes: 3 additions & 2 deletions LineHandlers/OnPlayerJoinHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class OnPlayerJoinHandler : AbstractLineHandler

public OnPlayerJoinHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** OnPlayer Join/Leave Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand All @@ -31,11 +32,11 @@ public override bool HandleLine(string line)

if( action.Equals("Joined") )
{
PlayerManager.PlayerJoined(userId, userName);
PlayerManager.PlayerJoined(userId, userName, this );
}
else if( action.Equals("Left") )
{
PlayerManager.PlayerLeft(userName);
PlayerManager.PlayerLeft(userName, this);
}

return true;
Expand Down
2 changes: 1 addition & 1 deletion LineHandlers/OnPlayerNetworkHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class OnPlayerNetworkHandler : AbstractLineHandler

public OnPlayerNetworkHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** OnPlayer Network ID Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand All @@ -28,7 +29,6 @@ public override bool HandleLine(string line)
if( LogOutput )
{
logger.Info($"{COLOR_PREFIX}Network_ID : {userName} ({networkId}){COLOR_RESET}");
//Console.WriteLine($"{timestamp} - Network_ID : {userName} ({networkId})");
}
ExecuteActions();

Expand Down
5 changes: 4 additions & 1 deletion LineHandlers/PenNetworkIdHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public class PenNetworkHandler : AbstractLineHandler

public PenNetworkHandler(string matchPattern) : base(matchPattern)
{

logger.Info($"** Pen Network Id Handler: Regular Expression: {Pattern}");

using (FileStream fs = new FileStream("./pen-network-id.csv", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
{
Expand All @@ -34,7 +37,7 @@ public PenNetworkHandler(string matchPattern) : base(matchPattern)
int networkId = int.Parse(parts[0]);
string penColor = parts[1];
penNetworkMap[networkId] = penColor;
logger.Debug($"Mapped Pen Color '{penColor}' to Network ID {networkId}");
logger.Debug($"Mapped Pen Color '{penColor}' to Network ID: {networkId}");
}
}
}
Expand Down
1 change: 1 addition & 0 deletions LineHandlers/PrintHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class PrintHandler : AbstractLineHandler

public PrintHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** Print Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand Down
3 changes: 2 additions & 1 deletion LineHandlers/QuitHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class QuitHandler : AbstractLineHandler

public QuitHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** VRC Quit Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand All @@ -28,7 +29,7 @@ public override bool HandleLine(string line)
logger.Info($"{COLOR_PREFIX}Application Stop : {totalTime} seconds{COLOR_RESET}");
}

PlayerManager.ClearAllPlayers();
PlayerManager.ClearAllPlayers(this);

ExecuteActions();
return true;
Expand Down
1 change: 1 addition & 0 deletions LineHandlers/StickerHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class StickerHandler : AbstractLineHandler

public StickerHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** Sticker Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand Down
1 change: 1 addition & 0 deletions LineHandlers/VTKHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class VTKHandler : AbstractLineHandler

public VTKHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** Vote to Kick Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand Down
1 change: 1 addition & 0 deletions LineHandlers/WarnKickHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class WarnKickHandler : AbstractLineHandler

public WarnKickHandler(string matchPattern) : base(matchPattern)
{
logger.Info($"** Moderation Warn/Kick Handler: Regular Expression: {Pattern}");
}

public override bool HandleLine(string line)
Expand Down
37 changes: 27 additions & 10 deletions PlayerManagement/PlayerManagement.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using NLog;
using Tailgrab.LineHandler;

namespace Tailgrab.PlayerManagement
{
Expand Down Expand Up @@ -58,32 +59,41 @@ public static class PlayerManager
public static readonly string COLOR_RESET = "\u001b[0m";
public static Logger logger = LogManager.GetCurrentClassLogger();

public static void PlayerJoined(string userId, string displayName)
public static void PlayerJoined(string userId, string displayName, AbstractLineHandler handler)
{
if (!playersByUserId.ContainsKey(userId))
{
Player newPlayer = new Player(userId, displayName);
playersByUserId[userId] = newPlayer;
playersByDisplayName[displayName] = newPlayer;
logger.Info($"{COLOR_PREFIX_GREEN}Player Joined: {displayName} (ID: {userId}){COLOR_RESET}");
if( handler.LogOutput )
{
logger.Info($"{COLOR_PREFIX_GREEN}Player Joined: {displayName} (ID: {userId}){COLOR_RESET}");
}

if( avatarByDisplayName.TryGetValue(displayName, out string? avatarName))
{
AddPlayerEventByDisplayName(displayName, PlayerEvent.EventType.AvatarChange, $"Joined with Avatar: {avatarName}");
logger.Info($"{COLOR_PREFIX_GREEN}\tAvatar on Join: {avatarName}{COLOR_RESET}");
if( handler.LogOutput )
{
logger.Info($"{COLOR_PREFIX_GREEN}\tAvatar on Join: {avatarName}{COLOR_RESET}");
}
}
}
}

public static void PlayerLeft(string displayName)
public static void PlayerLeft(string displayName, AbstractLineHandler handler )
{
if (playersByDisplayName.TryGetValue(displayName, out Player? player))
{
player.InstanceEndTime = DateTime.Now;
playersByDisplayName.Remove(displayName);
playersByNetworkId.Remove(player.NetworkId);
playersByUserId.Remove(player.UserId);
PrintPlayerInfo(player);
if( handler.LogOutput )
{
PrintPlayerInfo(player);
}
}
}

Expand Down Expand Up @@ -121,12 +131,16 @@ public static IEnumerable<Player> GetAllPlayers()
return playersByUserId.Values;
}

public static void ClearAllPlayers()
public static void ClearAllPlayers(AbstractLineHandler handler)
{

foreach( var player in playersByUserId.Values )
{
player.InstanceEndTime = DateTime.Now;
PrintPlayerInfo(player);
if( handler.LogOutput )
{
PrintPlayerInfo(player);
}
}

playersByNetworkId.Clear();
Expand All @@ -139,11 +153,14 @@ public static int GetPlayerCount()
return playersByUserId.Count;
}

public static void LogAllPlayers()
public static void LogAllPlayers(AbstractLineHandler handler)
{
foreach( var player in playersByUserId.Values )
if( handler.LogOutput )
{
PrintPlayerInfo(player);
foreach( var player in playersByUserId.Values )
{
PrintPlayerInfo(player);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ public static async Task Main(string[] args)
string filePath = VRChatAppDataPath + Path.DirectorySeparatorChar;
if (args.Length == 0)
{
logger.Warn("No path argument provided, defaulting to VRChat log directory: {filePath}");
logger.Warn($"No path argument provided, defaulting to VRChat log directory: {filePath}");
}
else
{
Expand Down
20 changes: 10 additions & 10 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[Behaviour\\]\\WSwitching\\W([\\S\\W]+)\\Wto\\Wavatar\\W([\\S\\W]+)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -15,7 +15,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[AssetBundleDownloadManager\\]\\W\\[\\d+\\] Unpacking Avatar \\(([\\S\\W]+) by ([\\S\\W]+)\\)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -25,7 +25,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[Behaviour\\]\\WOnPlayer([\\d\\w]+)\\W([\\d\\w\\W]+)\\W\\((usr_[\\d\\w\\W]+)\\)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -35,7 +35,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[AP\\]\\WPlayer\\W\\W([\\d\\w\\W]+)\\W joined with ID ([\\d]+)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -45,7 +45,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[NetworkProcessing\\] Received ownership transfer of ([\\d]+) from ([\\d]+) to ([\\d]+)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -55,7 +55,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[API\\]\\WRequesting\\WGet\\Wprints/(prnt_[\\d\\w\\W]+)\\W\\{\\{\\}\\}",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -65,7 +65,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W(?:[\\[Always\\]\\W]*)\\[StickersManager\\]\\WUser\\W(usr_[\\d\\w\\W]+)\\W\\(([\\d\\w\\W]+)\\)\\Wspawned\\Wsticker\\W(file_[\\d\\w\\W]+)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -75,7 +75,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[ModerationManager\\] A vote kick has been initiated against ([\\S\\W]+), do you agree",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
{
Expand All @@ -101,7 +101,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\W\\[ModerationManager\\]\\W([\\S\\W]+)\\Whas\\Wbeen\\W(warned|kicked)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand All @@ -111,7 +111,7 @@
"enabled": true,
"patternTypeValue": "Default",
"pattern": "([\\d]{4}.[\\d]{2}.[\\d]{2}\\W[\\d]{2}:[\\d]{2}:[\\d]{2})\\W(Log[\\W]{8}|Debug[\\W]{6})-\\W\\WVRCApplication: HandleApplicationQuit at ([\\d\\W]+)",
"logOutput": false,
"logOutput": true,
"logOutputColor": "Default",
"actions": [
]
Expand Down
Loading
Loading