Merge branch 'main' of github.com:onionshare/onionshare-ghsa-wh24-f3hg-r3h2 into release-2.6.2

This commit is contained in:
Saptak S 2024-03-15 12:38:54 +05:30
commit 38f63e5bd8

View File

@ -114,7 +114,11 @@ class ChatModeWeb:
title=self.web.settings.get("general", "title"), title=self.web.settings.get("general", "title"),
) )
@self.web.app.route("/update-session-username", methods=["POST"], provide_automatic_options=False) @self.web.app.route(
"/update-session-username",
methods=["POST"],
provide_automatic_options=False,
)
def update_session_username(): def update_session_username():
history_id = self.cur_history_id history_id = self.cur_history_id
data = request.get_json() data = request.get_json()
@ -153,6 +157,8 @@ class ChatModeWeb:
A status message is broadcast to all people in the room.""" A status message is broadcast to all people in the room."""
if self.validate_username(session.get("name")): if self.validate_username(session.get("name")):
self.connected_users.append(session.get("name")) self.connected_users.append(session.get("name"))
# Store the session id for the user
session["socketio_session_id"] = request.sid
emit( emit(
"status", "status",
{ {
@ -184,9 +190,9 @@ class ChatModeWeb:
new_name = message.get("username", "").strip() new_name = message.get("username", "").strip()
if self.validate_username(new_name): if self.validate_username(new_name):
session["name"] = new_name session["name"] = new_name
self.connected_users[ self.connected_users[self.connected_users.index(current_name)] = (
self.connected_users.index(current_name) session.get("name")
] = session.get("name") )
emit( emit(
"status", "status",
{ {
@ -209,8 +215,18 @@ class ChatModeWeb:
def disconnect(): def disconnect():
"""Sent by clients when they disconnect. """Sent by clients when they disconnect.
A status message is broadcast to all people in the server.""" A status message is broadcast to all people in the server."""
user_already_disconnected = False
if session.get("name") in self.connected_users: if session.get("name") in self.connected_users:
self.connected_users.remove(session.get("name")) self.connected_users.remove(session.get("name"))
else:
user_already_disconnected = True
# Forcefully disconnect the user
self.web.socketio.server.disconnect(
sid=session.get("socketio_session_id"), namespace="/chat"
)
if not user_already_disconnected:
emit( emit(
"status", "status",
{ {