diff --git a/AutoTrackR2/WebHandler.cs b/AutoTrackR2/WebHandler.cs index 1532255..e53e809 100644 --- a/AutoTrackR2/WebHandler.cs +++ b/AutoTrackR2/WebHandler.cs @@ -5,6 +5,7 @@ using System.Text.Json; using System.Text.RegularExpressions; using AutoTrackR2.LogEventHandlers; using System.Globalization; +using System.Security.Cryptography; namespace AutoTrackR2; @@ -24,6 +25,27 @@ public static class WebHandler public string? trackr_version { get; set; } public string? location { get; set; } public long time { get; set; } + public string hash { get; set; } = string.Empty; + } + + private static string GenerateKillHash(string victimName, long timestamp) + { + // Combine victim name and timestamp + string combined = $"{victimName}_{timestamp}"; + + // Create SHA256 hash + using (SHA256 sha256 = SHA256.Create()) + { + byte[] bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(combined)); + + // Convert byte array to hex string + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < bytes.Length; i++) + { + builder.Append(bytes[i].ToString("x2")); + } + return builder.ToString(); + } } public static async Task<PlayerData?> GetPlayerData(string enemyPilot) @@ -82,6 +104,7 @@ public static class WebHandler public static async Task SubmitKill(KillData killData) { + var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); var apiKillData = new APIKillData { victim_ship = killData.EnemyShip, @@ -95,7 +118,8 @@ public static class WebHandler game_version = killData.GameVersion, trackr_version = killData.TrackRver, location = killData.Location, - time = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + time = timestamp, + hash = GenerateKillHash(killData.EnemyPilot!, timestamp) }; if (string.IsNullOrEmpty(apiKillData.rsi))