Skip to content

Releases: Osvaldo-Net/Lince

v4.0.3

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 09 Sep 05:08
d4499d6

What's Changed (Maintenance release)

  • Update pip requirement from >=26.2 to >=26.2.1 by @dependabot[bot] in #5
  • Bump python from 3.14.6-alpine3.24 to 3.14.7-alpine3.24 by @dependabot[bot] in #4

¿Qué cambió? (Mantenimiento de dependencias)

  • Se actualizó el requisito de pip de >=26.2 a >=26.2.1 por @dependabot[bot] en #5
  • Se actualizó la imagen de Python de 3.14.6-alpine3.24 a 3.14.7-alpine3.24 por @dependabot[bot] en #4

Full Changelog: v4.0.2...v4.0.3

v4.0.2

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 10 Aug 16:10
ea46681

What's Changed

  • Minor improvements to the web interface.
  • Update pip requirement from >=26.1.2 to >=26.2 by @dependabot[bot] in #2

Cambios en esta versión

  • Algunas mejoras menores en la interfaz web.
  • Se actualiza el requisito de pip de >=26.1.2 a >=26.2 por @dependabot[bot] en #2

New Contributors

Full Changelog: v4.0.1...v4.0.2

v4.0.1

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 25 Jul 05:14
3eca821

What changed?

  1. Replaced the static default admin account with a randomly generated password shown once in the container logs on first startup
  2. Default admin username changed to lince@admin.com
  3. Forces password change on first login
  4. Added rate limiting to /api/scan and /api/puertos to prevent abuse
  5. Split database schema setup (init_db.py) from admin account creation (auth.py) for clarity

¿Qué cambió?

  1. Se reemplazó la cuenta admin estática por una contraseña generada aleatoriamente, mostrada una sola vez en los logs del contenedor en el primer arranque
  2. El usuario admin por defecto cambió a lince@admin.com
  3. Se fuerza el cambio de contraseña en el primer inicio de sesión
  4. Se agregó rate limiting a /api/scan y /api/puertos para evitar abuso
  5. Se separó la creación del esquema de la base de datos (init_db.py) de la creación del usuario admin (auth.py) para mayor claridad

Full Changelog: v4.0...v4.0.1

v4.0

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 06 Jul 04:23
161687d

¿Qué cambió?

Cambio de nombre: LANGuard → Lince, debido a la cantidad de aplicaciones encontradas con el mismo nombre.

Nuevo ícono de la app.

Rediseño de la interfaz web.

** IMPORTANTE:** Cambio de imagen de Docker. Actualiza tu docker-compose.yml:

  - image: netosvaltools/languard:latest
  + image: netosvaltools/lince:latest

A partir de este release, la imagen netosvaltools/languard dejará de funcionar/actualizarse. Debes migrar a netosvaltools/lince.

Nuevo soporte de SSO vía OIDC, con nuevas variables de entorno. Consulta la sección OIDC en el README para configurarlo.

Los mensajes de Telegram ahora se envían en el idioma seleccionado en la interfaz gráfica.

Actualización de dependencias:

  • pip 25.4 → 26.1.2
  • Werkzeug 3.1.6 → 3.1.8

What changed?

Renamed: LANGuard → Lince, due to the number of other apps found with the same name.

New app icon.

Web interface redesign.

IMPORTANT: Docker image changed. Update your docker-compose.yml:

  - image: netosvaltools/languard:latest
  + image: netosvaltools/lince:latest

Starting from this release, the netosvaltools/languard image will stop working/receiving updates. You must migrate to netosvaltools/lince.

New SSO support via OIDC, with new environment variables. See the OIDC section in the README for setup details.

Telegram messages are now sent in the language selected in the web UI.

Dependency updates:

  • pip 25.4 → 26.1.2
  • Werkzeug 3.1.6 → 3.1.8

Full Changelog: v.3.1.4...v4.0

v.3.1.4

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 01 Jul 20:14
aa1ffb7

¿Qué cambió?

  • Imagen base de Python actualizada a 3.14.6-alpine3.24
  • index.html segmentado en partials Jinja2 (_sidebar, _topbar, _stats, _device_table, _panel_historial, _panel_confiables, _panel_perfil, _modal_config, _modal_puertos) para facilitar el mantenimiento
  • Sistema de traducciones migrado de un objeto JS monolítico a archivos JSON cargados por fetch
  • Francés (fr) añadido como tercer idioma disponible
  • Tarjetas de estadísticas rediseñadas.
  • Páginas de login y cambio de credenciales modernizadas.
  • Modal de configuración modernizado.
  • Sidebar mejorado.

What changed?

  • Updated Python base image to 3.14.6-alpine3.24
  • index.html split into Jinja2 partials (_sidebar, _topbar, _stats, _device_table, _panel_historial, _panel_confiables, _panel_perfil, _modal_config, _modal_puertos) for easier maintenance
  • Translation system migrated from a monolithic JS object to JSON files loaded via fetch
  • French (fr) added as a third supported language
  • Stat cards redesigned.
  • Login and change-credentials pages modernized: organic background shapes, cleaner card layout
  • Config modal modernized.
  • Sidebar improved.

Full Changelog: v3.1.3...v.3.1.4

v3.1.3

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 11 May 22:52
75741df

What changed?

  • Added flask-wtf, flask-limiter, and flask-talisman to the Dockerfile.
  • Mandatory SECRET_KEY: The application now explicitly fails at startup if SECRET_KEY is not defined as an environment variable. The insecure default value (lan_guard_secret) was removed.
  • Rate limiting on /login: IP-based login attempt limiting was implemented using Flask-Limiter.
  • Global CSRF protection: Flask-WTF now protects all POST endpoints.
  • MAC address validation: All endpoints receiving MAC addresses (/api/add, /api/delete, /api/name) now validate the format using regular expressions before interacting with the database.
  • Device name length limit: Device names are now limited to 64 characters in both backend and frontend.
  • Log rotation: FileHandler was replaced with RotatingFileHandler to prevent excessive disk usage.
  • HTTP security headers: Additional HTTP security headers were applied.
  • nmap timeout handling: scan_network() now catches subprocess.TimeoutExpired and safely returns an empty list without breaking the background thread.
  • Telegram environment variable priority: Telegram environment variables are now prioritized before querying the database.
  • panel.js refactor: All POST fetch() requests were migrated to postJSON(), automatically adding the X-CSRFToken header.
  • Responsive improvements: Mobile display and usability were optimized.

¿Qué cambió?

  • Se agregaron flask-wtf, flask-limiter y flask-talisman al Dockerfile.
  • SECRET_KEY obligatoria: La aplicación ahora falla explícitamente al iniciar si SECRET_KEY no está definida como variable de entorno. Se eliminó el valor por defecto inseguro (lan_guard_secret).
  • Rate limiting en /login: Se implementó limitación de intentos por IP usando Flask-Limiter.
  • Protección CSRF global: Flask-WTF ahora protege todos los endpoints POST.
  • Validación de direcciones MAC: Todos los endpoints que reciben MACs (/api/agregar, /api/eliminar, /api/nombrar) validan el formato usando expresiones regulares antes de interactuar con la base de datos.
  • Límite de longitud en nombres: Los nombres de dispositivos ahora están limitados a 64 caracteres tanto en backend como en frontend.
  • Logs con rotación: Se reemplazó FileHandler por RotatingFileHandler para evitar consumo excesivo de disco.
  • Encabezados HTTP de seguridad: Se aplicaron encabezados HTTP de seguridad adicionales.
  • Manejo de timeout en nmap: escanear_red() ahora captura subprocess.TimeoutExpired y devuelve una lista vacía sin romper el hilo de background.
  • Prioridad de variables de entorno de Telegram: Ahora se prioriza la lectura de las variables de entorno para Telegram antes de consultar la base de datos.
  • Refactor en panel.js: Todos los fetch() POST fueron migrados a postJSON(), agregando automáticamente el header X-CSRFToken.
  • Mejoras responsive: Se optimizó la visualización y experiencia de uso en dispositivos móviles.

Full Changelog: v3.1.2...v3.1.3

v3.1.2

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 09 Apr 17:04
04ad9c9

What changed?

  • Upgraded Python runtime to version 3.14.4

¿Qué cambió?

  • Se realizó upgrade del runtime de Python a la versión 3.14.4

Full Changelog: v3.1.1...v3.1.2

v3.1.1

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 06 Apr 01:22
9cd054c

¿Qué cambió?

  • Se corrigió una vulnerabilidad XSS en el panel: nombres de dispositivos, MACs, IPs y fabricantes provenientes de la red se escapan ahora correctamente antes de insertarse en el HTML. Los íconos de requisitos de contraseña también fueron refactorizados para evitar la reinterpretación de texto del DOM.
  • Los errores internos de Python ya no se exponen al cliente. Los endpoints /api/puertos y /api/telegram/test ahora devuelven mensajes genéricos; el error real solo se registra en el servidor.

What changed?

  • Fixed DOM XSS across the panel: device names, MACs, IPs, and vendor strings from the network are now HTML-escaped before being injected into innerHTML. Password requirement icons were refactored to avoid reinterpreting DOM text as markup.
  • Internal Python exceptions are no longer leaked to clients. /api/puertos and /api/telegram/test now return generic error messages; the real error is logged server-side only.

Full Changelog: v3.1.0...v3.1.1

v3.1.0

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 24 Mar 03:37
b521efd

¿Qué cambió?

  • Rediseño de la interfaz gráfica
    Se actualizó el diseño de las vistas de login, inicio y cambio de contraseña utilizando una combinación en blanco y negro, logrando una apariencia más moderna y minimalista.
  • Renombrar dispositivos confiables
    Ahora es posible editar los nombres personalizados a los dispositivos confiables.
  • Mejoras en el panel lateral
    Se añadieron nuevas secciones en el panel lateral, incluyendo historial de actividad y perfil de usuario.
  • Nombre de usuario personalizable
    Ahora puedes agregar un nombre visible a tu usuario.
  • Tarjetas informativas en el dashboard
    Se incorporaron tarjetas que muestran el total de dispositivos, así como la cantidad de dispositivos confiables y no confiables.

What changed?

  • UI redesign
    The login, home, and password change views were redesigned using a black and white style for a cleaner and more modern look.
  • Rename trusted devices
    You can now edit the names to trusted devices.
  • Sidebar improvements
    New sections were added, including activity history and user profile.
  • Custom username
    You can now set a display name for your account.
  • Dashboard cards
    New cards display total devices, trusted devices, and untrusted devices.

Full Changelog: v3.0.3...v3.1.0

v3.0.2

Choose a tag to compare

@Osvaldo-Net Osvaldo-Net released this 28 Feb 21:40
6ecc2d7

¿Qué cambió?

  • Base cambiada a Alpine — menos paquetes, menos CVEs, imagen más liviana (~80MB vs ~150MB)
  • apk upgrade — parchea el sistema al buildear
  • Eliminado net-tools — tenía CVE-2025-46836 (6.6), reemplazado por iproute2
  • Versiones mínimas de pip — evita flask/werkzeug con CVEs conocidos

What changed?

  • Base changed to Alpine — fewer packages, fewer CVEs, lighter image (~80MB vs ~150MB)
  • apk upgrade — patches the system on build
  • Removed net-tools — had CVE-2025-46836 (6.6), replaced by iproute2
  • pip minimum versions — avoids flask/werkzeug with known CVEs

Full Changelog: v3.0.1...v3.0.3