aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaptak S <saptak013@gmail.com>2021-11-14 23:44:16 +0530
committerSaptak S <saptak013@gmail.com>2021-11-14 23:44:16 +0530
commitb9d9f1491648ec76c1fe48f71afdb53a139e6206 (patch)
tree3f0934fb286eecaa3e347ed9b3c12bcca79fbea7
parent6429392a405c2812a04ad4c7653d885e7595e255 (diff)
downloadonionshare-b9d9f1491648ec76c1fe48f71afdb53a139e6206.tar.gz
onionshare-b9d9f1491648ec76c1fe48f71afdb53a139e6206.zip
Refuses connection if another session is already active
-rw-r--r--cli/onionshare_cli/web/chat_mode.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/cli/onionshare_cli/web/chat_mode.py b/cli/onionshare_cli/web/chat_mode.py
index 7965b722..b7ccbeb9 100644
--- a/cli/onionshare_cli/web/chat_mode.py
+++ b/cli/onionshare_cli/web/chat_mode.py
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from flask import request, render_template, make_response, jsonify, session
-from flask_socketio import emit
+from flask_socketio import emit, ConnectionRefusedError
class ChatModeWeb:
@@ -117,17 +117,20 @@ class ChatModeWeb:
def server_connect():
"""Sent by clients when they enter a room.
A status message is broadcast to all people in the room."""
- self.connected_users.append(session.get("name"))
- emit(
- "status",
- {
- "username": session.get("name"),
- "msg": "{} has joined.".format(session.get("name")),
- "connected_users": self.connected_users,
- "user": session.get("name"),
- },
- broadcast=True,
- )
+ if self.validate_username(session.get("name")):
+ self.connected_users.append(session.get("name"))
+ emit(
+ "status",
+ {
+ "username": session.get("name"),
+ "msg": "{} has joined.".format(session.get("name")),
+ "connected_users": self.connected_users,
+ "user": session.get("name"),
+ },
+ broadcast=True,
+ )
+ else:
+ raise ConnectionRefusedError('You are active from another session!')
@self.web.socketio.on("text", namespace="/chat")
def text(message):