Files
blindtest/Python/register.py
2024-07-29 16:00:55 +02:00

57 lines
1.9 KiB
Python

#!/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