fix: version 2.16.2 -- el instalador del agente verifica el token y fuerza la configuracion

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-20 10:39:49 -05:00
parent ae932eedde
commit 219169ba9f
6 changed files with 34 additions and 3 deletions
+8
View File
@@ -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).
+1 -1
View File
@@ -1 +1 @@
2.16.1
2.16.2
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "project-linkedcorp-backend",
"version": "2.16.1",
"version": "2.16.2",
"private": true,
"type": "module",
"main": "src/server.js",
+4
View File
@@ -69,6 +69,10 @@ auto-eleva, descarga `GLPI-Agent-<ver>-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-<ver>-linux-installer.pl --server=… --user=… --password=…`.
## Pendientes / por verificar con un agente real
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "project-linkedcorp-frontend",
"private": true,
"version": "2.16.1",
"version": "2.16.2",
"type": "module",
"scripts": {
"dev": "vite",
@@ -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',