diff --git a/Program.cs b/Program.cs
index dd84242..5dca1ad 100644
--- a/Program.cs
+++ b/Program.cs
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
+using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
@@ -60,6 +61,10 @@ public static class Program
{
action = "setup";
}
+ else if (args[i] == "trade")
+ {
+ action = "trade";
+ }
else if (args[i] == "encrypt")
{
action = "encrypt";
@@ -102,7 +107,6 @@ public static class Program
return;
}
}
- if (Verbose) Console.WriteLine("maFiles path: {0}", SteamGuardPath);
if (Verbose) Console.WriteLine($"Action: {action}");
if (Verbose) Console.WriteLine($"User: {user}");
@@ -123,6 +127,12 @@ public static class Program
case "setup":
Setup(user);
break;
+ case "trade":
+ Trade(user);
+ break;
+ case "accept-all":
+ AcceptAllTrades(user);
+ break;
default:
Console.WriteLine("error: Unknown action: {0}", action);
return;
@@ -298,125 +308,4 @@ public static class Program
}
return true;
}
-
- static void Setup(string username = "")
- {
- if (Verbose) Console.WriteLine("Opening manifest...");
- Manifest = Manifest.GetManifest(true);
-
- if (string.IsNullOrWhiteSpace(username))
- {
- Console.Write("Username: ");
- username = Console.ReadLine();
- }
- Console.Write("Password: ");
- var password = Console.ReadLine();
-
- UserLogin login = new UserLogin(username, password);
- Console.Write($"Logging in {username}... ");
- LoginResult loginResult = login.DoLogin();
- Console.WriteLine(loginResult);
- if (!login.LoggedIn) return;
-
- AuthenticatorLinker linker = new AuthenticatorLinker(login.Session);
- AuthenticatorLinker.LinkResult linkResult = AuthenticatorLinker.LinkResult.GeneralFailure;
-
- do
- {
- linkResult = linker.AddAuthenticator();
- Console.WriteLine($"Link result: {linkResult}");
- switch (linkResult)
- {
- case AuthenticatorLinker.LinkResult.MustProvidePhoneNumber:
- var phonenumber = "";
- do
- {
- Console.WriteLine("Enter your mobile phone number in the following format: +{cC} phoneNumber. EG, +1 123-456-7890");
- phonenumber = Console.ReadLine();
- phonenumber = FilterPhoneNumber(phonenumber);
- linker.PhoneNumber = phonenumber;
- } while (!PhoneNumberOkay(phonenumber));
- break;
- case AuthenticatorLinker.LinkResult.MustRemovePhoneNumber:
- linker.PhoneNumber = null;
- break;
- case AuthenticatorLinker.LinkResult.AwaitingFinalization:
- break;
- case AuthenticatorLinker.LinkResult.GeneralFailure:
- Console.WriteLine("error: Unable to add your phone number. Steam returned GeneralFailure");
- return;
- case AuthenticatorLinker.LinkResult.AuthenticatorPresent:
- Console.WriteLine("error: Can't link authenticator, remove the previous authenticator.");
- return;
- default:
- Console.WriteLine($"error: Unexpected linker result: {linkResult}");
- return;
- }
- } while (linkResult != AuthenticatorLinker.LinkResult.AwaitingFinalization);
-
- string passKey = null;
- if (Manifest.Entries.Count == 0)
- {
- Console.WriteLine("Looks like we are setting up your first account.");
- passKey = Manifest.PromptSetupPassKey();
- }
- else if (Manifest.Entries.Count > 0 && Manifest.Encrypted)
- {
- passKey = Manifest.PromptForPassKey();
- }
-
- //Save the file immediately; losing this would be bad.
- if (!Manifest.SaveAccount(linker.LinkedAccount, passKey != null, passKey))
- {
- Manifest.RemoveAccount(linker.LinkedAccount);
- Console.WriteLine("Unable to save mobile authenticator file. The mobile authenticator has not been linked.");
- return;
- }
-
- Console.WriteLine($"The Mobile Authenticator has not yet been linked. Before finalizing the authenticator, please write down your revocation code: {linker.LinkedAccount.RevocationCode}");
-
- AuthenticatorLinker.FinalizeResult finalizeResponse = AuthenticatorLinker.FinalizeResult.GeneralFailure;
- do
- {
- Console.Write("Please input the SMS message sent to your phone number: ");
- string smsCode = Console.ReadLine();
-
- finalizeResponse = linker.FinalizeAddAuthenticator(smsCode);
- if (Verbose) Console.WriteLine(finalizeResponse);
-
- switch (finalizeResponse)
- {
- case AuthenticatorLinker.FinalizeResult.BadSMSCode:
- continue;
-
- case AuthenticatorLinker.FinalizeResult.UnableToGenerateCorrectCodes:
- Console.WriteLine(
- "Unable to generate the proper codes to finalize this authenticator. The authenticator should not have been linked.");
- Console.WriteLine(
- $"In the off-chance it was, please write down your revocation code, as this is the last chance to see it: {linker.LinkedAccount.RevocationCode}");
- Manifest.RemoveAccount(linker.LinkedAccount);
- return;
-
- case AuthenticatorLinker.FinalizeResult.GeneralFailure:
- Console.WriteLine("Unable to finalize this authenticator. The authenticator should not have been linked.");
- Console.WriteLine(
- $"In the off-chance it was, please write down your revocation code, as this is the last chance to see it: {linker.LinkedAccount.RevocationCode}");
- Manifest.RemoveAccount(linker.LinkedAccount);
- return;
- }
- } while (finalizeResponse != AuthenticatorLinker.FinalizeResult.Success);
-
- //Linked, finally. Re-save with FullyEnrolled property.
- Manifest.SaveAccount(linker.LinkedAccount, passKey != null, passKey);
- Console.WriteLine($"Mobile authenticator successfully linked. Please actually write down your revocation code: {linker.LinkedAccount.RevocationCode}");
- }
-
- public static string FilterPhoneNumber(string phoneNumber) => phoneNumber.Replace("-", "").Replace("(", "").Replace(")", "");
-
- public static bool PhoneNumberOkay(string phoneNumber)
- {
- if (phoneNumber == null || phoneNumber.Length == 0) return false;
- if (phoneNumber[0] != '+') return false;
- return true;
- }
}
diff --git a/steamguard-cli.csproj b/steamguard-cli.csproj
index b540346..bd94864 100644
--- a/steamguard-cli.csproj
+++ b/steamguard-cli.csproj
@@ -52,6 +52,9 @@
.\build\SteamAuth.dll
+
+ ..\..\..\..\..\usr\lib\mono\4.5\System.dll
+
-
+
\ No newline at end of file