Cliente / Servidor de FTP

Anuncio
Programación Avanzada – Curso 2003 / 2004 –
Práctica obligatoria
CLIENTE / SERVIDOR de FTP
COMENTARIOS
•
•
•
•
•
•
La práctica es individual.
Todas las prácticas entregadas deben ser totalmente funcionales. ¡No se corregirán prácticas que no
funcionen!.
La práctica se valorará sobre 10 puntos. Para aprobar la práctica, será necesario obtener una calificación
>= 5.
Las prácticas dudosas deberán ser defendidas ante el profesor. (Se habilitará un aula y un horario para la
defensa).
Se deberá entregar documentación impresa que incluirá:
- Portada e índice de la documentación.
- Manual de usuario de la aplicación comentando los comandos implementados, (se
deberán documentar en un punto separado las ampliaciones realizadas).
- Manual del programador comentando aspectos relevantes de la aplicación: cómo se
realiza la trasmisión de ficheros, clases y métodos de especial relevancia, etc.
- Código fuente impreso.
Deberá acompañar a la documentación impresa un disquete de 3½ con la siguiente estructura de
directorios:
A:\------ alumno.txt (nombre, DNI, grupo de prácticas, ¿repetidor? SI/NO).
- notas.txt (cualquier aclaración que se desee hacer constar).
- proa0304.doc (fichero de documentación).
- cFTP <DIR> (ficheros del cliente de ftp).
- sFTP <DIR> (ficheros del servidor de ftp).
- sLOG <DIR> (ficheros del servidor de logs).
- ayuda <DIR> (ficheros generados con javadoc).
OBJETIVO
El objetivo es desarrollar un conjunto de dos aplicaciones (cliente y servidor) que posibiliten la transmisión
de ficheros entre máquinas distintas (FTP simplificado).
La ejecución de los programas cliente y servidor será como sigue:
java ServidorFTP <puerto>
java ClienteFTP <direccion_de_destino> <puerto>
REQUISITOS MÍNIMOS
El servidor de FTP debe ser no bloqueante, se implementará utilizando programación multihilo (deberá dar
servicio a múltiples clientes conectados al mismo tiempo).
Se utilizará el entorno MS-DOS para su ejecución. Como referencia puede servir el comando FTP del
sistema operativo Windows.
Se deberán implementar obligatoriamente los siguientes comandos:
PUT <nombre_de_archivo>
Copia al servidor el fichero especificado.
GET <nombre_de_archivo>
Copia en el cliente el fichero especificado.
RCD <ruta_relativa_de_directorio>
Remote CD. Cambia en el servidor el directorio por defecto. Sin parámetros muestra el
directorio actual. “RCD ..” sube un nivel en la jerarquía de directorios.
LCD <ruta_relativa_de_directorio>
Local CD. Cambia en el cliente el directorio por defecto. Sin parámetros muestra el directorio
actual. “LCD ..” sube un nivel en la jerarquía de directorios.
RMD < directorio>
Remote MD. Crea el directorio especificado en el directorio actual de la máquina remota.
LMD <directorio>
Local MD. Crea el directorio especificado en el directorio actual la máquina local.
RDIR
Remote DIR. Muestra un listado de archivos y directorios del directorio actual del servidor.
LDIR
Local DIR. Muestra un listado de archivos y directorios del directorio actual del cliente.
HELP
Lista los comandos implementados. HELP <comando> devuelve ayuda concreta sobre el
comando seleccionado.
EXIT
Termina la sesión con el usuario actual.
El servidor FTP se comunicará mediante RMI con un servidor de logs que mantendrá una base de datos
utilizando JDBC y mySQL. El nombre de la base de datos será serv_ftp, y tendrá la siguiente estructura
inicial:
# MySQL dump 8.9
#
# Table structure for table 'logs'
CREATE TABLE logs (
comando char(50)
);
# Table structure for table 'users'
CREATE TABLE users (
usuario char(10),
password char(10)
);
El servidor sólo debe dar servicio a usuarios registrados, para ello se deberá implementar un comando de
identificación de usuario:
LOGIN <login_usuario> <password_usuario>
Chequea en la base de datos serv_ftp, si existe una entrada en la tabla users con el usuario y la
password suministrados.
Cuando un usuario autorizado entra en el sistema, el directorio actual del servidor debe ser
sFTP\<login_usuario>. Si este directorio no existiera, deberá crearse. No se deberá permitir al usuario
navegar por directorios superiores a su directorio raiz.
Para cada comando que ejecute el servidor FTP, se comunicará con el servidor de logs que añadirá una
entrada en la tabla logs de la base de datos serv_ftp con la siguiente información:
usuario;fecha_y_hora;comando_ejecutado
En concreto, cuando un usuario intente conectarse (comando login) se deberá incluir una entrada en la tabla
logs de la base de datos serv_ftp con la siguiente información:
usuario;fecha_y_hora;password_suministrada
ARQUITECTURA DEL SISTEMA
THREADS
put, ...
Cliente de FTP
SOCKETS
get, ...
check login
Servidor de Logs
JDBC
Servidor de FTP
write log
RMI
SERV_FTP
STREAMS
POSIBLES AMPLIACIONES
Se valorará positivamente (incremento de la nota base) cualquier ampliación a los requisitos mínimos
especificados. Las posibles ampliaciones a realizan son:
1. Ampliación del rango de comandos permitidos:
- RVIEW y LVIEW <nombre_de_archivo>: Visualiza por pantalla el contenido del
fichero.
- RDEL y LDEL <nombre_de_archivo_o_directorio>: Borra el archivos o directorio
especificado.
- RREN y LREN <nombre_de_archivo_o_directorio> <nuevo_nombre>: Cambia el
nombre del archivo o directorio especificado.
2. Implementación del comando SYNCHRONIZE. Permite para los 2 directorios actuales (local y
remoto) tener siempre las versiones más recientes de los ficheros. No es recursivo.
3. Impresión de estadísticas sobre transmisión de ficheros, (tamaño, velocidad de transferencia,
tiempo estimado de finalización). La información suministrada debe ser adaptativa.
4. Implementación de un usuario especial en el servidor (login root) que puede realizar labores de
administración (borrar las entradas de la tabla de logs, borrar o insertar usuarios, listar logs y
usuarios, etc).
CALIFICACIÓN
La nota de la práctica que implemente los requisitos mínimos es un 6. Cada ampliación de las comentadas en
el punto anterior suma 1 punto más.
CONSIDERACIONES ADICIONALES
•
El correcto funcionamiento de la práctica se probará en el propio disquete que entregue el alumno.
•
No es necesario copiar en el disquete la base de datos (serv_ftp) ni el controlador JDBC para mySQL,
puesto que estarán correctamente instalados y configurados en el ordenador destinado la evaluación de
las prácticas.
•
Las prácticas que no respeten la estructura de directorios del disquete NO SERÁN EVALUADAS.
•
La fecha tope para al entrega de prácticas vendrá establecida por el día y la hora del examen teórico de la
asignatura en cada convocatoria.
Descargar