From 219169ba9fa09c82d371a93920c55ec01fd0cdd3 Mon Sep 17 00:00:00 2001 From: Milton Gonzalez Date: Tue, 20 Oct 2026 10:39:49 -0500 Subject: [PATCH] fix: version 2.16.2 -- el instalador del agente verifica el token y fuerza la configuracion Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 8 ++++++++ VERSION | 2 +- backend/package.json | 2 +- docs/ARQUITECTURA-INVENTARIO.md | 4 ++++ frontend/package.json | 2 +- frontend/src/pages/Equipos/agentInstaller.js | 19 +++++++++++++++++++ 6 files changed, 34 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5a8dd6..ac5c63e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog - project.linkedcorp.net +## [2.16.2] - 2026-10-20 +### Fixed +- Instalador del agente (Equipos → Agentes): ahora **verifica el token contra el servidor antes de + instalar** (token inválido o sin conexión → se detiene con un mensaje claro y no instala), y tras + instalar **escribe servidor/usuario/clave/etiqueta en el registro y reinicia el servicio**, así + funciona también en equipos que ya tenían el agente instalado (msiexec no reescribe su + configuración en ese caso). + ## [2.16.1] - 2026-10-20 ### Changed - Barra superior (topbar) a la mitad de alto (84 px → 42 px). diff --git a/VERSION b/VERSION index 0e7079b..43c85e7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.16.1 +2.16.2 diff --git a/backend/package.json b/backend/package.json index db96d99..74f39ac 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "project-linkedcorp-backend", - "version": "2.16.1", + "version": "2.16.2", "private": true, "type": "module", "main": "src/server.js", diff --git a/docs/ARQUITECTURA-INVENTARIO.md b/docs/ARQUITECTURA-INVENTARIO.md index 5e8d1d5..ddb6c7a 100644 --- a/docs/ARQUITECTURA-INVENTARIO.md +++ b/docs/ARQUITECTURA-INVENTARIO.md @@ -69,6 +69,10 @@ auto-eleva, descarga `GLPI-Agent--x64.msi` de GitHub (versión fijada en `frontend/src/pages/Equipos/agentInstaller.js#GLPI_AGENT_VERSION`; o usa el .msi que esté junto al .bat), instala con `msiexec /qn` y `RUNNOW=1`, y verifica que el servicio `glpi-agent` corra. El token solo se conoce al crearlo, por eso el .bat se genera en la pantalla y no en el servidor. +Antes de instalar, el .bat verifica el token (`POST` de prueba: `400` válido, `401` inválido, `000` sin +conexión) y se detiene si no es válido; después fuerza la configuración en el registro (cubre equipos que +ya tenían el agente). Proceso por cliente: generar UN token en su Project → descargar el .bat desde ahí → +ejecutarlo en cada PC. Linux: usar el instalador oficial `glpi-agent--linux-installer.pl --server=… --user=… --password=…`. ## Pendientes / por verificar con un agente real diff --git a/frontend/package.json b/frontend/package.json index 7d01b2f..de15b91 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "project-linkedcorp-frontend", "private": true, - "version": "2.16.1", + "version": "2.16.2", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/pages/Equipos/agentInstaller.js b/frontend/src/pages/Equipos/agentInstaller.js index cc8fea2..5ee474a 100644 --- a/frontend/src/pages/Equipos/agentInstaller.js +++ b/frontend/src/pages/Equipos/agentInstaller.js @@ -17,6 +17,22 @@ export function buildInstallerBat({ serverUrl, token, tag }) { ` powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"`, ' exit /b', ')', + // Verifica el token ANTES de instalar: 400 = valido (llego al servidor y fallo solo el cuerpo de prueba), + // 401 = token invalido, 000 = sin conexion. Asi un token malo nunca deja el agente mal configurado. + 'echo Verificando el token con el servidor...', + 'set "CODE="', + `for /f %%C in ('curl.exe -s -o nul -w "%%{http_code}" -u project:${token} -X POST "${serverUrl}" -d x 2^>nul') do set "CODE=%%C"`, + 'if "%CODE%"=="401" (', + ' echo ERROR: el token no es valido en este servidor. Genere uno en Equipos - Agentes y descargue el instalador de nuevo.', + ' pause', + ' exit /b 2', + ')', + 'if "%CODE%"=="000" (', + ` echo ERROR: no hay conexion con ${serverUrl}. Revise la red o internet del equipo.`, + ' pause', + ' exit /b 3', + ')', + 'if not defined CODE echo Aviso: no se pudo verificar el token ^(curl no disponible^). Se continua con la instalacion.', `set "MSI=%~dp0${msiName}"`, 'if exist "%MSI%" goto instalar', `set "MSI=%TEMP%\\${msiName}"`, @@ -37,6 +53,9 @@ export function buildInstallerBat({ serverUrl, token, tag }) { ' pause', ' exit /b %RC%', ')', + // Si el agente ya estaba instalado, msiexec no reescribe su configuracion: se fuerza en el registro. + 'echo Aplicando configuracion...', + `powershell -NoProfile -ExecutionPolicy Bypass -Command "$k='HKLM:\\SOFTWARE\\GLPI-Agent'; Set-ItemProperty -Path $k -Name server -Value '${serverUrl}'; Set-ItemProperty -Path $k -Name user -Value 'project'; Set-ItemProperty -Path $k -Name password -Value '${token}';${safeTag ? ` Set-ItemProperty -Path $k -Name tag -Value '${safeTag}';` : ''} Restart-Service glpi-agent"`, 'echo.', 'sc query glpi-agent | find "RUNNING" >nul && (echo Listo: el agente esta instalado y en ejecucion. El equipo aparecera en Project en unos minutos.) || (echo Instalado, pero el servicio no esta en ejecucion. Revise services.msc.)', 'pause',