Exemple #1
0
        static void AcceptAllTrades(string user = "", string passkey = "")
        {
            Utils.Verbose("Opening manifest...");
            Manifest = Manifest.GetManifest(true);
            Utils.Verbose("Reading accounts from manifest...");
            if (Manifest.Encrypted)
            {
                if (string.IsNullOrEmpty(passkey))
                {
                    passkey = Manifest.PromptForPassKey();
                }
                SteamGuardAccounts = Manifest.GetAllAccounts(passkey);
            }
            else
            {
                SteamGuardAccounts = Manifest.GetAllAccounts();
            }
            if (SteamGuardAccounts.Length == 0)
            {
                Console.WriteLine("error: No accounts read.");
                return;
            }

            for (int i = 0; i < SteamGuardAccounts.Length; i++)
            {
                SteamGuardAccount account = SteamGuardAccounts[i];
                if ((user != "" && account.AccountName.ToLower() == user.ToLower()) || user == "")
                {
                    Console.WriteLine($"Accepting Confirmations on {account.AccountName}");
                    Utils.Verbose("Refeshing Session...");
                    if (account.RefreshSession())
                    {
                        Utils.Verbose("Session refreshed");
                        Manifest.SaveAccount(account, Manifest.Encrypted);
                    }
                    else
                    {
                        Utils.Verbose("Failed to refresh session, prompting user...");
                        if (!promptRefreshSession(account))
                        {
                            Console.WriteLine("Failed to refresh session, aborting...");
                        }
                    }
                    Utils.Verbose("Fetching Confirmations...");
                    var tradesTask = account.FetchConfirmationsAsync();
                    tradesTask.Wait();
                    Confirmation[] confirmations = tradesTask.Result;
                    Utils.Verbose("Accepting Confirmations...");
                    account.AcceptMultipleConfirmations(confirmations);
                    if (user != "")
                    {
                        break;
                    }
                }
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            string version = System.Reflection.Assembly.GetExecutingAssembly()
                             .GetName()
                             .Version
                             .ToString();

            Console.Title = "Confirmator " + version;

            if (args.Length < 1)
            {
                Console.Error.WriteLine("No file name was given! Press any key to continue...");
                Console.ReadKey();
                return;
            }
            string maFile = args[0];

            if (!File.Exists(maFile))
            {
                Console.Error.WriteLine("File not found! Press any key to continue...");
                Console.ReadKey();
                return;
            }
            byte acceptTargets = ACCEPT_NONE;

            uint delay = IDLE_DELAY_S;

            foreach (var arg in args)
            {
                if (arg.Equals("-market"))
                {
                    acceptTargets |= ACCEPT_MARKET;
                }
                if (arg.Equals("-trade"))
                {
                    acceptTargets |= ACCEPT_TRADES;
                }
                if (arg.Equals("-other"))
                {
                    acceptTargets |= ACCEPT_OTHERS;
                }
                uint.TryParse(arg, out delay);
            }
            if (acceptTargets == ACCEPT_NONE)
            {
                Console.Error.WriteLine("No target args given! Press any key to continue with accepting all confirmations.");
                Console.ReadKey();
                acceptTargets |= ACCEPT_MARKET;
                acceptTargets |= ACCEPT_TRADES;
                acceptTargets |= ACCEPT_OTHERS;
            }
            string            contents     = File.ReadAllText(maFile);
            SteamGuardAccount steamAccount = JsonConvert.DeserializeObject <SteamGuardAccount>(contents);

            Console.WriteLine("Starting account '{0}'. Accepting:{1}.",
                              steamAccount.Session.SteamID.ToString(),
                              (((acceptTargets & ACCEPT_MARKET) > ACCEPT_NONE) ? " market" : "") +
                              (((acceptTargets & ACCEPT_TRADES) > ACCEPT_NONE) ? " trades" : "") +
                              (((acceptTargets & ACCEPT_OTHERS) > ACCEPT_NONE) ? " others" : "")
                              );
            Console.WriteLine("Refreshing session... ");
            steamAccount.RefreshSession();
            Console.Title = String.Format("Confirmator {0} [{1}]", version, steamAccount.Session.SteamID.ToString());
            List <Confirmation> nextToAccept = new List <Confirmation>();
            uint nextDelay = 0;

            while (true)
            {
                if (nextDelay > 0)
                {
                    Console.Write("Please wait... ", intervalFormat(nextDelay));
                    using (var progress = new ProgressBar()) {
                        for (uint i = 0; i < nextDelay; i++)
                        {
                            progress.Report((double)i / (double)nextDelay);
                            progress.setCustomLabel(intervalFormat(nextDelay - i));
                            Thread.Sleep(1000);
                        }
                    }
                    Console.WriteLine("done.");
                }
                nextDelay = delay;

                Confirmation[] confs = null;
                if (nextToAccept.Count == 0)
                {
                    Console.Write("Fetching confirmations... ");
                    try {
                        confs = steamAccount.FetchConfirmations();
                    } catch (Exception e) {
                        if (e is SteamAuth.SteamGuardAccount.WGTokenExpiredException || e is SteamAuth.SteamGuardAccount.WGTokenInvalidException)
                        {
                            Console.WriteLine("failed!");
                            Console.Error.WriteLine(e.Message);
                            Console.Error.WriteLine(e.StackTrace);
                            Console.WriteLine("Refreshing session... ");
                            steamAccount.RefreshSession();
                            nextDelay = Math.Min(ACCEPT_DELAY_S, delay);
                            continue;
                        }
                        throw;
                    }
                    if (confs == null || confs.Length == 0)
                    {
                        Console.WriteLine("Nothing to confirm.");
                        continue;
                    }
                    Console.WriteLine("got {0} confirmation{1}", confs.Length, confs.Length > 1 ? "s" : "");
                }
                else
                {
                    confs = nextToAccept.ToArray <Confirmation>();
                    nextToAccept.Clear();
                }
                List <Confirmation> confirmationsChunk = new List <Confirmation>();
                foreach (var conf in confs)
                {
                    if (confirmationsChunk.Count >= ACCEPT_CHUNK_MAX)
                    {
                        nextToAccept.Add(conf);
                    }
                    else if ((conf.ConfType == Confirmation.ConfirmationType.MarketSellTransaction && (acceptTargets & ACCEPT_MARKET) > ACCEPT_NONE) ||
                             (conf.ConfType == Confirmation.ConfirmationType.Trade && (acceptTargets & ACCEPT_TRADES) > ACCEPT_NONE) ||
                             (conf.ConfType == Confirmation.ConfirmationType.Unknown && (acceptTargets & ACCEPT_OTHERS) > ACCEPT_NONE)
                             )
                    {
                        confirmationsChunk.Add(conf);
                        Console.WriteLine("\t{0}: {1} {2}",
                                          conf.ID,
                                          conf.Description,
                                          conf.ConfType == Confirmation.ConfirmationType.Trade ?
                                          " offerID:" + steamAccount.GetConfirmationTradeOfferID(conf).ToString() : ""
                                          );
                    }
                }
                if (confirmationsChunk.Count == 0)
                {
                    Console.WriteLine("nothing to confirm.");
                    continue;
                }
                Console.Write("Accepting {0} out of {1} confirmation{2}... ",
                              confirmationsChunk.Count,
                              confs.Length, confs.Length > 1?"s":""
                              );
                bool result = steamAccount.AcceptMultipleConfirmations(confirmationsChunk.ToArray());
                Console.WriteLine(result ? "success!" : "failed!");
                if (nextToAccept.Count > 0)
                {
                    nextDelay = Math.Min(ACCEPT_DELAY_S, delay);
                }
            }
        }
Exemple #3
0
        public static void ConfirmMarketTransactionsWorkingProcess(
            SteamGuardAccount guard,
            WorkingProcessDataContext wp)
        {
            while (true)
            {
                try
                {
                    if (wp.CancellationToken.IsCancellationRequested)
                    {
                        wp.AppendLog("2FA confirmation process was force stopped.");
                        return;
                    }

                    wp.AppendLog("Fetching 2FA confirmations..");

                    var confirmations = guard.FetchConfirmations().Where(
                        item => item.ConfType == Confirmation.ConfirmationType.MarketSellTransaction).ToArray();

                    wp.AppendLog($"{confirmations.Length} confirmations found. Accepting confirmations");

                    if (confirmations.Length == 0)
                    {
                        wp.AppendLog("No confirmations found. Nothing to confirm");
                        return;
                    }

                    var confirmationAcceptSuccess = guard.AcceptMultipleConfirmations(confirmations);

                    wp.AppendLog(
                        confirmationAcceptSuccess
                            ? "Confirmations confirm was successful"
                            : "Confirmations confirm was failed");

                    if (confirmationAcceptSuccess)
                    {
                        wp.AppendLog($"{confirmations.Length} confirmations was successfully accepted");
                        wp.AppendLog("Fetching 2FA confirmations to verify they are empty");

                        confirmations = guard.FetchConfirmations().Where(
                            item => item.ConfType == Confirmation.ConfirmationType.MarketSellTransaction).ToArray();

                        if (confirmations.Any())
                        {
                            wp.AppendLog($"{confirmations.Length} confirmations found");
                        }
                        else
                        {
                            wp.AppendLog("All confirmation was successfully confirmed!");
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    wp.AppendLog($"Error on 2FA confirm - {e.Message}");
                }

                wp.AppendLog("Waiting for 10 seconds to restart confirmation process");
                Thread.Sleep(TimeSpan.FromSeconds(10));
            }
        }