Home

Awesome

ArqClienteServidorWeb

Escuela Superior Politécnica del Litoral Version 1.0 15/08/2017

1 - Descripción

Este programa permite monitoriar los puertos USB de nuestra computadora, detectar la conexión de nuevos dispositivos USB a traves de un proceso(daemon). Un servidor web solicitará dicha información a este proceso para responder a las solicitudes realizadas por un cliente (escrito en python).

El cliente será capaz de solicitar :

2 - Instalación

Para en funcionamiento de este programa es necesario contar con las siguientes librerias:

sudo apt-get install libudev-dev
sudo apt-get install libmicrohttpd*
sudo pip install request
pip install requests

Para crear los ejecutables se disponible de una archivo makefile que le facilitará el trabajo. para la crear el ejecutable del daemonUSB y el servidor web.

make

3 - Modo de uso general

El daemon por defecto escuchará las solicitudes servidor web por el puerto número 8888 Este proceso se encargará de responder las solicitudes del servidor web.

./bin/USB-daemon

El servidor web actuará de intermediara entre el cliente y el proceso daemon. Recibe la solicitud del cliente, la procesa y envia la solicutud al proceso daemon, luego recibe respuesta del daemon de la solicitud realiza, la procesa y la envia al cliente. Al ejecutarlo se debe enviar de parametro el puerto . debe ser diferente al puerto 8888 con el cual esta escuchando el procesodaemon.

./bin/ServidorWeb 8889

No cerrar esta terminal.

Una vez realizado esto. Se pueden realizar solicitudes desde el cliente python.

Formato general solicitud. El puerto debe ser mismo que se agregó de parametro al ejecutar el servidor web.

python ./bin/cliente.py <puerto| 8889> <metodo> <tipo solicitud> <arg 1> <arg 2>.....<arg n>

Permite obtener una lista detallada de todos los dispositivos USB conectados

python ./src/cliente.py <puerto|8889> GET listar_dispositivos

ejemplo:

python ./src/cliente.py 8889 GET listar_dispositivos

Permite asignar un nombre a un particular dispositivo USB para manejarlo de una mejor manera en futuras solicitudes.

python ./src/cliente.py <puerto|8889> POST nombrar_dispositivo <nodo> <nombre>

ejemplo:

python ./src/cliente.py 8889 POST nombrar_dispositivo  /dev/sdb david21

Asumiendo que existe un dispositivo en /dev/sda1 y que se encuentra en la lista obtenida en la anterior solicitud.

python ./src/cliente.py <puerto|8889> GET leer_archivo <nombre usb> <nombre archivo>

ejemplo:

python ./src/cliente.py 8889 GET leer_archivo david21 comoserproenC.txt

Permite crear y escribir un archivo/fichero en un dispositivo USB nombrado previamente. Se debe especifica el fichero que se quiere escribir.

python ./src/cliente.py <puerto|8889> POST escribir_archivo <nombre usb> <nombre archivo>

ejemplo:

python ./src/cliente.py 8889 POST escribir_archivo david21 programador.txt

**** este tipo de solicitud presenta cierto problemas. se recomienda en cada de caiga del servidor. generar de nuevo los ejecutables(make) y luego ejecutar el servidorweb

Adicional a esto existe un script clientep.py que permite verificar otro tipos de solicitudes y sus respectivas validacion de parte del servidor.En caso que lo requieran.

ps -A | grep USB-daemon

Al ejecutar esa línea se le mostrará una lista de los dispositivos que se ajusten a ese nombre. identifique el numero (pid) del proceso llamado USB-daemon.

kill -TERM <NUMERO PID>

4 - Autores