57 lines
1.9 KiB
Python
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
|