# ZeroTrust Shield – Guía de Instalación

## Requisitos
- PHP 8.1+ con extensiones: PDO, PDO_MySQL, OpenSSL
- MySQL 5.7+ / MariaDB 10.3+
- Hosting cPanel con cron jobs habilitados

---

## Paso 1: Subir archivos
Subir todos los archivos al directorio deseado en el hosting (ej: `public_html/zerotrust/`).

---

## Paso 2: Crear base de datos en cPanel
1. En cPanel → **MySQL Databases**
2. Crear base de datos: `zerotrust`
3. Crear usuario: `zerotrust_user` con contraseña segura
4. Asignar todos los permisos al usuario sobre esa DB

---

## Paso 3: Configurar `config.php`
Editar el archivo y actualizar:
```php
define('DB_NAME', 'tu_cpanel_zerotrust');   // en cPanel suele ser prefijo_dbname
define('DB_USER', 'tu_cpanel_user');
define('DB_PASS', 'contraseña_segura');
define('APP_URL', 'https://tu-dominio.com/zerotrust');
define('CRON_SECRET', 'token_secreto_largo_y_aleatorio');
```
Las credenciales de AdGuard ya están configuradas.

---

## Paso 4: Instalar la base de datos
Visitar en el navegador:
```
https://tu-dominio.com/zerotrust/install.php
```
Esto crea las tablas y el usuario admin inicial:
- **Usuario:** `admin`
- **Clave:** `admin123` ← **¡Cambiar inmediatamente!**

---

## Paso 5: Configurar Cron Job en cPanel
1. En cPanel → **Cron Jobs**
2. Frecuencia: cada 5 minutos (`*/5 * * * *`)
3. Comando:
```bash
php /home/USUARIO/public_html/zerotrust/cron.php
```
*(Reemplazar USUARIO con el nombre de cuenta en cPanel)*

### Primera sincronización manual
Para sincronizar los primeros datos inmediatamente:
```bash
php /path/to/cron.php
```
O via URL (con el token configurado):
```
https://tu-dominio.com/zerotrust/cron.php?token=TOKEN
```

---

## Paso 6: Ingresar al portal
```
https://tu-dominio.com/zerotrust/
```
1. Ingresar con `admin` / `admin123`
2. Ir a **Admin → Clientes / Usuarios**
3. Crear usuarios para cada cliente
4. Asignar los **Client IDs de AdGuard** (ver tab "Clientes AdGuard")

---

## Seguridad post-instalación
- Cambiar la clave del usuario admin
- En `.htaccess`, descomentar la protección de `install.php` o eliminarlo
- Activar HTTPS (Let's Encrypt en cPanel)
- Configurar `APP_URL` con HTTPS

---

## Estructura de archivos
```
zerotrust/
├── index.php          ← Login
├── dashboard.php      ← Panel del cliente
├── admin.php          ← Panel de administración
├── api.php            ← API AJAX (datos para gráficos)
├── cron.php           ← Sincronización con AdGuard (cada 5 min)
├── install.php        ← Instalación inicial (eliminar luego)
├── config.php         ← Configuración (no exponer)
├── auth.php           ← Sistema de autenticación
├── db.php             ← Conexión a BD
├── helpers.php        ← Mapeo de categorías y utilidades
├── .htaccess          ← Seguridad web
└── assets/
    ├── css/style.css
    └── js/dashboard.js
```

---

## Cómo funciona la sincronización
- El cron se ejecuta cada 5 minutos
- Consulta la API de AdGuard Home `/control/querylog`
- Descarga los nuevos registros desde el último cursor guardado
- Mapea cada bloqueo a una categoría (Malware, Phishing, Pornografía, etc.)
- Los registros quedan disponibles en la base de datos local

## Categorías de bloqueo detectadas
- 🐛 **Malware** – ShadowWhisperer, Dandelion, URLHaus, Block List Project, IBM X-Force, Lumu
- 🎣 **Phishing** – PhishTank, Phishing Army, Block List Project
- 💰 **Cryptomining** – NoCoin, UT1 Bitcoin/Cryptojacking
- 🔞 **Pornografía** – OISD NSFW, Block List Project Porn, UT1 Porn
- 🎰 **Juegos de Azar** – HaGeZi Gambling, Block List Project Gambling, UT1 Gambling
- 🔒 **VPN/Proxy/TOR** – HaGeZi Encrypted DNS, UT1 VPN/DoH
- 🏴 **Piratería** – Block List Project Piracy/Torrent, UT1 Warez
- 🛡️ **Amenazas Intel.** – HaGeZi Threat Intel, Threat Fox, Cloudflare
- ⚔️ **Hacking** – UT1 Hacking
- 💊 **Drogas** – Block List Project Drugs, UT1 Drugs
- ...y más
