diff --git a/.gitignore b/.gitignore index 2e1cd3458..63041f780 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,9 @@ ArchiSteamFarm/config/* !ArchiSteamFarm/config/example.json !ArchiSteamFarm/config/minimal.json -# Ignore local debugging log file +# Ignore local debugging ArchiSteamFarm/log.txt +ArchiSteamFarm/debug/* ################# ## Eclipse diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 7e41a28ea..0fe3e4318 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -193,6 +193,19 @@ namespace ArchiSteamFarm { // Initialize SteamClient = new SteamClient(); + if (Program.GlobalConfig.Debug && !Debugging.NetHookAlreadyInitialized) { + try { + if (Directory.Exists(Program.DebugDirectory)) { + Directory.Delete(Program.DebugDirectory, true); + } + Directory.CreateDirectory(Program.DebugDirectory); + SteamClient.DebugNetworkListener = new NetHookNetworkListener(Program.DebugDirectory); + Debugging.NetHookAlreadyInitialized = true; + } catch (Exception e) { + Logging.LogGenericException(e, botName); + } + } + ArchiHandler = new ArchiHandler(); SteamClient.AddHandler(ArchiHandler); diff --git a/ArchiSteamFarm/Debugging.cs b/ArchiSteamFarm/Debugging.cs index 99db84654..66ca89291 100644 --- a/ArchiSteamFarm/Debugging.cs +++ b/ArchiSteamFarm/Debugging.cs @@ -31,5 +31,7 @@ namespace ArchiSteamFarm { #endif internal static bool IsReleaseBuild => !IsDebugBuild; + + internal static bool NetHookAlreadyInitialized { get; set; } = false; } } diff --git a/ArchiSteamFarm/GlobalConfig.cs b/ArchiSteamFarm/GlobalConfig.cs index 507c0cbc5..a35aeac7c 100644 --- a/ArchiSteamFarm/GlobalConfig.cs +++ b/ArchiSteamFarm/GlobalConfig.cs @@ -23,7 +23,6 @@ */ using Newtonsoft.Json; -using SteamAuth; using System; using System.Collections.Generic; using System.IO; @@ -39,6 +38,9 @@ namespace ArchiSteamFarm { // This is hardcoded blacklist which should not be possible to change internal static readonly HashSet GlobalBlacklist = new HashSet { 267420, 303700, 335590, 368020, 425280 }; + [JsonProperty(Required = Required.DisallowNull)] + internal bool Debug { get; private set; } = false; + [JsonProperty(Required = Required.DisallowNull)] internal bool AutoUpdates { get; private set; } = true; diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index c62905ebe..5c81c5e37 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -52,6 +52,7 @@ namespace ArchiSteamFarm { internal const string ASF = "ASF"; internal const string ConfigDirectory = "config"; + internal const string DebugDirectory = "debug"; internal const string LogFile = "log.txt"; internal const string GlobalConfigFile = ASF + ".json"; internal const string GlobalDatabaseFile = ASF + ".db"; diff --git a/ArchiSteamFarm/config/ASF.json b/ArchiSteamFarm/config/ASF.json index d4ac12a46..9ae6fc209 100644 --- a/ArchiSteamFarm/config/ASF.json +++ b/ArchiSteamFarm/config/ASF.json @@ -1,4 +1,5 @@ { + "Debug": false, "AutoUpdates": true, "UpdateChannel": 1, "HttpTimeout": 30, diff --git a/tools/NetHookAnalyzer2.exe b/tools/NetHookAnalyzer2.exe new file mode 100644 index 000000000..31cf3b784 Binary files /dev/null and b/tools/NetHookAnalyzer2.exe differ