Ir al contenido

Arquitectura

Cliente Wi-Fi ──> Punto de Acceso (hostapd) ──> Catsplash
│ │
│ ┌────┴────┐
│ │ Firewall│
│ │(iptables)│
│ └─────────┘
│ │
│ ┌────┴────┐
│ │ SQLite │
│ │ (WAL) │
│ └─────────┘
│ │
│ ┌────┴────┐
│ │ Portal │
│ │ Web │
│ └─────────┘
  1. Carga configuración (TOML + flags de CLI).
  2. Abre base de datos SQLite con WAL.
  3. Inicializa firewall (iptables).
  4. Configura redirección DNAT.
  5. Inicia el Reaper (gestor de expiración de sesiones).
  6. Inicia el monitor de tráfico.
  7. Arranca el servidor web del portal.
  8. Espera señal de terminación para limpiar recursos.

Carga y valida la configuración desde un archivo TOML. Soporta sobrescritura mediante flags de CLI (--iface, --wan, --port, --db).

Módulo que gestiona iptables:

  • Init(): Crea cadena personalizada CATS_PREROUTING, NAT Masquerade, reglas FORWARD.
  • SetupRedirect(): Añade regla DNAT para redirigir tráfico HTTP al portal.
  • AllowClient(): Inserta 2 reglas FORWARD (subida/bajada) + 1 regla NAT (bypass).
  • BlockClient(): Elimina las reglas anteriores.
  • Teardown(): Limpieza completa al salir.

Gestión de sesiones con SQLite:

  • DB: Abre conexión SQLite con WAL, migraciones automáticas.
  • Reaper: Hilo que cada 10 segundos revisa sesiones expiradas y las cierra.
  • Client: Estructura con MAC, IP, estado, tiempos, tráfico y límites.

Sirve el portal cautivo y la administración:

  • /portal - Página de bienvenida con formulario de autenticación y token CSRF.
  • /auth - Procesa la autenticación y libera al cliente.
  • /admin - Panel de administración con autenticación, gestión de clientes y vista de sesiones.
  • /privacy - Política de privacidad accesible desde el portal.
  • /data-request - Endpoint ARCO+: solicitud de acceso a datos personales.
  • /data-deletion - Endpoint ARCO+: solicitud de eliminación de datos personales.
  • / (catch-all) - Intercepta cualquier petición HTTP y redirige al portal.

Gestión de sesiones con SQLite:

  • DB: Abre conexión SQLite con WAL, migraciones automáticas.
  • Reaper: Hilo que cada 10 segundos revisa sesiones expiradas y las cierra.
  • Client: Estructura con MAC, IP, estado, tiempos, tráfico y límites.
  • Audit: Registro de eventos de auditoría (accesos a datos, eliminaciones, autenticación).