Commit Graph
83 Commits
Author SHA1 Message Date
Lizandro Guarnizo c05a2a8137 up 2026-06-03 21:32:50 -05:00
Lizandro Guarnizo 1e1ba682b0 up 2026-06-02 15:41:20 -05:00
Lizandro Guarnizo 28d0eae715 up 2026-06-02 13:13:29 -05:00
Lizandro Guarnizo f8b352eb03 add logo_url to landing questions; add color/foto_perfil extraction to vcard 2026-05-28 22:44:42 -05:00
Lizandro Guarnizo 52ce8638a8 replace cta with social_media question; add SocialMedia field to landing_session 2026-05-28 20:49:35 -05:00
Lizandro Guarnizo 06d85dc0bf up 2026-05-27 10:16:28 -05:00
Lizandro Guarnizo 498e1d5743 up 2026-05-27 09:34:21 -05:00
Lizandro Guarnizo 36c9e0a6d5 up 2026-05-26 21:55:48 -05:00
Lizandro Guarnizo 7a374340c1 up 2026-05-26 20:54:10 -05:00
Lizandro Guarnizo c82831702e up 2026-05-25 15:14:04 -05:00
Lizandro Guarnizo 1a96caeb83 ip 2026-05-21 23:49:37 -05:00
Lizandro Guarnizo d121f399ed up 2026-05-21 22:52:24 -05:00
Lizandro Guarnizo 0cf7c6d279 up 2026-05-21 22:37:31 -05:00
Lizandro GuarnizoandCopilot 2779c0a15d fix: ping real de BD + campo Host en ConxDb + reactividad Alpine
Problema raíz:
1. El ping TCP usaba Servidor.IpServidor → fallaba si la BD solo escucha
   en localhost del servidor remoto (comportamiento normal en producción)
2. La reactividad Alpine v3.13 no detectaba keys nuevas en objeto vacío {}
   dentro de x-for loops, spinner nunca aparecía

Cambios:
- pkg/models/conx_db.go: nuevo campo Host (vacío = usa Servidor.IpServidor)
  + método HostEfectivo() como fuente única de verdad para host
- pkg/services/query_runner_service.go: todos los puntos (openDynamicDB,
  openDynamicDBWithName, redisConnect, mongoURI) usan c.HostEfectivo()
- rest/controllers/servidor_controller.go: PingConexion reescrito —
  primero prueba conexión real a la BD (no solo TCP), si falla prueba TCP,
  devuelve host+puerto testeado y mensajes de error descriptivos
- servidor_dashboard.html: hacerPing usa spread-replace para forzar
  reactividad + $nextTick, resultado muestra host:puerto testeado y
  mensaje de error completo en múltiples líneas

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-21 11:56:12 -05:00
Lizandro GuarnizoandCopilot d9d3f8a5eb feat: sistema de agente ligero para monitoreo de servidores
Backend:
- Servidor model: AgentToken, AgentLastSeen, MetricasJson nuevos campos
- AgentHeartbeat: endpoint público POST /agent/heartbeat (auth por token)
- GenerateAgentToken: endpoint protegido POST /app/servidor/:id/agent-token
- Ruta pública /agent/install.sh sirve el script de instalación

Agente Go (agent/):
- agent/main.go: binario independiente con gopsutil
  - Recolecta RAM, CPU, Disco, Uptime, OS, Load average
  - Lee agent.yml o flags --api-url / --token
  - Envía POST a /agent/heartbeat cada N segundos
  - Instala como servicio systemd via install.sh
- agent/go.mod: módulo independiente (usite-agent)
- agent/agent.yml.sample: configuración de ejemplo
- agent/install.sh: instalador en 1 curl para Linux (systemd)

Frontend servidor_dashboard.html:
- Cards: badge ● En línea / ● Fuera / ○ Sin agente
- Barras de progreso live: RAM%, CPU%, Disco%
- Valores: GB usado/total, núcleos, uptime, OS real
- Tiempo desde último reporte
- Botón 'Agente' en cada card → modal de configuración
- Modal agente: estado, token con copy, comando curl 1 línea,
  instalación manual/avanzada con collapse, métricas actuales

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-21 11:29:24 -05:00
Lizandro GuarnizoandCopilot b4b60810a1 feat(prov_servidor): add many2many integrations linking
- ProvServidor model: add Integraciones []Submodules (many2many:prov_servidor_submodules)
- GetAllProvServidor: preload Integraciones
- SetProvServidorIntegraciones: new model func to replace associations
- New endpoint PUT /app/provservidor/:id/integraciones
- GetSubmodules: support ?limit= query param
- prov_servidor.html: show integrations as badges in table, view modal,
  and edit modal with checkboxes to select one or more existing submodules

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-21 10:34:01 -05:00
Lizandro Guarnizo a44fb490f7 feat(conx_db): add nombre, estado, and version fields to ConxDb model and update Create/Update functions 2026-05-21 10:16:57 -05:00
Lizandro Guarnizo 31259cbb71 feat: actualizar lógica de filtrado de usuarios y establecer tipo de usuario por defecto en creación 2026-05-19 20:26:25 -05:00
Lizandro Guarnizo 24e1cf1439 feat: add VCard API integration with configuration and proxy endpoints
- Implemented VCard API controller with methods to manage configuration (save, get).
- Added proxy functions to handle API requests for users, vcards, memberships, payments, transactions, logs, and miniwebs.
- Included error handling and response formatting for API interactions.
2026-05-19 20:08:50 -05:00
Lizandro GuarnizoandCopilot 6e27032ac6 feat(portal): agregar flujo de recuperación de contraseña
- Nuevo modelo PortalPasswordResetToken con token seguro (32 bytes, 1h vigencia)
- AutoMigrate del nuevo modelo en main.go
- SendPortalPasswordResetEmail con diseño consistente al app
- Handlers: PortalForgotPasswordPage/Post y PortalResetPasswordPost/Page
- Rutas públicas GET/POST /portal/forgot-password y /portal/reset-password
- Vistas forgot_password.html y reset_password.html con validación JS
- Enlace ¿Olvidaste tu contraseña? en login.html + soporte mensaje success

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 15:25:53 -05:00
Lizandro Guarnizo b5e6a9285f up 2026-05-19 13:33:39 -05:00
Lizandro Guarnizo 762ebc2afc up 2026-05-19 13:09:06 -05:00
Lizandro Guarnizo d713dcd47b up 2026-05-19 12:43:19 -05:00
Lizandro Guarnizo 25f21be966 up 2026-05-18 19:17:05 -05:00
Lizandro Guarnizo 4b2003c752 ip 2026-05-16 21:54:17 -05:00
Lizandro Guarnizo 65f35fbc51 Update telegram_portal_token.go 2026-05-16 21:42:37 -05:00
Lizandro Guarnizo 5aad09f1cd up 2026-05-16 21:41:44 -05:00
Lizandro Guarnizo 1511ca97d9 up 2026-05-16 21:36:59 -05:00
Lizandro Guarnizo 4fa506c7d6 up 2026-05-16 21:27:30 -05:00
Lizandro Guarnizo fcc3ff7ca7 up 2026-05-16 21:05:05 -05:00
Lizandro Guarnizo 562ffa4184 up 2026-05-16 20:54:11 -05:00
Lizandro Guarnizo 2b7458b612 up 2026-05-16 20:01:36 -05:00
Lizandro Guarnizo 4c14f4a641 up 2026-05-16 18:47:40 -05:00
Lizandro Guarnizo b6203c1a68 Update notif_config.go 2026-05-16 16:36:36 -05:00
Lizandro Guarnizo 1b22cc2fe7 k 2026-05-16 15:26:48 -05:00
Lizandro Guarnizo 9820405475 up 2026-05-16 15:06:05 -05:00
Lizandro Guarnizo fef471ff6c up 2026-05-16 14:37:57 -05:00
Lizandro Guarnizo 76a0c28b16 up 2026-05-16 13:44:32 -05:00
Lizandro Guarnizo 49cc56123b up 2026-05-15 23:22:35 -05:00
Lizandro Guarnizo 5ec5595196 up 2026-05-15 21:01:30 -05:00
Lizandro Guarnizo 3a301267e7 up 2026-05-15 17:03:53 -05:00
Lizandro Guarnizo 04fd456a4c mejora del portal 2026-05-15 15:39:48 -05:00
Lizandro Guarnizo b340d29583 up 2026-05-15 14:26:52 -05:00
Lizandro Guarnizo 2377371b2c up 2026-05-14 22:52:10 -05:00
Lizandro Guarnizo 61b3eca31d up 2026-05-14 22:30:31 -05:00
Lizandro Guarnizo ce2fed2587 up 2026-05-13 22:36:09 -05:00
Lizandro Guarnizo 9bcddcf1ea up 2026-05-13 22:05:20 -05:00
Lizandro Guarnizo 381425b7e6 ip 2026-05-12 22:34:10 -05:00
Lizandro Guarnizo aead156ba8 up 2026-05-12 22:07:31 -05:00
Lizandro Guarnizo fd8b5d68fa up 2026-05-12 21:41:26 -05:00