Bienvenue sur CFTPfr.fr › Forums › modules › MIRA_LANG — api_server.py
- Ce sujet est vide.
Affichage de 1 message (sur 1 au total)
-
AuteurMessages
-
25.07.2026 à 21h57 #217
Mario Da Conceicao
Maître des clésSauvegarde de travail — version du 25/07/2026. Serveur Flask local (127.0.0.1:5000) qui exécute le langage maison MIRA_LANG. Nouveau composant découvert lors de l’audit, absent du README d’origine.
from flask import Flask, request, jsonify import subprocess from pathlib import Path import importlib.util import sys app = Flask(__name__) MIRA_LANG_PATH = Path(r"D:\MIRA_Project\mira_lang\main.py") PYTHONW = Path(r"D:\MIRA_Project\WPy64-313130\python\pythonw.exe") PLUGINS_DIR = Path(r"D:\MIRA_Project\mira_lang\plugins") import logging logging.basicConfig(filename='api_server.log', level=logging.ERROR) @app.route('/execute', methods=['POST']) def execute_code(): try: code = request.json.get('code', '') if not code: return jsonify({"error": "Aucun code fourni"}), 400 result = subprocess.run( [str(PYTHONW), str(MIRA_LANG_PATH)], input=code, capture_output=True, text=True, cwd=str(MIRA_LANG_PATH.parent) ) if result.returncode != 0: return jsonify({"error": result.stderr}), 400 return jsonify({"output": result.stdout}) except Exception as e: logging.error(f"Erreur dans /execute: {e}") return jsonify({"error": str(e)}), 500 @app.route('/plugins', methods=['GET']) def list_plugins(): try: plugins = [] if PLUGINS_DIR.exists(): for file in PLUGINS_DIR.glob("*.py"): if not file.name.startswith("_"): plugins.append(file.stem) return jsonify({"plugins": plugins}) except Exception as e: logging.error(f"Erreur dans /plugins: {e}") return jsonify({"error": str(e)}), 500 @app.route('/plugins/<plugin_name>', methods=['POST']) def call_plugin(plugin_name): try: args = request.json.get('args', []) plugin_file = PLUGINS_DIR / f"{plugin_name}.py" if not plugin_file.exists(): return jsonify({"error": f"Plugin {plugin_name} introuvable"}), 404 spec = importlib.util.spec_from_file_location(plugin_name, plugin_file) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) if hasattr(module, "executer"): result = module.executer(*args) return jsonify({"result": result}) else: return jsonify({"error": f"Plugin {plugin_name} n'a pas de fonction executer"}), 400 except Exception as e: logging.error(f"Erreur dans /plugins/{plugin_name}: {e}") return jsonify({"error": str(e)}), 500 if __name__ == '__main__': try: app.run(host='127.0.0.1', port=5000, debug=False) except Exception as e: logging.error(f"Erreur de démarrage du serveur: {e}") -
AuteurMessages
Affichage de 1 message (sur 1 au total)
- Vous devez être connecté pour répondre à ce sujet.