[P2604] Fase 15: Optimización IA e integración de herramienta candados. Sincronización de bitácoras y actualización de planes de proyecto.

This commit is contained in:
Ricardo Monla
2026-03-19 09:52:29 -03:00
parent 183dbf6fb6
commit 5aa37e7221
138 changed files with 8777 additions and 464 deletions
+25 -4
View File
@@ -15,6 +15,7 @@ module ADN
{
nombre: nodo_nombre,
ip: detectar_ip(contenido),
ip_lan: detectar_ip_lan(contenido),
host: detectar_host(contenido),
so: detectar_so(contenido),
vmid: detectar_vmid(contenido),
@@ -25,6 +26,13 @@ module ADN
}
end
def self.extraer_ip_lan(nodo_nombre)
ruta = File.join(ADN::NODOS_DIR, "#{nodo_nombre}.md")
return nil unless File.exist?(ruta)
contenido = File.read(ruta, encoding: 'UTF-8')
detectar_ip_lan(contenido)
end
def self.detectar_usuario(contenido)
# **SSH**: user@ip:port o DOMAIN\user@ip:port
if contenido =~ /\*\*SSH\*\*:\s*`?([^`\s(]+)/i
@@ -69,6 +77,18 @@ module ADN
nil
end
def self.detectar_ip_lan(contenido)
# Buscar IP de LAN en formato: `10.0.100.1` (después de "LAN" o "Bridge" o "Alias")
if contenido =~ /(?:LAN|Bridge vmbr0|Alias).*?`([\d\.]+)`/i
return $1
end
# - **IP**: `10.0.100.12/24` (Estática) - buscar solo la IP antes de /
if contenido =~ /\*\*IP\*\*:\s*`([\d\.]+)\//
return $1
end
nil
end
def self.detectar_host(contenido)
if contenido =~ /\*\*(?:Padre\/Host|Host Anfitrión|Anfitrión|Host)\*\*\s*[:\|]?\s*`?([a-zA-Z0-9\-]+)`?/i
return $1
@@ -122,11 +142,12 @@ module ADN
nil
end
# Detecta tipo de autenticación SSH
# Formato: (Passphrase RSA, ...) o (Password, ...)
def self.detectar_auth_type(contenido)
if contenido =~ /\*\*SSH\*\*:.*\((Passphrase|Password)/i
return $1.downcase == 'passphrase' ? :passphrase : :password
if contenido =~ /\*\*SSH\*\*:.*\((Passphrase|Password|RSA)/i
match = $1.downcase
return :passphrase if match == 'passphrase'
return :rsa if match == 'rsa'
return :password
end
:password # Default para VMs Windows
end