using ASodium; using Newtonsoft.Json; using nksrv.LobbyServer; using Swan.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace nksrv.Utils { public class AccessToken { public string Token; public long ExpirationTime; public ulong UserID; } public class User { // User info public string Username = ""; public string Password = ""; public string PlayerName = ""; public ulong ID; public long RegisterTime; public int LastStageCleared; // Game data public List CompletedScenarios = new List(); } public class CoreInfo { public List Users = new List(); public List LauncherAccessTokens = new List(); public Dictionary GameClientTokens = new Dictionary(); } internal class JsonDb { public static CoreInfo Instance { get; internal set; } public static byte[] ServerPrivateKey = Convert.FromBase64String("FSUY8Ohd942n5LWAfxn6slK3YGwc8OqmyJoJup9nNos="); public static byte[] ServerPublicKey = Convert.FromBase64String("04hFDd1e/BOEF2h4b0MdkX2h6W5REeqyW+0r9+eSeh0="); static JsonDb() { if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "/db.json")) { Logger.Warn("users: warning: configuration not found, writing default data"); Instance = new CoreInfo(); Save(); } Logger.Info("Loaded db"); var j = JsonConvert.DeserializeObject(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "/db.json")); if (j != null) { Instance = j; Save(); } else { throw new Exception("Failed to read configuration json file"); } } public static User? GetUser(ulong id) { return Instance.Users.Where(x => x.ID == id).FirstOrDefault(); } public static void Save() { if (Instance != null) { File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "/db.json", JsonConvert.SerializeObject(Instance, Formatting.Indented)); } } } }