╔════════════════════════════════════════════════════════════════════════════════╗
║            REQUERIMIENTOS DE FIREWALL - HAKA FRAMEWORK v1.3.142+             ║
║              Configuración necesaria para validación de licencia               ║
╚════════════════════════════════════════════════════════════════════════════════╝


## 📌 PROPÓSITO

El Haka Framework realiza validación de licencia una sola vez cada 10 días.
Esta validación requiere conexión HTTPS a un servicio de Google Cloud Platform (GCP).

**Frecuencia**: Una sola vez cada 10 días (no en cada ejecución)
**Timeout**: 15 segundos máximo
**Protocolo**: HTTPS (Seguro - Cifrado)
**Datos transmitidos**: Email, Clave de licencia, Nombre de producto


## 🔒 ENDPOINT DE VALIDACIÓN

Servicio de validación de licencia alojado en Google Cloud:
```
https://us-central1-haka-licencias-productivos.cloudfunctions.net/validarLicencia
```

**Detalles técnicos:**
- Proveedor: Google Cloud Platform (GCP)
- Región: us-central1 (Estados Unidos - Centro)
- Tipo: Google Cloud Functions (Servicio administrado)
- Puerto: 443 (HTTPS estándar)


## ✅ OPCIONES DE CONFIGURACIÓN

### OPCIÓN 1: Habilitar por dominio (RECOMENDADO - Más flexible)

**Para agregar en allowlist del firewall/proxy:**
```
Dominio: *.cloudfunctions.net
Protocolo: HTTPS
Puerto: 443
Dirección: Salida (Outbound)
```

**Ventajas:**
- ✅ Cubre todas las Google Cloud Functions
- ✅ Máxima flexibilidad
- ✅ Funciona si cambia la URL específica
- ✅ Recomendado para entornos corporativos

**Desventajas:**
- ⚠️ Permitir todo *.cloudfunctions.net (otros servicios GCP)


### OPCIÓN 2: Habilitar por región de GCP (Más seguro)

**Para agregar en allowlist del firewall:**
```
IP Range: 199.36.153.0/24
Protocolo: HTTPS
Puerto: 443
Dirección: Salida (Outbound)
Región: US Central 1
```

**Ventajas:**
- ✅ Solo Google Cloud Functions en US Central 1
- ✅ Seguridad mejorada
- ✅ Específico a la región

**Desventajas:**
- ⚠️ Requiere configuración más avanzada
- ⚠️ Puede no funcionar con algunos firewalls básicos


### OPCIÓN 3: Habilitar URL específica (MÁS RESTRICTIVO)

**Para agregar en allowlist del firewall/proxy:**
```
URL completa: https://us-central1-haka-licencias-productivos.cloudfunctions.net/validarLicencia
Protocolo: HTTPS
Puerto: 443
Dirección: Salida (Outbound)
```

**Ventajas:**
- ✅ Máxima seguridad y control
- ✅ Solo permite acceso a este endpoint específico

**Desventajas:**
- ⚠️ Si la URL cambia, requiere actualización
- ⚠️ Configuración más específica en algunos firewalls


## 🌐 CONFIGURACIÓN POR TIPO DE FIREWALL/PROXY

### Para Firewalls corporativos típicos:

**Forcepoint, Palo Alto Networks, Check Point, etc:**
```
Dominio: *.cloudfunctions.net
Acción: Allow
Protocolo: HTTPS
Puerto: 443
Categoría: Cloud Services o Infrastructure
```

### Para Proxies web (Squid, Tinyproxy, etc):

```
whitelist_domains = [
    "*.cloudfunctions.net"
]
allowed_ports = [443]
ssl_mode = allow
```

### Para AWS VPC Endpoints:

```
Service Name: com.amazonaws.vpce.us-east-1.vpce-svc-0xxx
Endpoint Type: Gateway
Protocolo: HTTPS
```

### Para Azure:

```
Regla de salida:
- Destino: us-central1-haka-licencias-productivos.cloudfunctions.net
- Puerto: 443
- Protocolo: TCP
- Acción: Allow
```


## 🔐 DATOS TRANSMITIDOS

**En cada validación (una sola vez cada 10 días):**

```json
{
  "key": "tu-clave-de-licencia",
  "mail": "tu_email@empresa.com",
  "producto": "Engine Playwright"
}
```

**Información transmitida:**
- Email de licencia (usuario registrado)
- Clave de licencia (token privado)
- Nombre del producto (fijo: "Engine Playwright")

**Información NO transmitida:**
- ❌ Contraseñas
- ❌ Datos de tests
- ❌ URLs de aplicaciones probadas
- ❌ Información de usuarios
- ❌ Contenido de features


## ⏰ FRECUENCIA DE VALIDACIÓN

**Después de habilitar el firewall:**

1. **Primer acceso**: Valida inmediatamente (1 llamada a API)
2. **Próximos 10 días**: Usa caché local (sin llamadas a API)
3. **Día 11**: Valida nuevamente (1 llamada a API)
4. **Cada 10 días**: Se repite el ciclo

**Total de llamadas al año:**
- Máximo: 36-37 llamadas (una cada 10 días)
- Promedio: ~36 llamadas/año
- Impacto: Mínimo (caché local 90% del tiempo)


## 🧪 VERIFICACIÓN

Para verificar que el firewall está correctamente configurado:

**En Windows (PowerShell):**
```powershell
$url = "https://us-central1-haka-licencias-productivos.cloudfunctions.net/validarLicencia"
$request = [System.Net.HttpWebRequest]::Create($url)
$request.GetResponse()
# Debe retornar: HTTP 405 Method Not Allowed (POST required)
```

**En Linux/Mac (curl):**
```bash
curl -I https://us-central1-haka-licencias-productivos.cloudfunctions.net/validarLicencia
# Debe retornar: HTTP 405 Method Not Allowed
```

**Desde el framework:**
```python
from hakalab_framework.core.license_validator import LicenseValidator

validator = LicenseValidator()
validator.reset_cache()  # Fuerza validación

# Ahora ejecuta behave, debería conectar al servicio
behave features/
```


## ❌ COMPORTAMIENTO SIN ACCESO

Si el firewall bloquea la conexión:

**Primera ejecución (sin caché):**
```
❌ Sin conexión y sin caché anterior
    ↓
Framework BLOQUEA ejecución
```

**Ejecuciones posteriores (con caché válido):**
```
⚠️ No hay conexión con servicio
    ↓
Usa validación anterior (caché)
    ↓
✅ Framework PERMITE ejecución
```

**Recomendación**: Ejecutar primera validación en una red sin restricciones.


## 📞 SOPORTE Y TROUBLESHOOTING

Si tienes problemas de conectividad:

1. **Verificar DNS:**
   ```bash
   nslookup us-central1-haka-licencias-productivos.cloudfunctions.net
   ```

2. **Verificar conectividad:**
   ```bash
   telnet us-central1-haka-licencias-productivos.cloudfunctions.net 443
   ```

3. **Revisar logs del framework:**
   ```
   Buscar líneas con: "🔍 Validando licencia"
   Buscar líneas con: "⚠️ No hay conexión"
   ```

4. **Contactar con IT:**
   Proporcionar esta guía y el endpoint a habilitar

5. **Contactar soporte Hakalab:**
   - Email: contacto@hakalab.com
   - Con: Email de licencia + Tipo de firewall + Error específico


## 🔄 CAMBIO DE POLÍTICA

Si necesita cambiar el endpoint de validación en el futuro:
- Se puede actualizar sin cambiar versión del framework
- Solo requiere actualización del servicio de licencia en GCP
- Cambios comunicados en CHANGELOG


## 📋 CHECKLIST PARA IT

- [ ] Dominio *.cloudfunctions.net habilitado (OPCIÓN 1 recomendada)
- [ ] Puerto 443 permitido
- [ ] Protocolo HTTPS permitido
- [ ] Salida (Outbound) configurada
- [ ] Probado con curl o telnet
- [ ] Documentación guardada para futuros cambios
- [ ] Usuario final ha ejecutado primer test exitosamente


## 📝 REFERENCIAS

**Google Cloud Functions:**
- Documentación: https://cloud.google.com/functions/docs
- Región us-central1: https://cloud.google.com/about/locations#region

**Seguridad HTTPS:**
- RFC 8446 (TLS 1.3)
- Certificados SHA-256
- Encriptación AES-256
