# Cron y Procesos Programados

## Entradas

- `admin/vtigercron.php`: entrada principal.
- `cron/vtigercron.sh`, `cron/executecron.sh`, `cron/sendreminder.sh`, `cron/sendsupportnotification.sh`.
- Services: `MailScanner.service`, `SendReminder.service`, `ScheduledImport.service`, `TokenRefresher.service`, `ScheduleReports.service`, `RecurringInvoice.service`, `com_vtiger_workflow.service`.

## Funcionamiento

- `vtigercron.php` carga autoload, config, `Vtiger_Cron` y correo.
- Permite ejecucion CLI o ejecucion web solo si hay sesion autenticada con `app_unique_key` valido.
- Lista tareas con `Vtiger_Cron::listAllActiveInstances()` o una tarea por `$_REQUEST['service']`.
- Marca tareas running/finished/error en `vtiger_cron_task`.
- Incluye el handler configurado con `require_once $cronTask->getHandlerFile()`.

## Workflows y schedulers

- Workflows: `modules/com_vtiger_workflow/`.
- Cola/tareas: `VTTaskQueue`, `VTTaskManager`, `WorkFlowScheduler`.
- Mail queue: `vtlib/Vtiger/Mailer.php`.
- Oauth refresh: `cron/modules/Oauth2/TokenRefresher.service`.

## Riesgos

- `vtigercron.php` esta bajo webroot. Aunque verifica CLI o sesion, debe restringirse por servidor si no necesita acceso web.
- Parametro `service` permite seleccionar tarea; depende de autenticacion/sesion.
- Handlers escriben DB por diseno; no se ejecutaron en esta auditoria.
- Salida cron puede revelar rutas internas si se expone.
