From 54f90c7cdb5758d2cacf9626e99ca108486076b8 Mon Sep 17 00:00:00 2001 From: zontreck Date: Wed, 8 Nov 2023 15:20:40 -0700 Subject: [PATCH] Add a 2fa toggle --- lib/credentials.dart | 14 ++++++++++---- lib/game.dart | 13 ++++++++----- lib/steamcmd.dart | 17 +++++++++++++---- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/lib/credentials.dart b/lib/credentials.dart index 694347f..c59cbb6 100644 --- a/lib/credentials.dart +++ b/lib/credentials.dart @@ -4,15 +4,21 @@ part 'credentials.g.dart'; @HiveType(typeId: 1) class Credentials { - @HiveField(0) + @HiveField(0, defaultValue: "") String username; - @HiveField(1) + @HiveField(1, defaultValue: "") String password; - @HiveField(2) + @HiveField(2, defaultValue: "") String secret; + @HiveField(3, defaultValue: false) + bool has_2fa = false; + Credentials( - {required this.username, required this.password, required this.secret}); + {required this.username, + required this.password, + required this.secret, + required this.has_2fa}); } diff --git a/lib/game.dart b/lib/game.dart index 2031aab..b0aa2f5 100644 --- a/lib/game.dart +++ b/lib/game.dart @@ -13,9 +13,12 @@ Future doDownloadMods(String modsFolder) async { Settings settings = Settings(); // Now, invoke SteamCmd to download the workshop mods. This is an authenticated action, and does require Scmd2fa - var result = await Process.run(settings.getSteamCmd2FA(), - ["--raw", "--secret", settings.inst!.steam_creds!.secret]); - var code = result.stdout as String; + String code = ""; + if (settings.inst!.steam_creds!.has_2fa) { + var result = await Process.run(settings.getSteamCmd2FA(), + ["--raw", "--secret", settings.inst!.steam_creds!.secret]); + code = result.stdout as String; + } // Build download command List manifest = [ @@ -26,7 +29,7 @@ Future doDownloadMods(String modsFolder) async { "+login", settings.inst!.steam_creds!.username, settings.inst!.steam_creds!.password, - code.trim() + if (settings.inst!.steam_creds!.has_2fa) code.trim() ]; for (Mod M in settings.inst!.mods) { manifest.add("+workshop_download_item"); @@ -41,7 +44,7 @@ Future doDownloadMods(String modsFolder) async { //print( // "Running command: ${settings.getSteamCmd()} ${manifest.join(" ")}"); - result = await Process.run(settings.getSteamCmd(), manifest); + var result = await Process.run(settings.getSteamCmd(), manifest); print(result.stdout); } diff --git a/lib/steamcmd.dart b/lib/steamcmd.dart index 38204c5..10a97a7 100644 --- a/lib/steamcmd.dart +++ b/lib/steamcmd.dart @@ -67,7 +67,8 @@ class SteamCMDState extends State { if (Platform.isWindows) { // Download zip file - final path = "${settings.steamcmd_path}${Platform.pathSeparator}windows.zip"; + final path = + "${settings.steamcmd_path}${Platform.pathSeparator}windows.zip"; final reply = await dio.download(windows, path); final bytes = File(path).readAsBytesSync(); @@ -91,7 +92,8 @@ class SteamCMDState extends State { await Process.start("steamcmd.exe", ["+quit"]); } else { // Download tgz file - final path = "${settings.steamcmd_path}${Platform.pathSeparator}linux.tgz"; + final path = + "${settings.steamcmd_path}${Platform.pathSeparator}linux.tgz"; final reply = await dio.download(linux, path); final bytes = File(path).readAsBytesSync(); @@ -175,6 +177,7 @@ class CredentialsPrompt extends StatelessWidget { TextEditingController password = TextEditingController(); TextEditingController secret = TextEditingController(); bool initialInitDone = false; + bool z2fa = false; @override Widget build(BuildContext context) { @@ -268,7 +271,12 @@ class CredentialsPrompt extends StatelessWidget { "2FA Shared Secret Code (Do Not Share With Others!)"), )) ], - ) + ), + SwitchListTile( + value: z2fa, + onChanged: (value) { + z2fa = value; + }) ], )), onWillPop: () async { @@ -277,7 +285,8 @@ class CredentialsPrompt extends StatelessWidget { Credentials( username: username.text, password: password.text, - secret: secret.text)); + secret: secret.text, + has_2fa: z2fa)); return true; }, ));