Files
project.linkedcorp.net/data/conectores/foxpro

Conector FoxPro 1.1.0

API de solo lectura para tablas FoxPro/Visual FoxPro (.dbf con memo .fpt), según el contrato v1 de ../README.md. Node.js sin servidor web adicional; única dependencia: dbffile.

  • No abre los originales para leer registros: copia DBF+FPT a una carpeta temporal y lee la copia, así no choca con los bloqueos de SAGA. Si FoxPro tiene la tabla en uso exclusivo → 423.
  • El índice .cdx no se usa (se recorre la tabla). Las tablas se guardan en caché y la caché se renueva sola cuando cambia el archivo.
  • Tablas que el origen escribe todo el día: no se recopian más de una vez cada limits.minReloadSeconds (60 por defecto).
  • Tipos soportados: C, N, F, Y, I, L, D, T, B, M. Otros (V, Q, W…) se omiten.

Instalación en el Windows (C:\api_project\foxpro)

  1. Copiar esta carpeta a C:\api_project\foxpro con node_modules (no requiere internet en el server). Sin config.json ni logs de otro equipo.
  2. Node: usa el Node instalado en el servidor (Exilaser tiene Node 24); si no hay, copiar node.exe portable (Node 20+ x64) a C:\api_project\foxpro\node\node.exe.
  3. Token: node\node.exe scripts\generar-token.js. El TOKEN se carga en el sistema; el tokenSha256 va en config.json.
  4. config.json (a partir de config.example.json):
    • sources: una entrada por carpeta (nomina, clientes…). Usar path con doble \\.
    • tables: "*" (todas) o solo las tablas que se quieren exponer, con fields si se quiere limitar columnas. denyFields oculta columnas sensibles (sueldo, claves).
    • encoding: cp1252 normalmente; si salen mal las tildes/eñes, probar cp850.
    • allowIps: IP del backend de producción (192.168.222.3) y la de desarrollo si aplica.
  5. Probar a mano: node\node.exe src\server.js y, desde el backend, curl -H "Authorization: Bearer <TOKEN>" http://192.168.0.253:8455/v1/health.
  6. Dejarlo como servicio (PowerShell como administrador): powershell -ExecutionPolicy Bypass -File .\scripts\instalar-servicio.ps1
    • Crea la tarea LinkedCorp-Conector-FoxPro (arranque con Windows, reinicio si cae) y la regla de firewall del puerto 8455 solo para las IPs permitidas.
    • Recomendado: -Usuario 'DOMINIO\svc_conector' -Clave '...' con una cuenta que tenga solo lectura sobre las carpetas de datos (por defecto corre como SYSTEM).
  7. Desinstalar: scripts\desinstalar-servicio.ps1.

TLS opcional: en config.json → tls.pfx con la ruta del .pfx y la clave en la variable de entorno indicada en tls.passphraseEnv. Por la VPN WireGuard el tráfico ya va cifrado.

Logs: logs\acceso-AAAA-MM-DD.log (sin tokens ni valores buscados).

Desarrollo

  • npm test: crea una tabla DBF temporal, levanta el conector y valida el contrato (19 pruebas).
  • npm run token: genera token + hash.