From 78caa002540d4fdfa56bed735c5ac483feb7bcfb Mon Sep 17 00:00:00 2001 From: Osiris Team Date: Sun, 14 May 2023 19:48:36 +0200 Subject: [PATCH] 7.2.22 Possible fix for SteamCMD 2FA issue --- pom.xml | 2 +- .../client/console/ThreadUserInput.java | 8 +++++ .../autoplug/client/utils/SteamCMD.java | 32 ++++++++++++++++--- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 1d6f50f3..13b887e7 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.osiris.autoplug.client autoplug-client - 7.2.21 + 7.2.22 jar AutoPlug-Client diff --git a/src/main/java/com/osiris/autoplug/client/console/ThreadUserInput.java b/src/main/java/com/osiris/autoplug/client/console/ThreadUserInput.java index 0e2b99b9..2b611926 100644 --- a/src/main/java/com/osiris/autoplug/client/console/ThreadUserInput.java +++ b/src/main/java/com/osiris/autoplug/client/console/ThreadUserInput.java @@ -18,10 +18,15 @@ import org.jline.reader.LineReaderBuilder; import org.jline.reader.UserInterruptException; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.Consumer; + import static com.osiris.betterthread.Constants.TERMINAL; public class ThreadUserInput extends Thread { + public static CopyOnWriteArrayList> onReadLine = new CopyOnWriteArrayList<>(); + public ThreadUserInput() { setName("AutoPlug-UserInputListenerThread"); } @@ -39,6 +44,9 @@ public void run() { String user_input = null; try { user_input = lineReader.readLine(); + for (Consumer code : onReadLine) { + code.accept(user_input); + } // Send to online console if (Main.CON.CON_CONSOLE_SEND.isAlive()) diff --git a/src/main/java/com/osiris/autoplug/client/utils/SteamCMD.java b/src/main/java/com/osiris/autoplug/client/utils/SteamCMD.java index 12afd4b7..f769e032 100644 --- a/src/main/java/com/osiris/autoplug/client/utils/SteamCMD.java +++ b/src/main/java/com/osiris/autoplug/client/utils/SteamCMD.java @@ -9,6 +9,7 @@ package com.osiris.autoplug.client.utils; import com.osiris.autoplug.client.configs.UpdaterConfig; +import com.osiris.autoplug.client.console.ThreadUserInput; import com.osiris.autoplug.client.tasks.updater.TaskDownload; import com.osiris.autoplug.client.utils.io.AsyncReader; import com.osiris.autoplug.client.utils.tasks.MyBThreadManager; @@ -23,8 +24,12 @@ import java.io.File; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import static com.osiris.jprocesses2.util.OS.isMac; @@ -154,11 +159,28 @@ public boolean installOrUpdateServer(String appId, Consumer onLog, Consu AL.info("Paused task printing, login into Steam timed out (10 seconds)."); AL.info("Steam Guard key seems to be needed (check your email)!"); AL.info("Insert it below and press enter:"); - String steamGuardKey = new Scanner(System.in).nextLine(); - AL.info("Steam Guard key will be provided to SteamCMD."); - terminal.sendCommands(steamGuardKey); + AtomicReference steamGuardKey = new AtomicReference<>(); + Consumer code = steamGuardKey::set; + ThreadUserInput.onReadLine.add(code); + while (steamGuardKey.get() == null) Thread.sleep(100); + String key = steamGuardKey.get(); + AL.info("Steam Guard key " + key + " will be provided to SteamCMD..."); + terminal.sendCommands(key); Thread.sleep(10000); - if (isLoginSuccess.get()) break; + ThreadUserInput.onReadLine.remove(code); + if (isLoginSuccess.get()) { + AL.info("Success! Continuing task printing!"); + try { + new Thread(() -> { + MyBThreadManager.lastCreatedPrinter.get().run(); // Since we cannot start a stopped thread again + }).start(); + } catch (Exception e) { + AL.warn(e); + } + break; + } else { + AL.info("Failed! Please try again."); + } } terminal.sendCommands("force_install_dir \"" + gameInstallDir.getAbsolutePath() + "\"", "app_update " + appId,