Este proyecto es una API REST para la gestión de IPs maliciosas en redes TOR. La API permite obtener, excluir, filtrar IPs, junto con otros endpoints, así como gestionar la autenticación y auditoría/logs de las solicitudes. Incluye un esquema de permisos que distingue entre usuarios normales y administradores.
Prueba funcional Endpoints
en video: Ver Video
Demostración Entorno venv
y Docker
- Solución Cloud GCP: Ver Documento
-
Django: Framework web para Python que se usa para desarrollar la API.
-
Django REST Framework: Extensión de Django para construir APIs RESTful.
-
JWT (JSON Web Tokens): Para la autenticación de usuarios.
-
Docker: Para la contenerización de la aplicación.
-
Docker Compose: Para la orquestación de contenedores Docker.
-
PostgreSQL: La base de datos relacional implementada para almacenar la información de Ip's Excluidas.
-
Python 3.x
-
Docker
-
Docker Compose
- Clona el repositorio:
git clone https://github.com/JFOZ1010/Challenge-BISO.git
cd Challenge-BISO
- Configura y corre la instancia de Docker:
- Tener
Docker
yDocker Compose
instalados. - Corremos docker-compose:
- docker-compose up --build
- Tener
- Accedemos a la API:
- La API estará disponible en
http://localhost:8000/
- La API estará disponible en
GET /admin/
- Acceso al panel de administración de Django. No requiere autenticación.GET /docs/
- Documentación de la API. No requiere autenticación.GET /redocs/
- Otra vista de la documentación. No requiere autenticación.
Para poder generar un token JWT, es necesario autenticarse como uno de los siguientes usuarios:
Usuario Administrador:
- Nombre de usuario: useradmin
- Contraseña: adminadmin2001
Usuario Normal:
- Nombre de usuario: usernormal
- Contraseña: useruser2001
POST /auth/token/
- Genera un token de autenticación JWT.POST /auth/token/refresh/
- Refresca el token JWT.POST /auth/token/verify/
- Verifica la validez de un token JWT.
-
POST /getterIPS/post-excluded-ips/
- Excluye una IP de la lista.- Formato de solicitud:
{"ip": ""}
- Formato de solicitud:
-
DELETE /getterIPS/delete-excluded-ip/<str:ip_address>/
- Elimina una IP excluida. -
PUT /getterIPS/update-excluded-ip/
- Actualiza una IP excluida.- Formato de solicitud:
{"old_ip": "", "new_ip": ""}
- Formato de solicitud:
GET /getterIPS/get-tor-ips/
- Obtiene todas las IPs de TOR.GET /getterIPS/get-filtered-ips/
- Obtiene todas las IPs excepto las excluidas.GET /getterIPS/count_excluded_ips/
- Cuenta las IPs excluidas.GET /getterIPS/ip_stats/
- Obtiene estadísticas de las IPs.GET /getterIPS/count-all-ips/
- Cuenta todas las IPs.
curl -X GET http://localhost:8000/getterIPS/get-tor-ips/ -H "Authorization: Bearer <token_jwt>"
curl -X POST http://localhost:8000/getterIPS/post-excluded-ips/ -H "Authorization: Bearer <token_jwt>" -H "Content-Type: application/json" -d '{"ip": "1.2.3.4"}'
curl -X DELETE http://localhost:8000/getterIPS/delete-excluded-ip/1.2.3.4/ -H "Authorization: Bearer <token_jwt>"
curl -X PUT http://localhost:8000/getterIPS/update-excluded-ip/ -H "Authorization: Bearer <token_jwt>" -H "Content-Type: application/json" -d '{"old_ip": "1.2.3.4", "new_ip": "5.6.7.8"}'
curl -X GET http://localhost:8000/getterIPS/get-filtered-ips/ -H "Authorization: Bearer <token_jwt>"
curl -X GET http://localhost:8000/getterIPS/count_excluded_ips/ -H "Authorization: Bearer <token_jwt>"
-
Propiedad: Todos los derechos de propiedad intelectual sobre el código permanecen con Juan Felipe Osorio.
-
Contacto: Para cualquier consulta relacionada con el uso de este código, por favor contactarse conmigo a [email protected]
Muchas Gracias!
Happy Hacking! :D