Ferndiagnose-Backup: auch Full-Backup-Import schreibt die MCP-Dateien
Advisor-Fund: der Settings-only-Import stellte die Ferndiagnose-Einstellungen wieder her, der Full-Backup-Import (Download-Liste mitgesichert) aber NICHT — er liess die debug_*-Dateien unangetastet, und der nachfolgende Relaunch bootete mit den alten Werten. Damit waere "MCP-Settings im Backup" auf dem Full-Backup-Pfad still gescheitert. Fix: restoreMcpRemoteFromBackup nimmt jetzt restartNow. Settings-only ruft mit true (laufenden Server sofort neu laden), Full-Backup mit false (nur Dateien schreiben — der Relaunch-Boot liest sie via startDebugServer). Beide Pfade tragen die Sektion jetzt. Zusatz-Tests: normalizeSettings bewahrt backupIncludeMcp (der Dreh- und Angelpunkt — ohne das wuerde der Schalter bei jedem Save auf false zuruecksetzen und das Feature tot sein); Full-Backup-Write-Pfad schreibt debug_host/port/allowlist auf Platte ohne Restart (In-Memory bleibt stale → Boot uebernimmt). Suite 919 gruen, tsc=6.
This commit is contained in:
@@ -372,17 +372,20 @@ export class AppController {
|
||||
return this.getRemoteDiagnostics();
|
||||
}
|
||||
|
||||
private restoreMcpRemoteFromBackup(section: unknown): void {
|
||||
private restoreMcpRemoteFromBackup(section: unknown, restartNow: boolean): void {
|
||||
const restore = resolveMcpRemoteRestore(section);
|
||||
if (!restore) {
|
||||
return;
|
||||
}
|
||||
writeDebugServerConfig({ host: restore.host, port: restore.port, allowlist: restore.allowlist });
|
||||
void restartDebugServer().catch(() => {});
|
||||
if (restartNow) {
|
||||
void restartDebugServer().catch(() => {});
|
||||
}
|
||||
this.audit("INFO", "Ferndiagnose-Einstellungen aus Backup wiederhergestellt", {
|
||||
port: restore.port ?? null,
|
||||
allowlistCount: restore.allowlist?.length ?? 0,
|
||||
host: restore.host ?? "unveraendert"
|
||||
host: restore.host ?? "unveraendert",
|
||||
restartNow
|
||||
});
|
||||
}
|
||||
|
||||
@@ -827,7 +830,7 @@ public async checkDebridAccounts(): Promise<DebridAccountStatus[]> {
|
||||
this.settings = restoredSettings;
|
||||
saveSettings(this.storagePaths, this.settings);
|
||||
this.manager.setSettings(this.settings, { suppressRetroactiveCleanup: true });
|
||||
this.restoreMcpRemoteFromBackup(parsed.mcpRemote);
|
||||
this.restoreMcpRemoteFromBackup(parsed.mcpRemote, true);
|
||||
this.audit("INFO", "Backup importiert (nur Einstellungen)", {
|
||||
accountSummary: buildAccountSummary(this.settings)
|
||||
});
|
||||
@@ -864,6 +867,8 @@ public async checkDebridAccounts(): Promise<DebridAccountStatus[]> {
|
||||
|
||||
resetHistoryForRetention(this.storagePaths, this.settings.historyRetentionMode);
|
||||
|
||||
this.restoreMcpRemoteFromBackup(parsed.mcpRemote, false);
|
||||
|
||||
this.manager.skipShutdownPersist = true;
|
||||
this.manager.blockAllPersistence = true;
|
||||
logger.info("Backup wiederhergestellt — App startet automatisch neu");
|
||||
|
||||
Reference in New Issue
Block a user