LSID
Universidad de Almería
Laboratorio de
Sistemas de Información Distribuidos

 


PRACTICAS

Práctica 1
Práctica 2
Práctica 3
 
 
 
 
 
 
 
 
 
 

ooooooooooooooo



Práctica 2: Un broker de una lista de distribución

En esta práctica vamos a implemetar un broker o gestor de correo electrónico de una lista de distribución. La idea consiste en disponer de un componente servidor que hace las tareas de un broker de correo y que ofrece diferentes servicios (operaciones) a sus clientes:

  • suscribirse a una lista de distribución, 
  • darse de baja,
  • mostrar miembros registrados de la lista,
  • comprobar correo en la lista, y
  • enviar mensajes a la lista.
Suponemos que la lista de distribución será de estilo broadcasting o de difusion total, es decir, el mensaje que se envia a la lista será difundido al resto de los miembros suscritos a la listas cuando estos comprueben su correo. Suponemos que un usuario puede estar registrado en distintos Brokers de correo.

Desde el lado cliente, debemos implementar un componente que por ejemplo se llame: BrokerCliente. Como único argumento de entrada debemos indicar el nombre de la máquina que contiene el broker de correo donde deseamos conectarnos. Luego, debemos indicar la operacion que desamos realizar (subscribe, unsuscribe, list, receive, compose) junto con sus parametros, si procede. 

Por ejemplo, imaginemos que deseamos darnos de alta en el broker de correo activo en la maquina lab105. Para ello debemos introducir la orden:

BrokerCliente lab105

Tras escribir esto, en la siguiente linea, debera indicar si se ha establecido la conexion. Por ejemplo, puede ser que el BrokerServidor este desactivado, o nos hemos equivocado al introducir el nombre destino. En tal caso nos deberia permitir introducir ahora el nombre de los servicios que acepta el destino.
 

Registrar un cliente: subscribe.

Un cliente podrá darse de alta (registrarse) en la lista de distribución de un gestor de correo de la siguiente forma: 

subscribe alias

Por ejemplo, supongamos que deseamos darnos de alta en el Broker de lab105 --para lo cual previamente hemos entrado de la forma anterior-- e introducimos ahora: 

 subscribe Luis Iribarne

El servidor deberá recoger estar orden y registar el alias 'Luis Iribarne'. Esta operación hace registrar en el BrokerServidor al usuario Luis Iribarne. Como puede imaginar, esto supone varias tareas para el componente servirdor, por ejemplo, debemos comprobar que no existe el usuario, si existe debemos enviar un mensaje de error al cliente, y si no existe debemos incluirlo en el archivo de registro de los usuarios.

Dar de baja a un usuario: unsubscribe.

Un cliente podrá darse de alta (registrarse) en la lista de distribución de un gestor de correo de la siguiente forma: 

unsubscribe alias

Esta operacion hace eliminar el usuario determinado por alias. Antes, el servidor deberá comprobar que este existe en el archivo de registro.

Mostrar los usuarios registrados:  list.

Podremos consultar los usuarios registrados en un BrokerServidor con solo introducir la orden list. En componente servidor deberá enviar un listado de todos los usuarios registrados (piense el metodo a seguir).

Escribir un mensaje a la lista:  compose.

Cada vez que deseemos escribir un mensaje, debemos iniciarlo con la orden compose, seguido de un espacio en blanco y seguido del texto que vamos a enviar (este no debera ser superior a 200 caracteres, por limitaciones de espacio). Como se ha indicado, los mensajes serán difundidos a todos los usuarios de la lista. Por ejemplo, si el BrokerServidor recibe un mensaje de la forma:

compose Hola mundo

este entiende que es un texto de correo pues comienza con la orden 'compose'. El resto del mensaje deberá almacenarse en un archivo de tipo texto para que despues sea enviado a sus clientes. Para hacer esto, podemos llevar un archivo de seguimiento con todos los usuarios que aun no han leido el correo (piense una solución para realizar esto). Cada mensaje enviado se puede almacenar en un archivo de texto independiente o en un solo archivo de texto donde se le asigne un código a cada mensaje (o cualquier otra solución que crea mejor).

Comprobar el correo: receive.

Para comprobar si tenemos correo en la lista lo podremos hacer con la orden receive. Esto supone distintas tareas desde el lado servidor y está muy ligado a la orden anterior. Cada vez que el BrokerServidorrecibe una orden receive debe saber qué cliente (usuario registrado) lo ha solicitado para comprobar en el archivo de seguimiento si ha leido el/los mensaje/s. Evidentemente, el/los mensaje/s será elminado/s cuando haya sido leido por todos los usuarios de la lista.

Algunas restricciones del ejercicio.
 

  • Para realizar el ejercicio puede hacer las pruebas en su propia máquina y dar de alta a distintos usuarios de prueba. 
  • Deberá implementar el código: BrokerCliente y BrokerServidor.
  • Se deja completa libertad al alumno para que analice, diseñe e implemente el ejercicio propuesto. El BrokerCliente sólo admitirá una operación con el BrokerServidor (ver ejemplos). Al final del mismo se valorará la capacidad para abordar dicho problema (resuelto por completo o no). 
  • Puede incorporar al ejercicio tantas mejoras como desee.
Algunas ideas... desde el cliente.

1. Para registrarse en lab105

BrokerCliente lab105
Conexion permitida...
Introduzca operacion:
subscribe Luis
<< suscripcion realizada con exito
Fin
2. Para elimarse de la lista lab105
BrokerCliente lab105
Conexion permitida...
Introduzca operacion:
unsubscribe Luis
<< usuario identificado: suscripcion eliminada. Gracias.
Fin
3. Para mostar los usuarios del Broker lab105
BrokerCliente lab105
Conexion permitida...
Introduzca operacion:
list
<< los usuarios registrados son:
1. Pepito
2. Juanita
3. Luis
4. Rigoberta Salas
Fin


LSID
, Laboratorio de Sistemas de Información Distribuidos

Departamento de Informática
Universidad de Almeria, España
Luis.Iribarne@ual.es