mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-11-11 15:21:44 +00:00
feat: add local backup restore during seed setup
This commit is contained in:
1 parent
2b68df9428
commit
ee3d9d8e9d
3 files changed
+88
-1
No files matched your search
@@ -145,6 +145,28 @@ class BackupManager:
|
||||
)
|
||||
)
|
||||
|
||||
def restore_from_backup(self, backup_path: str) -> None:
|
||||
"""Restore the index file from a user-specified backup path."""
|
||||
try:
|
||||
src = Path(backup_path)
|
||||
if not src.exists():
|
||||
logger.error(f"Backup file '{src}' does not exist.")
|
||||
print(colored(f"Error: Backup file '{src}' does not exist.", "red"))
|
||||
return
|
||||
shutil.copy2(src, self.index_file)
|
||||
os.chmod(self.index_file, 0o600)
|
||||
logger.info(f"Index file restored from backup '{src}'.")
|
||||
print(colored(f"[+] Index file restored from backup '{src}'.", "green"))
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Failed to restore from backup '{backup_path}': {e}", exc_info=True
|
||||
)
|
||||
print(
|
||||
colored(
|
||||
f"Error: Failed to restore from backup '{backup_path}': {e}", "red"
|
||||
)
|
||||
)
|
||||
|
||||
def list_backups(self) -> None:
|
||||
try:
|
||||
backup_files = sorted(
|
||||
|
||||
@@ -988,7 +988,8 @@ class PasswordManager:
|
||||
"2. Enter an existing seed one word at a time\n"
|
||||
"3. Generate a new seed\n"
|
||||
"4. Restore from Nostr\n"
|
||||
"Enter choice (1/2/3/4): "
|
||||
"5. Restore from local backup\n"
|
||||
"Enter choice (1/2/3/4/5): "
|
||||
).strip()
|
||||
|
||||
if choice == "1":
|
||||
@@ -1001,6 +1002,15 @@ class PasswordManager:
|
||||
seed_phrase = masked_input("Enter your 12-word BIP-85 seed: ").strip()
|
||||
self.restore_from_nostr_with_guidance(seed_phrase)
|
||||
return
|
||||
elif choice == "5":
|
||||
backup_path = input("Enter backup file path: ").strip()
|
||||
if not getattr(self, "fingerprint_manager", None):
|
||||
self.initialize_fingerprint_manager()
|
||||
seed_phrase = masked_input("Enter your 12-word BIP-85 seed: ").strip()
|
||||
fp = self._finalize_existing_seed(seed_phrase)
|
||||
if fp:
|
||||
self.backup_manager.restore_from_backup(backup_path)
|
||||
return
|
||||
else:
|
||||
print(colored("Invalid choice. Exiting.", "red"))
|
||||
sys.exit(1)
|
||||
|
||||
Reference in new issue
Block a user