Make it possible to enter login/password on each startup

This commit is contained in:
JustArchi
2015-10-28 23:29:50 +01:00
parent a17682e4e2
commit abcded9287
3 changed files with 46 additions and 11 deletions

View File

@@ -183,9 +183,19 @@ namespace ArchiSteamFarm {
sentryHash = CryptoHelper.SHAHash(sentryFileContent);
}
string steamLogin = SteamLogin;
if (string.IsNullOrEmpty(steamLogin) || steamLogin.Equals("null")) {
steamLogin = Program.GetUserInput(BotName, Program.EUserInputType.Login);
}
string steamPassword = SteamPassword;
if (string.IsNullOrEmpty(steamPassword) || steamPassword.Equals("null")) {
steamPassword = Program.GetUserInput(BotName, Program.EUserInputType.Password);
}
SteamUser.LogOn(new SteamUser.LogOnDetails {
Username = SteamLogin,
Password = SteamPassword,
Username = steamLogin,
Password = steamPassword,
AuthCode = AuthCode,
TwoFactorCode = TwoFactorAuth,
SentryFileHash = sentryHash
@@ -284,10 +294,10 @@ namespace ArchiSteamFarm {
EResult result = callback.Result;
switch (result) {
case EResult.AccountLogonDenied:
AuthCode = Program.GetSteamGuardCode(SteamLogin, false);
AuthCode = Program.GetUserInput(SteamLogin, Program.EUserInputType.SteamGuard);
break;
case EResult.AccountLoginDeniedNeedTwoFactor:
TwoFactorAuth = Program.GetSteamGuardCode(SteamLogin, true);
TwoFactorAuth = Program.GetUserInput(SteamLogin, Program.EUserInputType.TwoFactorAuthentication);
break;
case EResult.OK:
Logging.LogGenericInfo(BotName, "Successfully logged on!");

View File

@@ -29,6 +29,13 @@ using System.Threading;
namespace ArchiSteamFarm {
internal static class Program {
internal enum EUserInputType {
Login,
Password,
SteamGuard,
TwoFactorAuthentication,
}
internal const string ConfigDirectoryPath = "config";
private static readonly HashSet<Bot> Bots = new HashSet<Bot>();
internal static readonly object ConsoleLock = new object();
@@ -38,15 +45,25 @@ namespace ArchiSteamFarm {
Environment.Exit(exitCode);
}
internal static string GetSteamGuardCode(string botLogin, bool twoFactorAuthentication) {
internal static string GetUserInput(string botLogin, EUserInputType userInputType) {
string result;
lock (ConsoleLock) {
if (twoFactorAuthentication) {
Console.Write("<" + botLogin + "> Please enter your 2 factor auth code from your authenticator app: ");
} else {
Console.Write("<" + botLogin + "> Please enter the auth code sent to your email : ");
switch (userInputType) {
case EUserInputType.Login:
Console.Write("<" + botLogin + "> Please enter your login: ");
break;
case EUserInputType.Password:
Console.Write("<" + botLogin + "> Please enter your password: ");
break;
case EUserInputType.SteamGuard:
Console.Write("<" + botLogin + "> Please enter the auth code sent to your email : ");
break;
case EUserInputType.TwoFactorAuthentication:
Console.Write("<" + botLogin + "> Please enter your 2 factor auth code from your authenticator app: ");
break;
}
result = Console.ReadLine();
Console.Clear(); // For security purposes
}
return result;
}

View File

@@ -4,27 +4,35 @@
<!-- Every bot should have it's own unique .xml configuration file, this is example on which you can base on -->
<!-- Master switch to turn account on and off, set to "true" after you're done -->
<!-- TIP: This bot instance won't run unless below switch is set to "true" -->
<Enabled type="bool" value="false"/>
<!-- This is your steam login, the one you use for logging in to steam -->
<!-- TIP: You can use "null" if you wish to enter login on every startup -->
<SteamLogin type="string" value="Foo"/>
<!-- This is your steam password, the one you use for logging in to steam -->
<!-- TIP: You can use "null" if you wish to enter password on every startup -->
<SteamPassword type="string" value="Bar"/>
<!-- This is steam nickname, the one you want to use for bot. Can be anything up to 32 characters -->
<!-- TIP: You can use "null" if you wish to preserve your actual nickname -->
<SteamNickname type="string" value="null"/>
<!-- Get one at https://steamcommunity.com/dev/apikey while logged in as bot, domain doesn't matter. You can also use "null", but that will disable many API functions, e.g. trading -->
<!-- This is your bot's API key, get one at https://steamcommunity.com/dev/apikey while logged in as bot, domain doesn't matter -->
<!-- TIP: You can use "null", but it will disable all API-based functionalities such as trading -->
<SteamApiKey type="string" value="null"/>
<!-- This is steamID of the bot-master - you, in steamID64 format -->
<!-- TIP: You can use "0", but bot won't accept steam cd-keys or trades from anybody" -->
<SteamMasterID type="ulong" value="76561198006963719"/>
<!-- If you want from the bot to join particular chat of given clan, set it here, otherwise leave at 0 -->
<!-- This defines clan of the master, bot will join chatroom of that clan automatically after logging in -->
<!-- TIP: You most likely don't want to change it -->
<SteamMasterClanID type="ulong" value="0"/>
<!-- Comma-separated list of IDs that should not be considered for farming -->
<!-- TIP: You most likely don't want to change it -->
<Blacklist type="HashSet(uint)" value="368020"/>
</configuration>