""" 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)