Servidor con registro de usuarios, inicio de sesión con contraseñas hasheadas y gestión de tareas. Cliente de consola incluido.
Tecnologías
Lenguaje principal para el servidor y el cliente de consola.
Framework web ligero para construir la API REST con endpoints JSON y HTML.
Base de datos embebida para persistir usuarios. Sin configuración externa.
Hashing de contraseñas con scrypt + salt aleatorio. Nunca texto plano.
API
| Método | Ruta | Descripción | Auth |
|---|---|---|---|
| POST | /registro | Registra un nuevo usuario con contraseña hasheada | No |
| POST | /login | Verifica credenciales del usuario | No |
| GET | /tareas | Muestra página HTML de bienvenida | Basic Auth |
Ejemplo — Registrar usuario
curl -X POST http://localhost:5000/registro \
-H "Content-Type: application/json" \
-d '{"usuario": "manu4", "contraseña": "1234"}'
Ejemplo — Iniciar sesión
curl -X POST http://localhost:5000/login \
-H "Content-Type: application/json" \
-d '{"usuario": "manu4", "contraseña": "1234"}'
Ejemplo — Ver tareas (con auth)
curl -u manu4:1234 http://localhost:5000/tareasGuía
git clone https://github.com/jmgasbarro/Redes-PFO2.git
cd Redes-PFO2
pip install -r requirements.txtpython servidor.pyEl servidor se ejecuta en localhost:5000
python cliente.pySe abrirá un menú interactivo con opciones para registrarse, loguearse y ver tareas.
Demostración
Al ejecutar servidor.py, se
muestra el mensaje de inicio:
Al ejecutar cliente.py, se
presenta un menú interactivo:
Registra un nuevo usuario proporcionando nombre y contraseña.
Verifica credenciales enviando un POST a
/login.
Accede a /tareas usando HTTP Basic
Auth y muestra el HTML.
Al elegir la opción 3, se accede a la página HTML con el cartel de BIENVENIDO y las tareas cargadas.
La opción 4 cierra el cliente.
Teoría
usuarios.db)..db se copia y mueve fácilmente.sqlite3 viene integrado en la biblioteca
estándar.Estructura
Redes-PFO2/
├── servidor.py # API Flask (servidor)
├── cliente.py # Cliente de consola
├── requirements.txt # Dependencias
├── templates/
│ └── tareas.html # Página HTML de bienvenida
├── usuarios.db # Base de datos (se genera al ejecutar)
├── index.html # Documentación (GitHub Pages)
└── README.md