From 5219fc89583c640ff2b5c7f320306a65c140d4e7 Mon Sep 17 00:00:00 2001 From: Archi Date: Mon, 30 Oct 2023 22:41:45 +0100 Subject: [PATCH] Add additional bulletproofing --- ArchiSteamFarm/Steam/Bot.cs | 43 +++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/ArchiSteamFarm/Steam/Bot.cs b/ArchiSteamFarm/Steam/Bot.cs index 6da0011a8..e3498b606 100644 --- a/ArchiSteamFarm/Steam/Bot.cs +++ b/ArchiSteamFarm/Steam/Bot.cs @@ -1586,7 +1586,7 @@ public sealed class Bot : IAsyncDisposable, IDisposable { return false; } - UpdateTokens(response.AccessToken, !string.IsNullOrEmpty(response.RefreshToken) ? response.RefreshToken : RefreshToken!); + UpdateTokens(response.AccessToken, response.RefreshToken); if (await ArchiWebHandler.Init(SteamID, SteamClient.Universe, response.AccessToken, SteamParentalActive ? BotConfig.SteamParentalCode : null).ConfigureAwait(false)) { InitRefreshTokensTimer(AccessTokenValidUntil ?? now.AddHours(18)); @@ -2674,6 +2674,26 @@ public sealed class Bot : IAsyncDisposable, IDisposable { BotDatabase.SteamGuardData = pollResult.NewGuardData; } + if (string.IsNullOrEmpty(pollResult.AccessToken)) { + // The fuck is this? + ArchiLogger.LogNullError(nameof(pollResult.AccessToken)); + + ReconnectOnUserInitiated = true; + SteamClient.Disconnect(); + + return; + } + + if (string.IsNullOrEmpty(pollResult.RefreshToken)) { + // The fuck is that? + ArchiLogger.LogNullError(nameof(pollResult.RefreshToken)); + + ReconnectOnUserInitiated = true; + SteamClient.Disconnect(); + + return; + } + UpdateTokens(pollResult.AccessToken, pollResult.RefreshToken); } @@ -3760,25 +3780,30 @@ public sealed class Bot : IAsyncDisposable, IDisposable { RefreshTokensTimer = null; } - private void UpdateTokens(string accessToken, string refreshToken) { + private void UpdateTokens(string accessToken, string? refreshToken = null) { if (string.IsNullOrEmpty(accessToken)) { throw new ArgumentNullException(nameof(accessToken)); } - if (string.IsNullOrEmpty(refreshToken)) { - throw new ArgumentNullException(nameof(refreshToken)); - } - AccessToken = accessToken; - RefreshToken = refreshToken; + + if (!string.IsNullOrEmpty(refreshToken)) { + RefreshToken = refreshToken; + } if (BotConfig.UseLoginKeys) { if (BotConfig.PasswordFormat.HasTransformation()) { BotDatabase.AccessToken = ArchiCryptoHelper.Encrypt(BotConfig.PasswordFormat, accessToken); - BotDatabase.RefreshToken = ArchiCryptoHelper.Encrypt(BotConfig.PasswordFormat, refreshToken); + + if (!string.IsNullOrEmpty(refreshToken)) { + BotDatabase.RefreshToken = ArchiCryptoHelper.Encrypt(BotConfig.PasswordFormat, refreshToken); + } } else { BotDatabase.AccessToken = accessToken; - BotDatabase.RefreshToken = refreshToken; + + if (!string.IsNullOrEmpty(refreshToken)) { + BotDatabase.RefreshToken = refreshToken; + } } } }