diff --git a/src/Jackett/Indexers/BaseIndexer.cs b/src/Jackett/Indexers/BaseIndexer.cs index 094b9f328..348109fc1 100644 --- a/src/Jackett/Indexers/BaseIndexer.cs +++ b/src/Jackett/Indexers/BaseIndexer.cs @@ -161,7 +161,7 @@ namespace Jackett.Indexers IsConfigured = false; } - protected virtual void SaveConfig() + public virtual void SaveConfig() { indexerService.SaveConfig(this as IIndexer, configData.ToJson(protectionService, forDisplay: false)); } diff --git a/src/Jackett/Indexers/IIndexer.cs b/src/Jackett/Indexers/IIndexer.cs index 857fd264e..54e97a585 100644 --- a/src/Jackett/Indexers/IIndexer.cs +++ b/src/Jackett/Indexers/IIndexer.cs @@ -34,6 +34,7 @@ namespace Jackett.Indexers // Called on startup when initializing indexers from saved configuration void LoadFromSavedConfiguration(JToken jsonConfig); + void SaveConfig(); Task> PerformQuery(TorznabQuery query); diff --git a/src/Jackett/Services/IndexerManagerService.cs b/src/Jackett/Services/IndexerManagerService.cs index 5e7cccaa9..a7ca5a592 100644 --- a/src/Jackett/Services/IndexerManagerService.cs +++ b/src/Jackett/Services/IndexerManagerService.cs @@ -55,7 +55,27 @@ namespace Jackett.Services } catch (Exception ex) { - logger.Error(ex, "Failed loading configuration for {0}, you must reconfigure this indexer", idx.DisplayName); + logger.Error(ex, "Failed loading configuration for {0}, trying backup", idx.DisplayName); + var configFilePathBak = configFilePath + ".bak"; + if (File.Exists(configFilePathBak)) + { + try + { + var fileStrBak = File.ReadAllText(configFilePathBak); + var jsonStringBak = JToken.Parse(fileStrBak); + idx.LoadFromSavedConfiguration(jsonStringBak); + logger.Info("Successfully loaded backup config for {0}", idx.DisplayName); + idx.SaveConfig(); + } + catch (Exception exbak) + { + logger.Error(exbak, "Failed loading backup configuration for {0}, you must reconfigure this indexer", idx.DisplayName); + } + } + else + { + logger.Error(ex, "Failed loading backup configuration for {0} (no backup available), you must reconfigure this indexer", idx.DisplayName); + } } } }