@deinossrl/dgp-agent 1.4.24 → 1.4.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.mjs +48 -28
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -254,7 +254,7 @@ function hasLocalSshKey() {
254
254
  }
255
255
 
256
256
  // Versión del agente
257
- const AGENT_VERSION = '1.4.23';
257
+ const AGENT_VERSION = '1.4.26';
258
258
  let AGENT_MODE = 'smart'; // Siempre inteligente
259
259
 
260
260
  // Configuración (prioridad: env vars > archivo config > platform config > defaults)
@@ -1312,28 +1312,38 @@ Analiza este error y sugiere soluciones.`;
1312
1312
  async function executeTestConnection(command) {
1313
1313
  const { server_host, ssh_user, params } = command;
1314
1314
 
1315
- // SSH Key: prioridad params > guardada localmente
1315
+ // Extraer credenciales y método de autenticación
1316
1316
  let sshPrivateKey = params?.ssh_private_key || null;
1317
1317
  let sshPassword = params?.ssh_password || null;
1318
+ const authMethodPreference = params?.auth_method || 'ssh_key'; // default ssh_key
1318
1319
  let authMethod = 'ninguno';
1319
1320
 
1320
- // Si viene SSH key en params, guardarla localmente para futuro uso
1321
- if (sshPrivateKey) {
1322
- const savedPath = saveSshKeyLocally(sshPrivateKey);
1323
- if (savedPath) {
1324
- logSuccess(`SSH Key guardada en ${savedPath}`);
1325
- authMethod = 'key (guardada localmente)';
1326
- } else {
1327
- authMethod = 'key (plataforma)';
1328
- }
1329
- } else if (hasLocalSshKey()) {
1330
- // Si no viene en params pero hay una guardada, usarla
1331
- sshPrivateKey = loadLocalSshKey();
1332
- authMethod = `key (${getDgpSshKeyPath()})`;
1333
- logInfo(`Usando SSH Key guardada: ${getDgpSshKeyPath()}`);
1334
- } else if (sshPassword) {
1321
+ // Respetar la preferencia del usuario
1322
+ if (authMethodPreference === 'password' && sshPassword) {
1323
+ // Usuario eligió password
1335
1324
  authMethod = 'password';
1336
- logInfo('Usando autenticación por password');
1325
+ logInfo('Método elegido: Password');
1326
+ } else {
1327
+ // Usuario eligió SSH Key (o default)
1328
+ // Si viene SSH key en params, guardarla localmente para futuro uso
1329
+ if (sshPrivateKey) {
1330
+ const savedPath = saveSshKeyLocally(sshPrivateKey);
1331
+ if (savedPath) {
1332
+ logSuccess(`SSH Key guardada en ${savedPath}`);
1333
+ authMethod = 'key (guardada localmente)';
1334
+ } else {
1335
+ authMethod = 'key (plataforma)';
1336
+ }
1337
+ } else if (hasLocalSshKey()) {
1338
+ // Si no viene en params pero hay una guardada, usarla
1339
+ sshPrivateKey = loadLocalSshKey();
1340
+ authMethod = `key (${getDgpSshKeyPath()})`;
1341
+ logInfo(`Usando SSH Key guardada: ${getDgpSshKeyPath()}`);
1342
+ } else if (sshPassword) {
1343
+ // Fallback: si no hay key pero hay password, usarlo
1344
+ authMethod = 'password (fallback)';
1345
+ logInfo('No hay SSH key, usando password como alternativa');
1346
+ }
1337
1347
  }
1338
1348
 
1339
1349
  logCommand(`=== Testing SSH Connection ===`);
@@ -1384,29 +1394,39 @@ async function executeTestConnection(command) {
1384
1394
  const user = ssh_user || 'root';
1385
1395
  let sshCmd = '';
1386
1396
 
1387
- // Usar la SSH key guardada en ~/.ssh/dgp_key (ya se guardó arriba si vino de params)
1397
+ // Construir comando SSH según el método de autenticación elegido
1388
1398
  let sshKeyPath = null;
1389
- if (sshPrivateKey && hasLocalSshKey()) {
1399
+ if (authMethodPreference === 'password' && sshPassword) {
1400
+ // Usuario eligió password: usar sshpass o plink
1401
+ await addCommandLog('info', 'Usando autenticación por password');
1402
+ const isWindows = process.platform === 'win32';
1403
+ if (isWindows) {
1404
+ // En Windows usar plink (PuTTY)
1405
+ await addCommandLog('info', 'Usando plink (Windows)');
1406
+ sshCmd = `echo y | plink -ssh -pw "${sshPassword}" ${user}@${server_host} "echo SSH_OK && hostname && whoami"`;
1407
+ } else {
1408
+ // En Linux/Mac usar sshpass
1409
+ await addCommandLog('info', 'Usando sshpass (Linux/Mac)');
1410
+ sshCmd = `sshpass -p "${sshPassword}" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${user}@${server_host} "echo 'SSH_OK' && hostname && whoami"`;
1411
+ }
1412
+ } else if (hasLocalSshKey()) {
1413
+ // Usuario eligió SSH key: usar la guardada en ~/.ssh/dgp_key
1390
1414
  sshKeyPath = getDgpSshKeyPath();
1391
1415
  await addCommandLog('info', `Usando SSH key: ${sshKeyPath}`);
1392
1416
  const sshOpts = `-i ${sshKeyPath} -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes`;
1393
1417
  sshCmd = `ssh ${sshOpts} ${user}@${server_host} "echo 'SSH_OK' && hostname && whoami"`;
1394
1418
  } else if (sshPassword) {
1395
- // Usar sshpass para autenticación por password
1396
- await addCommandLog('info', 'Usando autenticación por password (sshpass)');
1419
+ // Fallback: no hay key local pero hay password
1420
+ await addCommandLog('info', 'Usando password como alternativa (no hay SSH key guardada)');
1397
1421
  const isWindows = process.platform === 'win32';
1398
1422
  if (isWindows) {
1399
- // En Windows usar plink (PuTTY) o mostrar advertencia
1400
- await addCommandLog('warning', 'SSH con password en Windows requiere plink (PuTTY)');
1401
- // Intentar con plink si está disponible
1402
1423
  sshCmd = `echo y | plink -ssh -pw "${sshPassword}" ${user}@${server_host} "echo SSH_OK && hostname && whoami"`;
1403
1424
  } else {
1404
- // En Linux/Mac usar sshpass
1405
1425
  sshCmd = `sshpass -p "${sshPassword}" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${user}@${server_host} "echo 'SSH_OK' && hostname && whoami"`;
1406
1426
  }
1407
1427
  } else {
1408
- // Sin key ni password, intentar con key del sistema
1409
- await addCommandLog('info', 'Intentando conexión con keys del sistema (~/.ssh/)');
1428
+ // Sin key ni password, intentar con keys del sistema
1429
+ await addCommandLog('warning', 'No hay SSH key ni password configurados. Intentando con keys del sistema (~/.ssh/)');
1410
1430
  const sshOpts = `-o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes`;
1411
1431
  sshCmd = `ssh ${sshOpts} ${user}@${server_host} "echo 'SSH_OK' && hostname && whoami"`;
1412
1432
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deinossrl/dgp-agent",
3
- "version": "1.4.24",
3
+ "version": "1.4.26",
4
4
  "description": "Agente local para Despliegue-GPT - Reporta el estado del repositorio Git a la plataforma TenMinute IA",
5
5
  "main": "index.mjs",
6
6
  "bin": {