public void Execute(IConsoleShell shell, string argStr, string[] args) { var wantName = args.Length > 0 ? args[0] : null; var basePath = Path.GetDirectoryName(UserDataDir.GetUserDataDir()) !; var cfgPath = Path.Combine(basePath, "launcher", "launcher_config.json"); var data = JsonSerializer.Deserialize <LauncherConfig>(File.ReadAllText(cfgPath)) !; var login = wantName != null ? data.Logins.FirstOrDefault(p => p.Username == wantName) : data.Logins.FirstOrDefault(); if (login == null) { shell.WriteLine("Unable to find a matching login"); return; } var token = login.Token.Token; var userId = login.UserId; var cfg = IoCManager.Resolve <IAuthManager>(); cfg.Token = token; cfg.UserId = new NetUserId(Guid.Parse(userId)); }
public bool Execute(IDebugConsole console, params string[] args) { var wantName = args.Length > 0 ? args[0] : null; var basePath = Path.GetDirectoryName(UserDataDir.GetUserDataDir()) !; var cfgPath = Path.Combine(basePath, "launcher", "launcher_config.json"); var data = JsonSerializer.Deserialize <LauncherConfig>(File.ReadAllText(cfgPath)) !; var login = wantName != null ? data.Logins.FirstOrDefault(p => p.Username == wantName) : data.Logins.FirstOrDefault(); if (login == null) { console.AddLine("Unable to find a matching login"); return(false); } var token = login.Token.Token; var userId = login.UserId; var cfg = IoCManager.Resolve <IConfigurationManagerInternal>(); cfg.SetSecureCVar(CVars.AuthUserId, userId); cfg.SetSecureCVar(CVars.AuthToken, token); return(false); }
private string GetUserDataDir() { if (_commandLineArgs?.SelfContained == true) { // Self contained mode. Data is stored in a directory called user_data next to Robust.Client.exe. var exeDir = typeof(GameController).Assembly.Location; if (string.IsNullOrEmpty(exeDir)) { throw new Exception("Unable to locate client exe"); } exeDir = Path.GetDirectoryName(exeDir); return(Path.Combine(exeDir ?? throw new InvalidOperationException(), "user_data")); } return(UserDataDir.GetUserDataDir()); }
private static string _getUserDataDir(ICollection <string> commandLineArgs) { if (commandLineArgs.Contains("--self-contained")) { // Self contained mode. Data is stored in a directory called user_data next to Robust.Client.exe. var exeDir = Assembly.GetExecutingAssembly().Location; if (string.IsNullOrEmpty(exeDir)) { throw new Exception("Unable to locate client exe"); } exeDir = Path.GetDirectoryName(exeDir); return(Path.Combine(exeDir ?? throw new InvalidOperationException(), "user_data")); } return(UserDataDir.GetUserDataDir()); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { var wantName = args.Length > 0 ? args[0] : null; var basePath = Path.GetDirectoryName(UserDataDir.GetUserDataDir()) !; var dbPath = Path.Combine(basePath, "launcher", "settings.db"); using var con = new SqliteConnection($"Data Source={dbPath};Mode=ReadOnly"); con.Open(); using var cmd = con.CreateCommand(); cmd.CommandText = "SELECT UserId, UserName, Token FROM Login WHERE Expires > datetime('NOW')"; if (wantName != null) { cmd.CommandText += " AND UserName = @userName"; cmd.Parameters.AddWithValue("@userName", wantName); } cmd.CommandText += " LIMIT 1;"; using var reader = cmd.ExecuteReader(); if (!reader.Read()) { shell.WriteLine("Unable to find a matching login"); return; } var userId = Guid.Parse(reader.GetString(0)); var userName = reader.GetString(1); var token = reader.GetString(2); var cfg = IoCManager.Resolve <IAuthManager>(); cfg.Token = token; cfg.UserId = new NetUserId(userId); shell.WriteLine($"Logged into account {userName}"); }