diff --git a/adn/tools/candados/.boveda.json b/adn/tools/candados/.boveda.json index 07e3a16e..35135799 100644 --- a/adn/tools/candados/.boveda.json +++ b/adn/tools/candados/.boveda.json @@ -11,5 +11,6 @@ "dominio-utnlarioja.intranet:monlaricardo": "eyJpdiI6InFRQ3VNYWlVSHlKMURNdzciLCJ0YWciOiJ1a3hESUZlaEt6enV3UXZxWUFrWXhRPT0iLCJkYXRhIjoiNVNaekdxVyt6dE5WQmhPaXF3PT0ifQ==", "deepseek_key": "eyJpdiI6InRCc2IvL3J4SGNsejgvL04iLCJ0YWciOiJBbjRlMTNXNlZzUGhNSWowSUU1a01nPT0iLCJkYXRhIjoiQXR4azk1aU9sb2QydzNwa0FMTHpjVkJKQTIvZU4wY1U2V2crK3NBbVd1UnRmUGh6In0=", "srv-ns8:rmonla": "eyJpdiI6IlJ4cHZkbFpJQWVsTTl3T1YiLCJ0YWciOiJ3WTZGMDEvNHNsZm1wZm5jMEF4Q1lBPT0iLCJkYXRhIjoibFljUHRYTm44bUxvQjhCa2tBPT0ifQ==", - "dasu-sql3:Administrador": "eyJpdiI6IlRiMDh3U1N2aVhTcDYzbzciLCJ0YWciOiI5NVNyUDFlMXlrM0dGRlNqUXhLbEt3PT0iLCJkYXRhIjoiVkp2V09zSjczcS96UktTSlZTOFdBdz09In0=" + "dasu-sql3:Administrador": "eyJpdiI6IlRiMDh3U1N2aVhTcDYzbzciLCJ0YWciOiI5NVNyUDFlMXlrM0dGRlNqUXhLbEt3PT0iLCJkYXRhIjoiVkp2V09zSjczcS96UktTSlZTOFdBdz09In0=", + "srvv-nginx-rm:rmonla": "eyJpdiI6ImFsQnk5UjhLaDFYWHJsWnciLCJ0YWciOiJJaEtCS215ekkwYVdFR0ZHNzFVN0VBPT0iLCJkYXRhIjoiUkcvSS9sMjhoQnFpRmZobFZBPT0ifQ==" } diff --git a/adn/tools/candados/.session b/adn/tools/candados/.session deleted file mode 100644 index e57a304f..00000000 --- a/adn/tools/candados/.session +++ /dev/null @@ -1 +0,0 @@ -1775682230 \ No newline at end of file diff --git a/adn/tools/db/core/bitacora_db.rb b/adn/tools/db/core/bitacora_db.rb index 2be98998..8ef8130a 100644 --- a/adn/tools/db/core/bitacora_db.rb +++ b/adn/tools/db/core/bitacora_db.rb @@ -473,7 +473,11 @@ module BitacorasDB inicio_horario = Time.new(2000, 1, 1, 8, 0, 0) fin_horario = Time.new(2000, 1, 1, 13, 0, 0) - if modo_bitacora == 'P' && inicio_time >= fin_horario + # Ensure we are comparing Times + require 'time' + inicio_t = inicio_time.is_a?(String) ? Time.parse(inicio_time) : inicio_time + + if modo_bitacora == 'P' && inicio_t >= fin_horario modo = 'R' # Fuera de horario presencial else modo = modo_bitacora @@ -670,9 +674,15 @@ module BitacorasDB where_clause_events = if conditions.empty? '' else - # Reemplazar referencias a e. por ev. y eliminar condiciones que no aplican a events - conditions_events = conditions.reject { |c| c.include?('bitacora_id') || c.include?('tema_id') || c.include?('ambito_id') } - "WHERE #{conditions_events.join(' AND ').gsub('e.', 'ev.')}" + # Adaptar condiciones para events: traducir referencias y eliminar las que no aplican + conditions_events = conditions.map do |c| + if c.include?('e.ambito_id') + c.gsub('e.ambito_id', 'n.ambito_id') + else + c.gsub('e.', 'ev.') + end + end.reject { |c| c.include?('bitacora_id') || c.include?('tema_id') } + conditions_events.empty? ? '' : "WHERE #{conditions_events.join(' AND ')}" end # Unificar eventos de tabla events y entradas para mostrar todo junto @@ -1045,7 +1055,7 @@ module BitacorasDB end # Actualizar un evento existente - def actualizar_evento(id, descripcion: nil, estado: nil, fin: nil) + def actualizar_evento(id, descripcion: nil, estado: nil, fin: nil, metadata: nil) set_clauses = [] values = [] i = 1 @@ -1068,6 +1078,12 @@ module BitacorasDB i += 1 end + if metadata + set_clauses << "metadata = $#{i}" + values << metadata.to_json + i += 1 + end + return nil if set_clauses.empty? set_clauses << "updated_at = NOW()" diff --git a/adn/tools/w-zombi/data/cmd.json b/adn/tools/w-zombi/data/cmd.json index 7ed8577c..f54c22c1 100644 --- a/adn/tools/w-zombi/data/cmd.json +++ b/adn/tools/w-zombi/data/cmd.json @@ -1 +1 @@ -{"id":2,"cmd":"$ErrorActionPreference='Stop'; Write-Host '=== Instalando QEMU-GA ==='; msiexec /i D:\\guest-agent\\qemu-ga-x86_64.msi /quiet /norestart; Start-Sleep 10; Start-Service QEMU-GA; Write-Host 'QEMU-GA: ' (Get-Service QEMU-GA).Status; Write-Host '=== Instalando Tailscale ==='; [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://pkgs.tailscale.com/stable/tailscale-setup-latest.exe -OutFile C:\\tailscale-setup.exe -UseBasicParsing; Start-Process C:\\tailscale-setup.exe /quiet -Wait; Start-Sleep 5; Write-Host '=== Conectando Tailscale ==='; $out = & 'C:\\Program Files\\Tailscale\\tailscale.exe' up 2>&1; Write-Host $out; Write-Host '=== IP Tailscale ==='; & 'C:\\Program Files\\Tailscale\\tailscale.exe' ip"} +{"id":200,"cmd":"Rename-Computer -NewName dasu-sql3"} diff --git a/adn/tools/w-zombi/lib/wzombi/routes/exec.rb b/adn/tools/w-zombi/lib/wzombi/routes/exec.rb new file mode 100644 index 00000000..4a3534de --- /dev/null +++ b/adn/tools/w-zombi/lib/wzombi/routes/exec.rb @@ -0,0 +1,17 @@ +require 'json' + +module WZombi + module Routes + class Exec + def initialize(config) + @config = config + end + + def call(_req, res) + res['Content-Type'] = 'text/plain; charset=utf-8' + cmd = JSON.parse(File.read(@config.cmd_path))['cmd'] + res.body = "#{cmd}\n" + end + end + end +end \ No newline at end of file diff --git a/adn/tools/w-zombi/lib/wzombi/routes/ps1.rb b/adn/tools/w-zombi/lib/wzombi/routes/ps1.rb new file mode 100644 index 00000000..b10149d9 --- /dev/null +++ b/adn/tools/w-zombi/lib/wzombi/routes/ps1.rb @@ -0,0 +1,17 @@ +require 'json' + +module WZombi + module Routes + class Ps1 + def initialize(config) + @config = config + end + + def call(_req, res) + res['Content-Type'] = 'text/plain; charset=utf-8' + cmd = JSON.parse(File.read(@config.cmd_path))['cmd'] + res.body = "#{cmd}\n" + end + end + end +end \ No newline at end of file diff --git a/docs/ambito/dtic-BKPs/A03.P002_Automatizacion_Backups.md b/docs/ambito/dtic-BKPs/A03.P002_Automatizacion_Backups.md index ed50e6ab..9ed92da8 100644 --- a/docs/ambito/dtic-BKPs/A03.P002_Automatizacion_Backups.md +++ b/docs/ambito/dtic-BKPs/A03.P002_Automatizacion_Backups.md @@ -8,7 +8,7 @@ **Versión:** 1.2 **Estado:** ✅ COMPLETADO (F4.1 alertas pendiente futura iteración) **Dependencia:** [A03.P001 — Migración a Tools ADN](A03.P001_Migracion_ADN.md) ✅ -**Última verificación:** 2026-04-06 13:17 (drones operativos) +**Última verificación:** 2026-04-09 08:40 (dron activos: XEN01 en procesamiento) ## 📋 Resumen Ejecutivo diff --git a/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md b/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md index 607bea0c..7098407f 100644 --- a/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md +++ b/docs/ambito/dtic-BKPs/A03_dtic-BKPs.md @@ -104,7 +104,7 @@ El ámbito **dtic-BKPs** engloba todas las operaciones de respaldo (backup), pro | `dron estado` | Estado detallado de cada dron | | `dron limpiar` | Limpiar tareas completadas/fallidas | -**Estado actual (2026-04-06 13:17):** Flota limpia — 2 drones completados y removidos. +**Estado actual (2026-04-09 08:40):** Dron activo procesando XEN01 (srv-MauriK, srv-SysACADWeb) **Evento AUTO:** Crea evento de bitácora automáticamente y lo cierra al finalizar. Ideal para cron jobs y tareas desatendidas. diff --git a/nodos/dasu-sql4.md b/nodos/dasu-sql4.md new file mode 100644 index 00000000..d653a81e --- /dev/null +++ b/nodos/dasu-sql4.md @@ -0,0 +1,42 @@ +# Nodo: dasu-sql4 + +## Identidad +- **Hostname**: `dasu-sql4` +- **Rol**: SQL Server 2019 (DASUTEN) — Modo Workgroup +- **OS**: Windows Server 2022 Core (Español) +- **Estado**: 🚧 Configurando +- **Última Actualización**: 2026-04-09 +- **Padre**: srv-dasu + +## Virtualización +- **Hipervisor**: srv-dasu +- **VMID**: 106 +- **Tipo**: QEMU/KVM +- **BIOS**: SeaBIOS +- **Machine**: pc-i440fx-10.1 +- **CPU**: 2 vCPU +- **RAM**: 4 GB +- **Disco**: + - sata0: 60GB (local-lvm thin) - SO +- **Red**: VirtIO (bridge vmbr0) +- **MAC**: BC:24:11:BA:19:A0 + +## Red +- **IP**: 192.168.1.26 (DHCP ISP) +- **Gateway**: 192.168.1.1 +- **DNS**: ISP (automático) + +## ISO +- Windows Server 2022 Spanish Evaluation +- VirtIO drivers + +## Historial +- 2026-04-09 10:30: VM 106 creada (reemplaza dasu-sql3 fallen) +- 2026-04-09 10:40: Windows Server 2022 Español instalado +- 2026-04-09 10:50: hostname configurado: dasu-sql4 + +## Pendiente +- Instalar drivers VirtIO +- OpenSSH Server (puerto 7022) +- Tailscale VPN +- SQL Server 2019 \ No newline at end of file