コード例 #1
0
        /// <summary>
        /// Main function for Steam Account Switcher. Run on load.
        /// Collects accounts from Steam's loginusers.vdf
        /// Prepares images and VAC/Limited status
        /// Prepares HTML Elements string for insertion into the account switcher GUI.
        /// </summary>
        /// <returns>Whether account loading is successful, or a path reset is needed (invalid dir saved)</returns>
        public static async Task LoadProfiles()
        {
            Globals.DebugWriteLine(@"[Func:Steam\SteamSwitcherFuncs.LoadProfiles] Loading Steam profiles");

            var userAccounts   = GetSteamUsers(SteamSettings.LoginUsersVdf());
            var vacStatusList  = new List <VacStatus>();
            var loadedVacCache = LoadVacInfo(ref vacStatusList);

            // Order
            if (File.Exists("LoginCache\\Steam\\order.json"))
            {
                var savedOrder = JsonConvert.DeserializeObject <List <string> >(await File.ReadAllTextAsync("LoginCache\\Steam\\order.json").ConfigureAwait(false));
                if (savedOrder != null)
                {
                    var index = 0;
                    if (savedOrder is { Count : > 0 })
コード例 #2
0
 // Checks if Steam path set properly, and can load.
 public static bool SteamSettingsValid() => SteamSettings.LoginUsersVdf() != "RESET_PATH";
コード例 #3
0
        public static async Task <string> GiExportAccountList(string platform)
        {
            Globals.DebugWriteLine(@$ "[Func:Pages\General\GeneralInvocableFuncs.GiExportAccountList] platform={platform}");
            platform = BasicPlatforms.PlatformFullName(platform);
            if (!Directory.Exists(Path.Join("LoginCache", platform)))
            {
                _ = ShowToast("error", Lang["Toast_AddAccountsFirst"], Lang["Toast_AddAccountsFirstTitle"], "toastarea");
                return("");
            }

            var s = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator; // Different regions use different separators in csv files.

            List <string> allAccountsTable = new();

            if (platform == "Steam")
            {
                // Add headings and separator for programs like Excel
                allAccountsTable.Add("SEP=,");
                allAccountsTable.Add("Account name:,Community name:,SteamID:,VAC status:,Last login:,Saved profile image:");

                var userAccounts   = SteamSwitcherFuncs.GetSteamUsers(SteamSettings.LoginUsersVdf());
                var vacStatusList  = new List <SteamSwitcherFuncs.VacStatus>();
                var loadedVacCache = SteamSwitcherFuncs.LoadVacInfo(ref vacStatusList);

                foreach (var ua in userAccounts)
                {
                    var vacInfo = "";
                    // Get VAC/Limited info
                    if (loadedVacCache)
                    {
                        foreach (var vsi in vacStatusList.Where(vsi => vsi.SteamId == ua.SteamId))
                        {
                            if (vsi.Vac && vsi.Ltd)
                            {
                                vacInfo += "VAC + Limited";
                            }
                            else
                            {
                                vacInfo += (vsi.Vac ? "VAC" : "") + (vsi.Ltd ? "Limited" : "");
                            }
                            break;
                        }
                    }
                    else
                    {
                        vacInfo += "N/A";
                    }

                    var imagePath = Path.GetFullPath($"{SteamSettings.SteamImagePath + ua.SteamId}.jpg");
                    allAccountsTable.Add(ua.AccName + s +
                                         ua.Name + s +
                                         ua.SteamId + s +
                                         vacInfo + s +
                                         SteamSwitcherFuncs.UnixTimeStampToDateTime(ua.LastLogin) + s +
                                         (File.Exists(imagePath) ? imagePath : "Missing from disk"));
                }
            }
            else if (platform == "BattleNet")
            {
                // Add headings and separator for programs like Excel
                allAccountsTable.Add("SEP=,");
                allAccountsTable.Add("Email:,BattleTag:,Overwatch Support SR:,Overwatch DPS SR:,Overwatch Tank SR:,Saved profile image:");

                await BattleNetSwitcherFuncs.LoadProfiles();

                foreach (var ba in BattleNetSettings.Accounts)
                {
                    var imagePath = Path.GetFullPath($"wwwroot\\img\\profiles\\battlenet\\{ba.Email}.png");
                    allAccountsTable.Add(ba.Email + s +
                                         ba.BTag + s +
                                         (ba.OwSupportSr != 0 ? ba.OwSupportSr : "") + s +
                                         (ba.OwDpsSr != 0 ? ba.OwDpsSr : "") + s +
                                         (ba.OwTankSr != 0 ? ba.OwTankSr : "") + s +
                                         (File.Exists(imagePath) ? imagePath : "Missing from disk"));
                }
            }
            else
            {
                // Platform does not have specific details other than usernames saved.
                allAccountsTable.Add("Account name:");
                foreach (var accDirectory in Directory.GetDirectories(Path.Join("LoginCache", platform)))
                {
                    allAccountsTable.Add(Path.GetFileName(accDirectory));
                }
            }

            var outputFolder = Path.Join("wwwroot", "Exported");

            _ = Directory.CreateDirectory(outputFolder);

            var outputFile = Path.Join(outputFolder, platform + ".csv");
            await File.WriteAllLinesAsync(outputFile, allAccountsTable).ConfigureAwait(false);

            return(Path.Join("Exported", platform + ".csv"));
        }