87 lines
2.6 KiB
Python
87 lines
2.6 KiB
Python
"""
|
|
ScriptsManager Metadata:
|
|
@description: Creates a complete system backup with compression options
|
|
@description_long: docs/backup_system.md
|
|
@description_es: Crea una copia de seguridad completa del sistema con opciones de compresión
|
|
@description_it: Crea un backup completo del sistema con opzioni di compressione
|
|
@description_fr: Crée une sauvegarde complète du système avec options de compression
|
|
@required_level: admin
|
|
@category: backup
|
|
@tags: system,maintenance,storage
|
|
@parameters: [
|
|
{
|
|
"name": "backup_path",
|
|
"type": "text",
|
|
"description": "Path where backup will be stored",
|
|
"required": true,
|
|
"default": "/backup"
|
|
},
|
|
{
|
|
"name": "compression",
|
|
"type": "select",
|
|
"description": "Compression level",
|
|
"required": true,
|
|
"options": ["none", "low", "medium", "high"],
|
|
"default": "medium"
|
|
}
|
|
]
|
|
@execution_timeout: 3600
|
|
@flask_port: 5002
|
|
"""
|
|
|
|
from flask import Flask, render_template, request, jsonify
|
|
import sys
|
|
import os
|
|
import json
|
|
import time
|
|
|
|
app = Flask(__name__)
|
|
|
|
# Get parameters from ScriptsManager
|
|
data_dir = sys.argv[1] if len(sys.argv) > 1 else "./data"
|
|
user_level = sys.argv[2] if len(sys.argv) > 2 else "admin"
|
|
port = int(sys.argv[3]) if len(sys.argv) > 3 else 5002
|
|
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template(
|
|
"backup_system.html", data_dir=data_dir, user_level=user_level
|
|
)
|
|
|
|
|
|
@app.route("/backup", methods=["POST"])
|
|
def create_backup():
|
|
try:
|
|
backup_path = request.form.get("backup_path")
|
|
compression = request.form.get("compression")
|
|
|
|
# Simulate backup process
|
|
result = {
|
|
"status": "success",
|
|
"message": f"System backup created at {backup_path}",
|
|
"data": {
|
|
"backup_path": backup_path,
|
|
"compression": compression,
|
|
"size": "2.5 GB",
|
|
"duration": "15 minutes",
|
|
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
|
|
},
|
|
}
|
|
|
|
# Save result to data directory
|
|
result_path = os.path.join(data_dir, "backup_result.json")
|
|
with open(result_path, "w") as f:
|
|
json.dump(result, f, indent=2)
|
|
|
|
return jsonify(result)
|
|
except Exception as e:
|
|
return jsonify({"status": "error", "message": str(e)}), 500
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(f"Starting System Backup on port {port}")
|
|
print(f"Data directory: {data_dir}")
|
|
print(f"User level: {user_level}")
|
|
app.run(host="0.0.0.0", port=port, debug=True)
|