d0f90542e9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Conector FoxPro 1.0.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+FPTa 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
.cdxno se usa (se recorre la tabla). Las tablas se guardan en caché y la caché se renueva sola cuando cambia el archivo. - 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)
- Copiar esta carpeta a
C:\api_project\foxproconnode_modules(no requiere internet en el server). Sinconfig.jsonnilogsde otro equipo. - Node: copiar
node.exeportable (Node 20 LTS o superior, Windows x64) aC:\api_project\foxpro\node\node.exe. Así no hay que instalar Node en el servidor. - Token:
node\node.exe scripts\generar-token.js. El TOKEN se carga en el sistema; el tokenSha256 va enconfig.json. config.json(a partir deconfig.example.json):sources: una entrada por carpeta (nomina,clientes…). Usarpathcon doble\\.tables:"*"(todas) o solo las tablas que se quieren exponer, confieldssi se quiere limitar columnas.denyFieldsoculta columnas sensibles (sueldo, claves).encoding:cp1252normalmente; si salen mal las tildes/eñes, probarcp850.allowIps: IP del backend de producción (192.168.222.3) y la de desarrollo si aplica.
- Probar a mano:
node\node.exe src\server.jsy, desde el backend,curl -H "Authorization: Bearer <TOKEN>" http://192.168.0.253:8455/v1/health. - 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).
- Crea la tarea
- 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 (16 pruebas).npm run token: genera token + hash.