diff --git a/ArchiSteamFarm/BotConfig.cs b/ArchiSteamFarm/BotConfig.cs index 2c6ac3224..0f2782fa8 100644 --- a/ArchiSteamFarm/BotConfig.cs +++ b/ArchiSteamFarm/BotConfig.cs @@ -31,66 +31,44 @@ using Newtonsoft.Json; namespace ArchiSteamFarm { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class BotConfig { -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool AcceptGifts; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool AutoDiscoveryQueue; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty] internal readonly string CustomGamePlayedWhileFarming; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty] internal readonly string CustomGamePlayedWhileIdle; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool DismissInventoryNotifications; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool Enabled; -#pragma warning restore 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly EFarmingOrder FarmingOrder = EFarmingOrder.Unordered; -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool FarmOffline; -#pragma warning restore 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly HashSet GamesPlayedWhileIdle = new HashSet(); -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool HandleOfflineMessages; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly byte HoursUntilCardDrops = 3; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool IdleRefundableGames = true; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool IsBotAccount; -#pragma warning restore 649 [JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace, Required = Required.DisallowNull)] internal readonly HashSet LootableTypes = new HashSet { @@ -105,33 +83,23 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly CryptoHelper.ECryptoMethod PasswordFormat = CryptoHelper.ECryptoMethod.PlainText; -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool Paused; -#pragma warning restore 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly ERedeemingPreferences RedeemingPreferences = ERedeemingPreferences.None; -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool SendOnFarmingFinished; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly byte SendTradePeriod; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool ShutdownOnFarmingFinished; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty] internal readonly string SteamTradeToken; -#pragma warning restore 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly Dictionary SteamUserPermissions = new Dictionary(); @@ -139,10 +107,8 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly ETradingPreferences TradingPreferences = ETradingPreferences.None; -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool UseLoginKeys = true; -#pragma warning restore 649 [JsonProperty(PropertyName = GlobalConfig.UlongStringPrefix + nameof(SteamMasterClanID), Required = Required.DisallowNull)] internal string SSteamMasterClanID { diff --git a/ArchiSteamFarm/GlobalConfig.cs b/ArchiSteamFarm/GlobalConfig.cs index c316a1971..78a2a9ed8 100644 --- a/ArchiSteamFarm/GlobalConfig.cs +++ b/ArchiSteamFarm/GlobalConfig.cs @@ -50,15 +50,11 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly byte ConnectionTimeout = DefaultConnectionTimeout; -#pragma warning disable 649 [JsonProperty] internal readonly string CurrentCulture; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool Debug; -#pragma warning restore 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly byte FarmingDelay = 15; @@ -66,10 +62,8 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly byte GiftsLimiterDelay = 1; -#pragma warning disable 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly bool Headless; -#pragma warning restore 649 [JsonProperty(Required = Required.DisallowNull)] internal readonly byte IdleFarmingPeriod = 8; @@ -77,6 +71,9 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly byte InventoryLimiterDelay = 3; + [JsonProperty] + internal readonly string IPCPassword; + [JsonProperty(Required = Required.DisallowNull)] internal readonly ushort IPCPort = DefaultIPCPort; diff --git a/ArchiSteamFarm/IPC.cs b/ArchiSteamFarm/IPC.cs index ebd36e199..6ed23e4e7 100644 --- a/ArchiSteamFarm/IPC.cs +++ b/ArchiSteamFarm/IPC.cs @@ -107,7 +107,7 @@ namespace ArchiSteamFarm { context.Response.StatusCode = (ushort) statusCode; } - context.Response.AppendHeader("Access-Control-Allow-Origin", "null"); + context.Response.AppendHeader("Access-Control-Allow-Origin", "*"); string acceptEncoding = context.Request.Headers["Accept-Encoding"]; @@ -199,9 +199,9 @@ namespace ArchiSteamFarm { } try { - if (Program.GlobalConfig.SteamOwnerID == 0) { - ASF.ArchiLogger.LogGenericWarning(Strings.ErrorIPCAccessDenied); - await context.StringResponse(Strings.ErrorIPCAccessDenied, statusCode: HttpStatusCode.Forbidden).ConfigureAwait(false); + if ((Program.GlobalConfig.SteamOwnerID == 0) || (!string.IsNullOrEmpty(Program.GlobalConfig.IPCPassword) && (context.Request.GetQueryStringValue("password") != Program.GlobalConfig.IPCPassword))) { + ASF.ArchiLogger.LogGenericWarning(Strings.ErrorAccessDenied); + await context.StringResponse(Strings.ErrorAccessDenied, statusCode: HttpStatusCode.Forbidden).ConfigureAwait(false); return; } diff --git a/ArchiSteamFarm/JSON/GitHub.cs b/ArchiSteamFarm/JSON/GitHub.cs index 2a912fa35..1c4e38344 100644 --- a/ArchiSteamFarm/JSON/GitHub.cs +++ b/ArchiSteamFarm/JSON/GitHub.cs @@ -27,34 +27,24 @@ namespace ArchiSteamFarm.JSON { internal static class GitHub { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class ReleaseResponse { -#pragma warning disable 649 [JsonProperty(PropertyName = "assets", Required = Required.Always)] internal readonly List Assets; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(PropertyName = "tag_name", Required = Required.Always)] internal readonly string Tag; -#pragma warning restore 649 // Deserialized from JSON private ReleaseResponse() { } internal sealed class Asset { -#pragma warning disable 649 [JsonProperty(PropertyName = "browser_download_url", Required = Required.Always)] internal readonly string DownloadURL; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(PropertyName = "name", Required = Required.Always)] internal readonly string Name; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(PropertyName = "size", Required = Required.Always)] internal readonly uint Size; -#pragma warning restore 649 // Deserialized from JSON private Asset() { } diff --git a/ArchiSteamFarm/JSON/Steam.cs b/ArchiSteamFarm/JSON/Steam.cs index be73a2227..41bc6e3c2 100644 --- a/ArchiSteamFarm/JSON/Steam.cs +++ b/ArchiSteamFarm/JSON/Steam.cs @@ -156,10 +156,8 @@ namespace ArchiSteamFarm.JSON { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class ConfirmationDetails { -#pragma warning disable 649 [JsonProperty(PropertyName = "success", Required = Required.Always)] internal readonly bool Success; -#pragma warning restore 649 internal ulong OtherSteamID64 { get { @@ -331,10 +329,8 @@ namespace ArchiSteamFarm.JSON { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class ConfirmationResponse { -#pragma warning disable 649 [JsonProperty(PropertyName = "success", Required = Required.Always)] internal readonly bool Success; -#pragma warning restore 649 // Deserialized from JSON private ConfirmationResponse() { } @@ -342,10 +338,8 @@ namespace ArchiSteamFarm.JSON { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class GenericResponse { -#pragma warning disable 649 [JsonProperty(PropertyName = "success", Required = Required.Always)] internal readonly EResult Result; -#pragma warning restore 649 // Deserialized from JSON private GenericResponse() { } @@ -442,10 +436,8 @@ namespace ArchiSteamFarm.JSON { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class NewDiscoveryQueueResponse { -#pragma warning disable 649 [JsonProperty(PropertyName = "queue", Required = Required.Always)] internal readonly HashSet Queue; -#pragma warning restore 649 // Deserialized from JSON private NewDiscoveryQueueResponse() { } @@ -453,15 +445,11 @@ namespace ArchiSteamFarm.JSON { [SuppressMessage("ReSharper", "ClassCannotBeInstantiated")] internal sealed class RedeemWalletResponse { -#pragma warning disable 649 [JsonProperty(PropertyName = "detail", Required = Required.DisallowNull)] internal readonly EPurchaseResultDetail? PurchaseResultDetail; -#pragma warning restore 649 -#pragma warning disable 649 [JsonProperty(PropertyName = "success", Required = Required.Always)] internal readonly EResult Result; -#pragma warning restore 649 // Deserialized from JSON private RedeemWalletResponse() { } diff --git a/ArchiSteamFarm/Localization/Strings.Designer.cs b/ArchiSteamFarm/Localization/Strings.Designer.cs index a56ebb363..a4782030b 100644 --- a/ArchiSteamFarm/Localization/Strings.Designer.cs +++ b/ArchiSteamFarm/Localization/Strings.Designer.cs @@ -855,15 +855,6 @@ namespace ArchiSteamFarm.Localization { } } - /// - /// Looks up a localized string similar to Refusing to handle the request because SteamOwnerID is not set!. - /// - internal static string ErrorIPCAccessDenied { - get { - return ResourceManager.GetString("ErrorIPCAccessDenied", resourceCulture); - } - } - /// /// Looks up a localized string similar to {0} is empty!. /// diff --git a/ArchiSteamFarm/Localization/Strings.resx b/ArchiSteamFarm/Localization/Strings.resx index 2c340bdc8..c95e9f13c 100644 --- a/ArchiSteamFarm/Localization/Strings.resx +++ b/ArchiSteamFarm/Localization/Strings.resx @@ -189,10 +189,6 @@ StackTrace: Received a request for user input, but process is running in headless mode! - - Refusing to handle the request because SteamOwnerID is not set! - SteamOwnerID is name of bot config property, it should not be translated - Exiting... diff --git a/ArchiSteamFarm/config/ASF.json b/ArchiSteamFarm/config/ASF.json index e7a0f4de2..55b36d6e2 100644 --- a/ArchiSteamFarm/config/ASF.json +++ b/ArchiSteamFarm/config/ASF.json @@ -11,6 +11,7 @@ "IdleFarmingPeriod": 8, "InventoryLimiterDelay": 3, "IPCHost": "127.0.0.1", + "IPCPassword": null, "IPCPort": 1242, "LoginLimiterDelay": 10, "MaxFarmingTime": 10,