#!/usr/bin/env python from flask import Flask, request, jsonify import json import threading import os from waitress import serve app = Flask(__name__) buttons = {} # Dictionnaire pour stocker les boutons et leurs IP lock = threading.Lock() EXPECTED_BUTTONS = 2 # Nombre de boutons attendus # Fichier pour enregistrer la correspondance BUTTONS_FILE = 'buttons.json' # Compteur pour attribuer un ID unique à chaque bouton button_counter = 1 @app.route('/execute') def execute_script(): global buttons, button_counter ip_address = request.remote_addr # Obtenir l'adresse IP du client # Vérifier si l'adresse IP est déjà enregistrée for button_id, registered_ip in buttons.items(): if registered_ip == ip_address: return jsonify({"message": f"Button already registered with ID {button_id}."}), 400 with lock: # Enregistrer le bouton avec son IP si ce n'est pas déjà fait if len(buttons) < EXPECTED_BUTTONS: # Attribuer un ID basé sur le compteur button_id = button_counter buttons[button_id] = ip_address print(f"Button {button_id} registered from IP: {ip_address}") # Incrémenter le compteur pour le prochain bouton button_counter += 1 # Enregistrer dans le fichier with open(BUTTONS_FILE, 'w') as f: json.dump(buttons, f) # Vérifier si tous les boutons sont enregistrés if len(buttons) == EXPECTED_BUTTONS: print("Tous les boutons sont enregistrés. Prêt à commencer le jeu.") # Fermer le serveur après enregistrement os._exit(0) # Quitte le programme return jsonify({"message": f"Button {button_id} registered."}), 200 if __name__ == '__main__': print("Serveur d'enregistrement démarré") serve(app, host='0.0.0.0', port=5000) # Utiliser Waitress pour démarrer le serveur