# Django IP Debug Middleware
![](https://img.shields.io/github/created-at/oguerrerog/django-ip-debug) ![](https://img.shields.io/github/last-commit/oguerrerog/django-ip-debug) ![](https://img.shields.io/github/stars/oguerrerog/django-ip-debug?style=flat-square)
**Middleware** que habilita el modo **DEBUG** en Django **EXCLUSIVAMENTE** a **ciertas IPs o rangos de IPs** definidos en **settings.py**, útil para análisis o auditoría para despliegues de desarrollo y/o producción de proyectos Django.
Esto evita la tarea de modificar la configuración del proyecto cada vez que se necesite habilitar o deshabilitar el modo DEBUG, lo que permite a los desarrolladores y equipos de auditoría o pruebas acceder a información de depuración detallada y resolver problemas de forma eficiente, al mismo tiempo que se mantiene la seguridad del sitio web al restringir el acceso a esta información **solo a direcciones IP confiables**.
## 🤓 Advertencia
Modificar el valor de DEBUG en tiempo de ejecución no es una práctica recomendada. DEBUG en Django está pensado para ser una configuración estática y se espera que su valor se establezca al inicio de la aplicación. Cambiarlo en tiempo de ejecución puede llevar a comportamientos inesperados.
Considerar el uso de esta herramienta solo para efectos de depuración, integraciones que necesiten un sitio en producción, testing, etc.
## 🔎 Características
- Habilita o deshabilita el modo DEBUG según la IP del cliente.
- Soporta IPs individuales y rangos de IPs usando notación CIDR.
- Fácil integración con settings de Django.
## 💡 Requerimientos
- Django 4.2 o superior
- Python 3.9 o superior
## 📲 Instalación
1) Instala la librería desde pip:
```bash
pip install django-ip-debug
```
2) Agrega la ruta del Middleware a tu archivo **settings.py**:
```python
MIDDLEWARE = [
'ip_debug.middleware.IPDebugMiddleware',
# Otros middlewares...
]
```
3) Define las variables a tu archivo **settings.py**:
```python
# Establecer DEBUG en False
DEBUG = False
# Habilita o deshabilita el middleware IPDebugMiddleware (django-ip-debug)
DEBUG_IP_ENABLED = True
# Lista de IPs Permitidas, puedes agregar rangos de IP con notación CIDR
DEBUG_IP_ALLOWED = ['127.0.0.1', '192.168.0.50', '192.168.1.0/24']
# Lista de Proxies autorizados, este ejemplo contiene la lista de Cloudflare
DEBUG_IP_TRUSTED_PROXIES = [
'173.245.48.0/20',
'103.21.244.0/22',
'103.22.200.0/22',
'103.31.4.0/22',
'141.101.64.0/18',
'108.162.192.0/18',
'190.93.240.0/20',
'188.114.96.0/20',
'197.234.240.0/22',
'198.41.128.0/17',
'162.158.0.0/15',
'104.16.0.0/13',
'104.24.0.0/14',
'172.64.0.0/13',
'131.0.72.0/22'
]
```
## 📚 Versiones
- 0.1.0: Primer Commit
- 0.1.1: Se implementa función para detectar correctamente la dirección IP.
- 0.1.2: Corrección de Errores.
- 0.1.3: Mejoras Globales.
- 0.1.4: Mejoras para CIDR.
- 0.1.5: Fix setup.py
- 0.1.6: Fix URL setup.py
## 😜 Agradecimientos
Agradecimientos especiales a [MercadoPago](https://github.com/mercadopago "MercadoPago"), ese maravilloso y extraordinario servicio de pagos en línea que me "regalo" la emocionante oportunidad de enfrentarme a la "divertida" tarea de crear un entorno de producción/desarrollo solo para integrarme con ellos (es inevitable). Así que, lleno de "inspiración" (y tal vez un poco de desesperación), me lancé a la emocionante aventura de crear mi primer middleware para poder "debugear" mi proceso de integración y mantener mi cordura intacta ante la preocupación de tener el DEBUG disponible para todo el mundo.
Desde hoy dormiré en paz y sin despertar a medianoche preocupado tratando de recordar si deje en el setting.py el debug en "**False**". xD
Raw data
{
"_id": null,
"home_page": "https://github.com/oguerrerog/django-ip-debug",
"name": "django-ip-debug",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "debug django",
"author": "Oscar Guerrero G.",
"author_email": "oguerrerog@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/5b/b8/179b03162fd61bf628eb22f87e44784b17df0b11ebec64d1f7bc410ed56b/django_ip_debug-0.1.6.tar.gz",
"platform": null,
"description": "# Django IP Debug Middleware\r\n![](https://img.shields.io/github/created-at/oguerrerog/django-ip-debug) ![](https://img.shields.io/github/last-commit/oguerrerog/django-ip-debug) ![](https://img.shields.io/github/stars/oguerrerog/django-ip-debug?style=flat-square)\r\n\r\n**Middleware** que habilita el modo **DEBUG** en Django **EXCLUSIVAMENTE** a **ciertas IPs o rangos de IPs** definidos en **settings.py**, \u00fatil para an\u00e1lisis o auditor\u00eda para despliegues de desarrollo y/o producci\u00f3n de proyectos Django.\r\n\r\nEsto evita la tarea de modificar la configuraci\u00f3n del proyecto cada vez que se necesite habilitar o deshabilitar el modo DEBUG, lo que permite a los desarrolladores y equipos de auditor\u00eda o pruebas acceder a informaci\u00f3n de depuraci\u00f3n detallada y resolver problemas de forma eficiente, al mismo tiempo que se mantiene la seguridad del sitio web al restringir el acceso a esta informaci\u00f3n **solo a direcciones IP confiables**.\r\n\r\n## \ud83e\udd13 Advertencia\r\nModificar el valor de DEBUG en tiempo de ejecuci\u00f3n no es una pr\u00e1ctica recomendada. DEBUG en Django est\u00e1 pensado para ser una configuraci\u00f3n est\u00e1tica y se espera que su valor se establezca al inicio de la aplicaci\u00f3n. Cambiarlo en tiempo de ejecuci\u00f3n puede llevar a comportamientos inesperados.\r\n\r\nConsiderar el uso de esta herramienta solo para efectos de depuraci\u00f3n, integraciones que necesiten un sitio en producci\u00f3n, testing, etc. \r\n\r\n## \ud83d\udd0e Caracter\u00edsticas\r\n- Habilita o deshabilita el modo DEBUG seg\u00fan la IP del cliente.\r\n- Soporta IPs individuales y rangos de IPs usando notaci\u00f3n CIDR.\r\n- F\u00e1cil integraci\u00f3n con settings de Django.\r\n\r\n## \ud83d\udca1 Requerimientos\r\n- Django 4.2 o superior\r\n- Python 3.9 o superior\r\n\r\n## \ud83d\udcf2 Instalaci\u00f3n\r\n1) Instala la librer\u00eda desde pip:\r\n\r\n```bash\r\npip install django-ip-debug\r\n```\r\n\r\n2) Agrega la ruta del Middleware a tu archivo **settings.py**:\r\n```python\r\nMIDDLEWARE = [\r\n 'ip_debug.middleware.IPDebugMiddleware',\r\n # Otros middlewares...\r\n]\r\n```\r\n\r\n3) Define las variables a tu archivo **settings.py**: \r\n```python\r\n# Establecer DEBUG en False\r\nDEBUG = False\r\n\r\n# Habilita o deshabilita el middleware IPDebugMiddleware (django-ip-debug)\r\nDEBUG_IP_ENABLED = True\r\n\r\n# Lista de IPs Permitidas, puedes agregar rangos de IP con notaci\u00f3n CIDR\r\nDEBUG_IP_ALLOWED = ['127.0.0.1', '192.168.0.50', '192.168.1.0/24']\r\n\r\n# Lista de Proxies autorizados, este ejemplo contiene la lista de Cloudflare\r\nDEBUG_IP_TRUSTED_PROXIES = [\r\n '173.245.48.0/20',\r\n '103.21.244.0/22',\r\n '103.22.200.0/22',\r\n '103.31.4.0/22',\r\n '141.101.64.0/18',\r\n '108.162.192.0/18',\r\n '190.93.240.0/20',\r\n '188.114.96.0/20',\r\n '197.234.240.0/22',\r\n '198.41.128.0/17',\r\n '162.158.0.0/15',\r\n '104.16.0.0/13',\r\n '104.24.0.0/14',\r\n '172.64.0.0/13',\r\n '131.0.72.0/22'\r\n]\r\n```\r\n\r\n## \ud83d\udcda Versiones\r\n- 0.1.0: Primer Commit\r\n- 0.1.1: Se implementa funci\u00f3n para detectar correctamente la direcci\u00f3n IP.\r\n- 0.1.2: Correcci\u00f3n de Errores.\r\n- 0.1.3: Mejoras Globales.\r\n- 0.1.4: Mejoras para CIDR.\r\n- 0.1.5: Fix setup.py\r\n- 0.1.6: Fix URL setup.py\r\n\r\n## \ud83d\ude1c Agradecimientos\r\nAgradecimientos especiales a [MercadoPago](https://github.com/mercadopago \"MercadoPago\"), ese maravilloso y extraordinario servicio de pagos en l\u00ednea que me \"regalo\" la emocionante oportunidad de enfrentarme a la \"divertida\" tarea de crear un entorno de producci\u00f3n/desarrollo solo para integrarme con ellos (es inevitable). As\u00ed que, lleno de \"inspiraci\u00f3n\" (y tal vez un poco de desesperaci\u00f3n), me lanc\u00e9 a la emocionante aventura de crear mi primer middleware para poder \"debugear\" mi proceso de integraci\u00f3n y mantener mi cordura intacta ante la preocupaci\u00f3n de tener el DEBUG disponible para todo el mundo.\r\n\r\nDesde hoy dormir\u00e9 en paz y sin despertar a medianoche preocupado tratando de recordar si deje en el setting.py el debug en \"**False**\". xD\r\n",
"bugtrack_url": null,
"license": "MIT license",
"summary": "Middleware que habilita DEBUG solo para IPs Autorizadas en Proyectos Django",
"version": "0.1.6",
"project_urls": {
"Download": "https://github.com/oguerrerog/django-ip-debug/archive/refs/tags/v0.1.6.tar.gz",
"Homepage": "https://github.com/oguerrerog/django-ip-debug"
},
"split_keywords": [
"debug",
"django"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5bb8179b03162fd61bf628eb22f87e44784b17df0b11ebec64d1f7bc410ed56b",
"md5": "129235da0623a14a06ec891d6642df98",
"sha256": "c366aef114d701b074beb847417c78ba4895ddd110431c8b7ad7329831a624d0"
},
"downloads": -1,
"filename": "django_ip_debug-0.1.6.tar.gz",
"has_sig": false,
"md5_digest": "129235da0623a14a06ec891d6642df98",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 5612,
"upload_time": "2024-09-13T04:50:41",
"upload_time_iso_8601": "2024-09-13T04:50:41.562198Z",
"url": "https://files.pythonhosted.org/packages/5b/b8/179b03162fd61bf628eb22f87e44784b17df0b11ebec64d1f7bc410ed56b/django_ip_debug-0.1.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-13 04:50:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "oguerrerog",
"github_project": "django-ip-debug",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "django-ip-debug"
}