Refactor: Implement Hysteria Bakcup in Python
This commit is contained in:
@ -36,7 +36,7 @@ class Command(Enum):
|
|||||||
UPDATE_GEO = os.path.join(SCRIPT_DIR, 'hysteria2', 'update_geo.py')
|
UPDATE_GEO = os.path.join(SCRIPT_DIR, 'hysteria2', 'update_geo.py')
|
||||||
LIST_USERS = os.path.join(SCRIPT_DIR, 'hysteria2', 'list_users.sh')
|
LIST_USERS = os.path.join(SCRIPT_DIR, 'hysteria2', 'list_users.sh')
|
||||||
SERVER_INFO = os.path.join(SCRIPT_DIR, 'hysteria2', 'server_info.sh')
|
SERVER_INFO = os.path.join(SCRIPT_DIR, 'hysteria2', 'server_info.sh')
|
||||||
BACKUP_HYSTERIA2 = os.path.join(SCRIPT_DIR, 'hysteria2', 'backup.sh')
|
BACKUP_HYSTERIA2 = os.path.join(SCRIPT_DIR, 'hysteria2', 'backup.py')
|
||||||
RESTORE_HYSTERIA2 = os.path.join(SCRIPT_DIR, 'hysteria2', 'restore.sh')
|
RESTORE_HYSTERIA2 = os.path.join(SCRIPT_DIR, 'hysteria2', 'restore.sh')
|
||||||
INSTALL_TELEGRAMBOT = os.path.join(SCRIPT_DIR, 'telegrambot', 'runbot.py')
|
INSTALL_TELEGRAMBOT = os.path.join(SCRIPT_DIR, 'telegrambot', 'runbot.py')
|
||||||
SHELL_SINGBOX = os.path.join(SCRIPT_DIR, 'singbox', 'singbox_shell.sh')
|
SHELL_SINGBOX = os.path.join(SCRIPT_DIR, 'singbox', 'singbox_shell.sh')
|
||||||
@ -182,7 +182,7 @@ def change_hysteria2_sni(sni: str):
|
|||||||
def backup_hysteria2():
|
def backup_hysteria2():
|
||||||
'''Backups Hysteria configuration. Raises an exception on failure.'''
|
'''Backups Hysteria configuration. Raises an exception on failure.'''
|
||||||
try:
|
try:
|
||||||
run_cmd(['bash', Command.BACKUP_HYSTERIA2.value])
|
run_cmd(['python3', Command.BACKUP_HYSTERIA2.value])
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
raise Exception(f"Backup failed: {e}")
|
raise Exception(f"Backup failed: {e}")
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|||||||
27
core/scripts/hysteria2/backup.py
Normal file
27
core/scripts/hysteria2/backup.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import zipfile
|
||||||
|
from pathlib import Path
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
backup_dir = Path("/opt/hysbackup")
|
||||||
|
backup_file = backup_dir / f"hysteria_backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}.zip"
|
||||||
|
|
||||||
|
files_to_backup = [
|
||||||
|
Path("/etc/hysteria/ca.key"),
|
||||||
|
Path("/etc/hysteria/ca.crt"),
|
||||||
|
Path("/etc/hysteria/users.json"),
|
||||||
|
Path("/etc/hysteria/config.json"),
|
||||||
|
Path("/etc/hysteria/.configs.env"),
|
||||||
|
]
|
||||||
|
|
||||||
|
backup_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with zipfile.ZipFile(backup_file, 'w') as zipf:
|
||||||
|
for file_path in files_to_backup:
|
||||||
|
if file_path.exists():
|
||||||
|
zipf.write(file_path, arcname=file_path.name)
|
||||||
|
print("Backup successfully created")
|
||||||
|
except Exception as e:
|
||||||
|
print("Backup failed!", str(e))
|
||||||
@ -1,24 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
BACKUP_DIR="/opt/hysbackup"
|
|
||||||
BACKUP_FILE="$BACKUP_DIR/hysteria_backup_$(date +%Y%m%d_%H%M%S).zip"
|
|
||||||
|
|
||||||
if [ ! -d "$BACKUP_DIR" ]; then
|
|
||||||
mkdir -p "$BACKUP_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FILES_TO_BACKUP=(
|
|
||||||
"/etc/hysteria/ca.key"
|
|
||||||
"/etc/hysteria/ca.crt"
|
|
||||||
"/etc/hysteria/users.json"
|
|
||||||
"/etc/hysteria/config.json"
|
|
||||||
"/etc/hysteria/.configs.env"
|
|
||||||
)
|
|
||||||
|
|
||||||
zip -j "$BACKUP_FILE" "${FILES_TO_BACKUP[@]}" >/dev/null
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "Backup successfully created"
|
|
||||||
else
|
|
||||||
echo "Backup failed!"
|
|
||||||
fi
|
|
||||||
Reference in New Issue
Block a user