From 0f3ad3f71f51eaf6e84c5001c9bcfb52873ee90a Mon Sep 17 00:00:00 2001 From: EvilMuffinHa Date: Mon, 19 Oct 2020 23:12:54 -0400 Subject: [PATCH] second faking identities fixed --- src/app.py | 62 ++++++++++++++++++++++++++--------------- src/static/game.js | 7 +++-- src/static/host.js | 1 + src/templates/play.html | 1 + 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/app.py b/src/app.py index ca33095..04753db 100644 --- a/src/app.py +++ b/src/app.py @@ -23,7 +23,6 @@ app = Flask(__name__) app.logger.info("Flask app loaded at " + __name__) app.config.from_object(Config) - # Version allows css / js to load instead of taking hours to update even on run smh version = rint(0, 300000000) @@ -80,8 +79,10 @@ def play(hash): elif (not all([a in wlist for a in name])) or (len(name) > 12): return render_template('badname.html', title='Join Game', version=str(version)) else: - games[hash]["players"][name] = 0 - return render_template('play.html', version=str(version), title="Play", gamecode=hash, username=name) + player_token = gencode(128) + games[hash]["players"][name] = [0, player_token] + return render_template('play.html', version=str(version), title="Play", gamecode=hash, + username=name, token=player_token) else: return render_template('please.html', version=str(version)) else: @@ -129,24 +130,22 @@ socketio = SocketIO(app) # V - - - # Checks when a player / host joins the room @socketio.on('join') def on_join(data): room = data['room'] + if dohash(data["_gid"]) == room: + pass + elif games[room]["players"][data['username']][1] != data['_gid']: + return if room not in games.keys(): return render_template('gamenotfound.html', title="Join Game", version=str(version)) - username = "" - if "username" in data.keys(): - username = data['username'] - else: - gid = data["_gid"] - if dohash(gid) == room: - username = "host" join_room(str(room)) - msg = {"locked": games[room]["locked"], "players": games[room]["players"]} + nplayers = {} + for r in games[room]["players"].keys(): + nplayers[r] = games[room]["players"][r][0] + msg = {"locked": games[room]["locked"], "players": nplayers} + print(msg) emit('player_join_event', msg, room=room) @@ -176,40 +175,55 @@ def host_msg(data): elif "tossup" in msg.keys(): if games[room]["buzzed"] == "": return - games[room]["players"][games[room]["buzzed"]] += games[room]["tossup"] + games[room]["players"][games[room]["buzzed"]][0] += games[room]["tossup"] username = games[room]["buzzed"] games[room]["buzzed"] = "" - emit("update_score_event", {"username":username, "players": games[room]["players"]}, room=room) + nplayers = {} + for r in games[room]["players"].keys(): + nplayers[r] = games[room]["players"][r][0] + emit("update_score_event", {"username": username, "players": nplayers}, room=room) emit("unlocked_event", {}, room=room) elif "bonus" in msg.keys(): if games[room]["buzzed"] == "": return - games[room]["players"][games[room]["buzzed"]] += games[room]["bonus"] + games[room]["players"][games[room]["buzzed"]][0] += games[room]["bonus"] username = games[room]["buzzed"] games[room]["buzzed"] = "" - emit("update_score_event", {"username":username, "players": games[room]["players"]}, room=room) + nplayers = {} + for r in games[room]["players"].keys(): + nplayers[r] = games[room]["players"][r][0] + emit("update_score_event", {"username": username, "players": nplayers}, room=room) emit("unlocked_event", {}, room=room) elif "power" in msg.keys(): if games[room]["buzzed"] == "": return - games[room]["players"][games[room]["buzzed"]] += games[room]["power"] + games[room]["players"][games[room]["buzzed"]][0] += games[room]["power"] username = games[room]["buzzed"] games[room]["buzzed"] = "" - emit("update_score_event", {"username":username, "players": games[room]["players"]}, room=room) + nplayers = {} + for r in games[room]["players"].keys(): + nplayers[r] = games[room]["players"][r][0] + emit("update_score_event", {"username": username, "players": nplayers}, room=room) emit("unlocked_event", {}, room=room) elif "negs" in msg.keys(): if games[room]["buzzed"] == "": return games[room]["players"][games[room]["buzzed"]] -= games[room]["negs"] - username = games[room]["buzzed"] + username = games[room]["buzzed"][0] games[room]["buzzed"] = "" - emit("update_score_event", {"username":username, "players": games[room]["players"]}, room=room) + nplayers = {} + for r in games[room]["players"].keys(): + nplayers[r] = games[room]["players"][r][0] + emit("update_score_event", {"username": username, "players": nplayers}, room=room) emit("unlocked_event", {}, room=room) + # When the player buzzes @socketio.on('buzz') def buzz(data): room = data["room"] + if games[room]["players"][data["username"]][1] != data['_gid']: + return if room not in games.keys(): return render_template('gamenotfound.html', title="Join Game", version=str(version)) if not games[room]["locked"]: @@ -222,6 +236,10 @@ def buzz(data): @socketio.on('leave') def on_leave(data): room = data['room'] + if dohash(data["_gid"]) == room: + pass + elif games[room]["players"][data["username"]][1] != data['_gid']: + return if room not in games.keys(): return render_template('gamenotfound.html', title="Join Game", version=str(version)) username = "" diff --git a/src/static/game.js b/src/static/game.js index fef7f40..2413fcd 100644 --- a/src/static/game.js +++ b/src/static/game.js @@ -4,6 +4,7 @@ code = document.getElementById("code").value; name = document.getElementById("name").value; kickurl = document.getElementById("kick").value; hostleave = document.getElementById("hostleave").value; +gid = document.getElementById("gid").value; function removeAllChildren(e) { var child = e.lastElementChild; @@ -15,7 +16,7 @@ function removeAllChildren(e) { socket.on("connect", function() { // when client first connects to a game - socket.emit("join", {"username": name, "room": code, "_gid": ""}); + socket.emit("join", {"username": name, "room": code, "_gid": gid}); }) socket.on("player_join_event", function(datas) { @@ -135,7 +136,7 @@ function unlock() { function buzz() { // when client hits buzz - socket.emit("buzz", {"username": name, "room": code, "_gid": ""}); + socket.emit("buzz", {"username": name, "room": code, "_gid": gid}); } $(document).on('keypress', function(e) { @@ -147,6 +148,6 @@ $(document).on('keypress', function(e) { window.onbeforeunload = function leave() { // when client leaves - socket.emit("leave", {"username": name, "room": code, "_gid": ""}); + socket.emit("leave", {"username": name, "room": code, "_gid": gid}); } diff --git a/src/static/host.js b/src/static/host.js index 7140b60..1e56e0c 100644 --- a/src/static/host.js +++ b/src/static/host.js @@ -46,6 +46,7 @@ window.onbeforeunload = function leave() { socket.on("player_join_event", function(datas) { data = datas["players"] + console.log(data) div = document.getElementById("sidebar"); removeAllChildren(div); if (Object.keys(data).length == 0) { diff --git a/src/templates/play.html b/src/templates/play.html index 594f5ee..9e2645c 100644 --- a/src/templates/play.html +++ b/src/templates/play.html @@ -23,6 +23,7 @@

+