From a1784456960c460e6905f21110e92a8ddd9dfe71 Mon Sep 17 00:00:00 2001 From: jesus Date: Fri, 8 Mar 2024 19:57:38 +0100 Subject: [PATCH] Closes #39 Co-authored-by: Ismael Bernad Co-authored-by: Jesus Montero --- echo-client.py | 5 +++-- echo-server.py | 36 +++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/echo-client.py b/echo-client.py index 0c5be01..3427055 100755 --- a/echo-client.py +++ b/echo-client.py @@ -7,7 +7,7 @@ import sys HOST = "127.0.0.1" -PORT = 65435 +PORT = 65437 console = Console() style = Style.from_dict( @@ -64,13 +64,14 @@ def main(): " * [bold magenta]/CREATE[/] [[bold magenta]canal[/bold magenta]] ---- Crear un canal", " * [bold magenta]/JOIN[/] [[bold magenta]canal[/bold magenta]] ---- Unirse a un canal", " * [bold magenta]/LIST[/] ---- Listar todos los canales", + " * [bold magenta]/USERS[/] ---- Mostrar todos los usuarios en el canal actual", " * [bold magenta]/MSG[/] [[bold magenta]canal[/bold magenta]] [[bold magenta]mensaje[/bold magenta]] ---- Mandar mensaje a un canal", " * [bold magenta]/WHISPER[/] [[bold magenta]nombreUsuario[/bold magenta]] [[bold magenta]mensaje[/bold magenta]] ---- Mandar un mensaje a un usuario", " * [bold magenta]/QUIT[/] [[bold magenta]canal[/bold magenta]] ---- Abandonar un canal", " * [bold magenta]/NAME[/] [[bold magenta]nuevoNombre[/bold magenta]] ---- Cambiar el nombre de usuario", " * [bold magenta]/KICK[/] [[bold magenta]canal[/bold magenta]] [[bold magenta]usuario[/bold magenta]] ---- Expulsar a un usuario del canal", " * [bold magenta]/HELP[/] ---- Mostrar la lista de comandos disponibles", - ] + ] for comando in comandos: console.print(comando) diff --git a/echo-server.py b/echo-server.py index f2cf835..5d6e264 100755 --- a/echo-server.py +++ b/echo-server.py @@ -3,7 +3,7 @@ import sys HOST = "127.0.0.1" -PORT = 65435 +PORT = 65437 TIEMPO_ESPERA = 100 # segundos # Diccionario para almacenar los canales y usuarios @@ -62,6 +62,8 @@ def handle_command(conn, data, addr, username): change_username(conn, input_client, username, addr) elif command == "KICK": kick_user(conn, input_client, username) + elif command == "USERS": + list_users(conn) elif command == "HELP": help_command(conn) # Agregamos el manejo del comando HELP else: @@ -117,6 +119,17 @@ def list_channels(conn): else: message_list = "No hay canales disponibles en este momento." conn.sendall(message_list.encode("utf-8")) + +def list_users(conn): + global users + if users: + message_list = "usuarios disponibles:\n" + for username, info in users.items(): + ip = info["ip"] + message_list += f"{username} (IP: {ip})\n" + else: + message_list = "No hay usuarios disponibles en este momento." + conn.sendall(message_list.encode("utf-8")) def join_channel(conn, input_client, username, addr): @@ -228,16 +241,17 @@ def kick_user(conn, input_client, username): def help_command(conn): comandos = [ - " * [bold magenta]/CREATE[/] [[bold magenta]canal[/bold magenta]] ---- Crear un canal", - " * [bold magenta]/JOIN[/] [[bold magenta]canal[/bold magenta]] ---- Unirse a un canal", - " * [bold magenta]/LIST[/] ---- Listar todos los canales", - " * [bold magenta]/MSG[/] [[bold magenta]canal[/bold magenta]] [[bold magenta]mensaje[/bold magenta]] ---- Mandar mensaje a un canal", - " * [bold magenta]/WHISPER[/] [[bold magenta]nombreUsuario[/bold magenta]] [[bold magenta]mensaje[/bold magenta]] ---- Mandar un mensaje a un usuario", - " * [bold magenta]/QUIT[/] [[bold magenta]canal[/bold magenta]] ---- Abandonar un canal", - " * [bold magenta]/NAME[/] [[bold magenta]nuevoNombre[/bold magenta]] ---- Cambiar el nombre de usuario", - " * [bold magenta]/KICK[/] [[bold magenta]canal[/bold magenta]] [[bold magenta]usuario[/bold magenta]] ---- Expulsar a un usuario del canal", - " * [bold magenta]/HELP[/] ---- Mostrar la lista de comandos disponibles", - ] + " * [bold magenta]/CREATE[/] [[bold magenta]canal[/bold magenta]] ---- Crear un canal", + " * [bold magenta]/JOIN[/] [[bold magenta]canal[/bold magenta]] ---- Unirse a un canal", + " * [bold magenta]/LIST[/] ---- Listar todos los canales", + " * [bold magenta]/USERS[/] ---- Mostrar todos los usuarios en el canal actual", + " * [bold magenta]/MSG[/] [[bold magenta]canal[/bold magenta]] [[bold magenta]mensaje[/bold magenta]] ---- Mandar mensaje a un canal", + " * [bold magenta]/WHISPER[/] [[bold magenta]nombreUsuario[/bold magenta]] [[bold magenta]mensaje[/bold magenta]] ---- Mandar un mensaje a un usuario", + " * [bold magenta]/QUIT[/] [[bold magenta]canal[/bold magenta]] ---- Abandonar un canal", + " * [bold magenta]/NAME[/] [[bold magenta]nuevoNombre[/bold magenta]] ---- Cambiar el nombre de usuario", + " * [bold magenta]/KICK[/] [[bold magenta]canal[/bold magenta]] [[bold magenta]usuario[/bold magenta]] ---- Expulsar a un usuario del canal", + " * [bold magenta]/HELP[/] ---- Mostrar la lista de comandos disponibles", + ] help_message = "Ulitice estos comandos para moverse por el chat:\n" + "\n".join( comandos )