Send relevant active client info to FE
All checks were successful
release-image / release-image (push) Successful in 2m53s
All checks were successful
release-image / release-image (push) Successful in 2m53s
This commit is contained in:
@@ -189,17 +189,26 @@ class ActiveClient:
|
|||||||
"""
|
"""
|
||||||
The active client model in memory for quicker access
|
The active client model in memory for quicker access
|
||||||
"""
|
"""
|
||||||
|
client_id: str = None
|
||||||
websocket = None
|
websocket = None
|
||||||
active_token: DiscordId = None
|
active_token: str = None
|
||||||
nickname: str = None
|
nickname: str = None
|
||||||
access_token: str = None
|
access_token: str = None
|
||||||
|
|
||||||
def __init__(self, websocket=None, active_token: DiscordId = None, nickname: str = None, access_token: str = None):
|
def __init__(self, client_id:str=None, websocket=None, active_token: s = None, nickname: str = None, access_token: str = None):
|
||||||
|
self.client_id = client_id
|
||||||
self.active_token = active_token
|
self.active_token = active_token
|
||||||
self.websocket = websocket
|
self.websocket = websocket
|
||||||
self.nickname = nickname
|
self.nickname = nickname
|
||||||
self.access_token = access_token
|
self.access_token = access_token
|
||||||
|
|
||||||
|
def json(self):
|
||||||
|
return {
|
||||||
|
"client_id": self.client_id,
|
||||||
|
"nickname": self.nickname,
|
||||||
|
"active_token": self.active_token
|
||||||
|
}
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""
|
"""
|
||||||
Returns a neatly formatted string representation of the ActiveClient object.
|
Returns a neatly formatted string representation of the ActiveClient object.
|
||||||
@@ -207,6 +216,7 @@ class ActiveClient:
|
|||||||
return (f"--- Active Client ---\n"
|
return (f"--- Active Client ---\n"
|
||||||
f"Active Token: {self.active_token if self.active_token else 'N/A'}\n"
|
f"Active Token: {self.active_token if self.active_token else 'N/A'}\n"
|
||||||
f"Nickname: {self.nickname if self.nickname else 'N/A'}\n"
|
f"Nickname: {self.nickname if self.nickname else 'N/A'}\n"
|
||||||
|
f"Nickname: {self.client_id if self.client_id else 'N/A'}\n"
|
||||||
f"Access Token: {'[REDACTED]' if self.access_token else 'N/A'}\n"
|
f"Access Token: {'[REDACTED]' if self.access_token else 'N/A'}\n"
|
||||||
f"Websocket Connected: {'Yes' if self.websocket else 'No'}")
|
f"Websocket Connected: {'Yes' if self.websocket else 'No'}")
|
||||||
|
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ def find_token_in_active_clients(target_token: str) -> bool:
|
|||||||
"""
|
"""
|
||||||
for client_id in current_app.active_clients:
|
for client_id in current_app.active_clients:
|
||||||
try:
|
try:
|
||||||
if current_app.active_clients[client_id].active_token.token == target_token:
|
if current_app.active_clients[client_id].active_token == target_token:
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ async def register_client(websocket, client_id, client_nickname, active_token):
|
|||||||
current_app.active_clients[client_id].websocket = websocket
|
current_app.active_clients[client_id].websocket = websocket
|
||||||
current_app.active_clients[client_id].nickname = client_nickname
|
current_app.active_clients[client_id].nickname = client_nickname
|
||||||
current_app.active_clients[client_id].active_token = active_token
|
current_app.active_clients[client_id].active_token = active_token
|
||||||
|
current_app.active_clients[client_id].client_id = client_id
|
||||||
print(f"Client {client_id} connected.")
|
print(f"Client {client_id} connected.")
|
||||||
|
|
||||||
# Create a JWT for the client
|
# Create a JWT for the client
|
||||||
@@ -150,7 +151,7 @@ async def send_command_to_all_clients(command_name, *args):
|
|||||||
@role_required(UserRoles.USER)
|
@role_required(UserRoles.USER)
|
||||||
async def get_nodes():
|
async def get_nodes():
|
||||||
"""API endpoint to list currently connected client IDs."""
|
"""API endpoint to list currently connected client IDs."""
|
||||||
return jsonify(list(current_app.active_clients.keys()))
|
return jsonify([client.json() for client in current_app.active_clients])
|
||||||
|
|
||||||
|
|
||||||
@nodes_bp.route("/online", methods=['GET'])
|
@nodes_bp.route("/online", methods=['GET'])
|
||||||
|
|||||||
Reference in New Issue
Block a user