Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }
Пример #4
0
        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());
        }
Пример #5
0
        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}");
        }