diff --git a/deploy/install-agent.ps1 b/deploy/install-agent.ps1 index b0eb792..290f5b8 100644 --- a/deploy/install-agent.ps1 +++ b/deploy/install-agent.ps1 @@ -91,15 +91,23 @@ Info "Téléchargement depuis $url" $headers = @{} if ($PackageToken) { $headers['Authorization'] = "token $PackageToken" } -$tmp = Join-Path $InstallDir 'agent.cjs.tmp' +# Le fichier temporaire doit garder l'extension .cjs : `node --check` déduit le +# format du module de l'extension et rejette tout ce qu'il ne reconnaît pas +# (« Unknown file extension .tmp »), quel que soit le contenu. +$tmp = Join-Path $InstallDir 'agent-new.cjs' try { Invoke-WebRequest -Uri $url -Headers $headers -OutFile $tmp -UseBasicParsing } catch { Die "Téléchargement impossible ($($_.Exception.Message)). Vérifie -Registry, -Version, et -PackageToken si le paquet est privé." } -& node --check $tmp 2>$null -if ($LASTEXITCODE -ne 0) { Die 'Le fichier téléchargé n''est pas un script Node valide.' } +$checkErr = (& node --check $tmp 2>&1 | Out-String) +if ($LASTEXITCODE -ne 0) { + Write-Host $checkErr + Write-Host " (fichier conservé pour inspection : $tmp)" + Die 'Le fichier téléchargé n''est pas un script Node valide — voir l''erreur ci-dessus.' +} + Move-Item -Force $tmp (Join-Path $InstallDir 'agent.cjs') # --- Configuration ---------------------------------------------------------- diff --git a/deploy/install-agent.sh b/deploy/install-agent.sh index 6935482..e6845cb 100644 --- a/deploy/install-agent.sh +++ b/deploy/install-agent.sh @@ -142,12 +142,21 @@ mkdir -p "$INSTALL_DIR" CURL_AUTH=() [ -n "$PACKAGE_TOKEN" ] && CURL_AUTH=(--header "Authorization: token $PACKAGE_TOKEN") -curl -fsSL "${CURL_AUTH[@]}" -o "$INSTALL_DIR/agent.cjs.tmp" "$URL" \ +# Le fichier temporaire doit garder l'extension .cjs : `node --check` déduit le +# format du module de l'extension et rejette tout ce qu'il ne reconnaît pas +# (« Unknown file extension .tmp »), quel que soit le contenu. +TMP_FILE="$INSTALL_DIR/agent-new.cjs" + +curl -fsSL "${CURL_AUTH[@]}" -o "$TMP_FILE" "$URL" \ || die "Téléchargement impossible. Vérifie --registry, --version, et --package-token si le paquet est privé." -node --check "$INSTALL_DIR/agent.cjs.tmp" 2>/dev/null \ - || die "Le fichier téléchargé n'est pas un script Node valide." -mv "$INSTALL_DIR/agent.cjs.tmp" "$INSTALL_DIR/agent.cjs" +if ! CHECK_ERR="$(node --check "$TMP_FILE" 2>&1)"; then + echo "$CHECK_ERR" >&2 + echo " (fichier conservé pour inspection : $TMP_FILE)" >&2 + die "Le fichier téléchargé n'est pas un script Node valide — voir l'erreur ci-dessus." +fi + +mv "$TMP_FILE" "$INSTALL_DIR/agent.cjs" # --- Configuration ---------------------------------------------------------- if [ "$IS_UPGRADE" = true ]; then