public async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            Logger.InitializeDefaults(Path.Combine(Global.DataDir, "Logs.txt"));
            Logger.LogSoftwareStarted("Wasabi Backend");

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            TaskScheduler.UnobservedTaskException      += TaskScheduler_UnobservedTaskException;
            var configFilePath = Path.Combine(Global.DataDir, "Config.json");
            var config         = new Config(configFilePath);

            config.LoadOrCreateDefaultFile();
            Logger.LogInfo("Config is successfully initialized.");

            var roundConfigFilePath = Path.Combine(Global.DataDir, "CcjRoundConfig.json");
            var roundConfig         = new CoordinatorRoundConfig(roundConfigFilePath);

            roundConfig.LoadOrCreateDefaultFile();
            Logger.LogInfo("RoundConfig is successfully initialized.");

            string host = config.GetBitcoinCoreRpcEndPoint().ToString(config.Network.RPCPort);
            var    rpc  = new RPCClient(
                authenticationString: config.BitcoinRpcConnectionString,
                hostOrUri: host,
                network: config.Network);

            var cachedRpc = new CachedRpcClient(rpc, Cache);
            await Global.InitializeAsync(config, roundConfig, cachedRpc, cancellationToken);

            try
            {
                await WebsiteTorifier.CloneAndUpdateOnionIndexHtmlAsync();
            }
            catch (Exception ex)
            {
                Logger.LogWarning(ex);
            }
        }
 public InitConfigStartupTask(Global global, IHostingEnvironment hostingEnvironment)
 {
     Global          = global;
     WebsiteTorifier = new WebsiteTorifier(((HostingEnvironment)hostingEnvironment).WebRootPath);
 }
 public InitConfigStartupTask(Global global, IMemoryCache cache, IWebHostEnvironment hostingEnvironment)
 {
     Global          = global;
     Cache           = cache;
     WebsiteTorifier = new WebsiteTorifier(hostingEnvironment.WebRootPath);
 }