From f5dc96eee5ae8e3884fd288de1d0c607ee098f2d Mon Sep 17 00:00:00 2001 From: Marcos Date: Mon, 13 Apr 2026 21:42:04 +0200 Subject: [PATCH] Version Inicial --- .gitignore | 27 ++ README.md | 0 conf/DockerBot.jpg | Bin 0 -> 265367 bytes conf/locales/en.json | 85 ++++++ conf/locales/es.json | 85 ++++++ conf/users.json | 3 + go.mod | 32 +++ go.sum | 65 +++++ handleDockerAction.go | 71 +++++ handleDockerInfo.go | 198 ++++++++++++++ handleDockerList.go | 154 +++++++++++ handleDockerLogs.go | 256 ++++++++++++++++++ internal/apperrors/apperrors.go | 5 + internal/auth/auth.go | 87 ++++++ internal/cache/cache.go | 83 ++++++ internal/config/config.go | 65 +++++ internal/docker/docker.go | 238 +++++++++++++++++ internal/i18n/i18n.go | 160 ++++++++++++ internal/logger/logger.go | 42 +++ internal/ui/ui.go | 450 ++++++++++++++++++++++++++++++++ main.go | 303 +++++++++++++++++++++ middelwares.go | 104 ++++++++ utils.go | 28 ++ view_containers.go | 89 +++++++ 24 files changed, 2630 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 conf/DockerBot.jpg create mode 100644 conf/locales/en.json create mode 100644 conf/locales/es.json create mode 100644 conf/users.json create mode 100644 go.mod create mode 100644 go.sum create mode 100644 handleDockerAction.go create mode 100644 handleDockerInfo.go create mode 100644 handleDockerList.go create mode 100644 handleDockerLogs.go create mode 100644 internal/apperrors/apperrors.go create mode 100644 internal/auth/auth.go create mode 100644 internal/cache/cache.go create mode 100644 internal/config/config.go create mode 100644 internal/docker/docker.go create mode 100644 internal/i18n/i18n.go create mode 100644 internal/logger/logger.go create mode 100644 internal/ui/ui.go create mode 100644 main.go create mode 100644 middelwares.go create mode 100644 utils.go create mode 100644 view_containers.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e30c2b --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Binarios y archivos de compilación +bin/ +out/ +dist/ +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Herramientas de Go +*.test +*.out +vendor/ + +# Carpetas solicitadas por el usuario +.vscode/ +resources/ +*.txt + +# Variables de entorno y secretos +.env +*.env.local + +# Archivos del sistema +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/conf/DockerBot.jpg b/conf/DockerBot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78b6ea6c726a8eb5ab1b0600e5c84a32deaebb24 GIT binary patch literal 265367 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 z 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%0AQ!;z}w9Sa)k3|OFIK!ugQ=j`SvN(|Q(TFqb~ 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
0#e#=uh$6882I&pAIFf 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%0AsqSP^#r{y#=SN5L;h2fl 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
  • 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. 🤖\n\nThis bot allows you to:\n- Check container status\n- Monitor container health\n- View detailed container information\n- Check logs\n- Start, stop, or restart containers\n\nUse the /help command to see all available commands.", + "app.help": "🤖 DockerBot\nYour container management assistant\n\n📦 Available commands\n\n🔹 /docker\n └ List all containers\n\n🔹 /docker info <container>\n └ Show detailed container info\n\n🔹 /docker start|stop|pause|unpause|restart <container>\n └ Manage container state\n\n🔹 /docker logs <container> [--tail N] [--follow]\n └ View container logs\n\n🔹 /docker help\n └ Show this help message", + "app.headerList": "📊 DOCKER STATUS", + "app.short": "Your container captain on Telegram 🐋", + "app.about": "The only bot not afraid of whales! 🤖\n\nManaging, monitoring, and reviving your Docker containers so you can sleep without 'Exited (1)' nightmares.\n\nTotal control: listing, logs, and state management without touching the terminal. 🛠️", + "app.status": "Managing containers... ⚙️", + + "ui.separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━", + "ui.prev": "⬅️ Previous", + "ui.next": "➡️ Next", + "ui.back": "↩️ Return", + "ui.page": "📄 Page {current}/{total}", + "ui.updated": "Updated", + + "btn.start":"▶️ Start", + "btn.stop":"⏹️ Stop", + "btn.restart":"🔁 Restart", + "btn.pause":"⏸️ Pause", + "btn.resume":"🔂 Resume", + "btn.logs": "📜 Logs", + "btn.refresh": "🔄 Refresh", + + "list.container.header": "📦 {name}", + "list.container.image": "{image}", + "list.container.state": "{emoji} {state}", + "list.container.health_suffix": " ({health})", + + "list.summary": "🟢 {running} 🔴 {stopped} 🟡 {restarting} ⏸ {paused} ⚪ {other}", + + "i.cmd.start": "Start the bot", + "i.cmd.docker": "Manage Docker containers", + "i.cmd.docker.detailed": "Docker commands \n (list, info, logs...)", + "i.cmd.help": "Show help", + "i.auth.unauthorized": "You are not authorized to use this bot 🚫", + + "d.state.created": "Created", + "d.state.running": "Running", + "d.state.paused": "Paused", + "d.state.restarting": "Restarting", + "d.state.removing": "Removing", + "d.state.exited": "Stopped", + "d.state.dead": "Dead", + "d.health.none": "No healthcheck", + "d.health.starting": "Starting", + "d.health.healthy": "Healthy", + "d.health.unhealthy": "Unhealthy", + + "c.header": "📦 {name}", + "c.separator": "────────────────────", + "c.id": "🆔 ID: {id}", + "c.image": "🖼️ Image: {image}", + "c.path": "🗂️ Path: {path}", + "c.command": "⚙️ Command: {command}", + "c.created": "📅 Created: {created}", + "c.state": "🟢 State: {state}", + "c.health": "{emoji} Health: {health}", + "c.restart": "🔄 Restart Count: {count}", + "c.started": "🟢 Started At: {started}", + "c.finished": "🔴 Finished At: {finished}", + "c.ports": "🌐 Ports:", + "c.mounts": "📁 Mounts:", + "c.networks": "🔗 Networks:", + + "e.container.list": "Error listing containers ❌", + "e.container.list.not_found": "No containers found 🚫", + "e.container.missing_name": "You must provide the container name. Example: /docker {example} my_container {opts}", + "e.container.action": "Error executing action on container ❌", + "e.container.info": "An error occurred while retrieving container information ❌", + "e.container.not_found": "Container not found 🚫", + "e.container.logs": "Error retrieving logs", + + "e.unknown_command": "Unknown command ❌\nUse /docker help or /help to see all available commands", + + "a.container.start": "Container {name} started successfully", + "a.container.stop": "Container {name} stopped successfully", + "a.container.restart": "Container {name} restarted successfully", + "a.container.pause": "Container {name} paused successfully", + "a.container.unpause": "Container {name} resumed successfully", + + "logs.header": "📜 Logs for {name}", + "logs.empty": "No logs available", + "logs.truncated": "⚠️ Showing last part of logs" +} \ No newline at end of file diff --git a/conf/locales/es.json b/conf/locales/es.json new file mode 100644 index 0000000..07f6328 --- /dev/null +++ b/conf/locales/es.json @@ -0,0 +1,85 @@ +{ + "app.title": "DockerBot 🤖", + "app.welcome": "¡Hola, {name}! 👋\n\nBienvenido a DockerBot. 🤖\n\nEste bot te permite:\n- Consultar el estado de los contenedores\n- Revisar la salud de tus contenedores\n- Ver información detallada de cada contenedor\n- Consultar logs\n- Iniciar, detener o reiniciar contenedores\n\nUsa el comando /help para obtener una lista de todos los comandos disponibles.", + "app.help": "🤖 DockerBot\nTu asistente para gestionar contenedores\n\n📦 Comandos disponibles\n\n🔹 /docker\n └ Lista todos los contenedores\n\n🔹 /docker info <contenedor>\n └ Muestra información detallada\n\n🔹 /docker start|stop|pause|unpause|restart <contenedor>\n └ Gestiona el estado del contenedor\n\n🔹 /docker logs <contenedor> [--tail N] [--follow]\n └ Muestra logs del contenedor\n\n🔹 /docker help\n └ Muestra esta ayuda", + "app.headerList": "📊 ESTADO DE DOCKER", + "app.short": "Tu capitán de contenedores en Telegram 🐋", + "app.about": "¡El único bot que no teme a las ballenas! 🤖\n\nGestiono, vigilo y revivo tus contenedores Docker para que puedas dormir sin pesadillas de 'Exited (1)'.\n\nControl total: listado, logs y gestión de estados sin tocar la terminal. 🛠️", + "app.status": "Operando contenedores... ⚙️", + + "ui.separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━", + "ui.prev": "⬅️ Anterior", + "ui.next": "➡️ Siguiente", + "ui.back": "↩️ Regresar", + "ui.page": "📄 Página {current}/{total}", + "ui.updated": "Actualizado", + + "btn.start":"▶️ Iniciar", + "btn.stop":"⏹️ Detener", + "btn.restart":"🔁 Reiniciar", + "btn.pause":"⏸️ Pausar", + "btn.resume":"🔂 Reanudar", + "btn.logs": "📜 Logs", + "btn.refresh": "🔄 Actualizar", + + "list.container.header": "📦 {name}", + "list.container.image": "{image}", + "list.container.state": "{emoji} {state}", + "list.container.health_suffix": " ({health})", + + "list.summary": "🟢 {running} 🔴 {stopped} 🟡 {restarting} ⏸ {paused} ⚪ {other}", + + "i.cmd.start": "Iniciar el bot", + "i.cmd.docker": "Gestionar contenedores Docker", + "i.cmd.docker.detailed": "Comandos Docker \n (list, info, logs...)", + "i.cmd.help": "Mostrar ayuda", + "i.auth.unauthorized": "No tienes permisos para usar este bot 🚫", + + "d.state.created":"Creado", + "d.state.running":"Ejecutando", + "d.state.paused":"Pausado", + "d.state.restarting":"Reiniciando", + "d.state.removing":"Eliminando", + "d.state.exited":"Detenido", + "d.state.dead":"No operativo", + "d.health.none":"Sin healthcheck", + "d.health.starting":"Iniciando", + "d.health.healthy":"Saludable", + "d.health.unhealthy":"No saludable", + + "c.header": "📦 {name}", + "c.separator": "────────────────────", + "c.id": "🆔 ID: {id}", + "c.image": "🖼️ Imagen: {image}", + "c.path": "🗂️ Ruta: {path}", + "c.command": "⚙️ Comando: {command}", + "c.created": "📅 Creado: {created}", + "c.state": "{emoji} Estado: {state}", + "c.health": "{emoji} Salud: {health}", + "c.restart": "🔄 Reinicios: {count}", + "c.started": "🟢 Iniciado: {started}", + "c.finished": "🔴 Finalizado: {finished}", + "c.ports": "🌐 Puertos:", + "c.mounts": "📁 Volúmenes:", + "c.networks": "🔗 Redes:", + + "e.container.list": "Error al listar contenedores ❌", + "e.container.list.not_found": "No se han encontrado contenedores 🚫", + "e.container.missing_name": "Debes indicar el nombre del contenedor. Ej: /docker {example} my_container {opts}", + "e.container.action": "Error al ejecutar la acción en el contenedor ❌", + "e.container.info": "Ocurrió un error al consultar la información del contenedor ❌", + "e.container.not_found": "No se ha encontrado el contenedor 🚫", + "e.container.logs": "Error obteniendo logs", + + "e.unknown_command": "Comando no reconocido ❌\nUsa /docker help o /help para ver todos los comandos disponibles", + + "a.container.start": "Contenedor {name} iniciado correctamente", + "a.container.stop": "Contenedor {name} detenido correctamente", + "a.container.restart": "Contenedor {name} reiniciado correctamente", + "a.container.pause": "Contenedor {name} pausado correctamente", + "a.container.unpause": "Contenedor {name} reanudado correctamente", + + "logs.header": "📜 Logs de {name}", + "logs.empty": "No hay logs disponibles", + "logs.truncated": "⚠️ Mostrando las últimas líneas de los logs" +} diff --git a/conf/users.json b/conf/users.json new file mode 100644 index 0000000..dd1c389 --- /dev/null +++ b/conf/users.json @@ -0,0 +1,3 @@ +{ + "2048330133": true +} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..09c9495 --- /dev/null +++ b/go.mod @@ -0,0 +1,32 @@ +module fergalla.com/dockerbot + +go 1.26.1 + +require ( + github.com/go-telegram/bot v1.20.0 + github.com/moby/moby/client v0.4.0 +) + +require github.com/cespare/xxhash/v2 v2.3.0 // indirect + +require ( + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/containerd/errdefs v1.0.0 + github.com/containerd/errdefs/pkg v0.3.0 // indirect + github.com/distribution/reference v0.6.0 // indirect + github.com/docker/go-connections v0.6.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/moby/api v1.54.1 + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect + golang.org/x/sys v0.43.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..c001a3c --- /dev/null +++ b/go.sum @@ -0,0 +1,65 @@ +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= +github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-telegram/bot v1.20.0 h1:4Pea/qTidSspr4WBJw9FbHUMNhYeqszBqQUfsQEyFbc= +github.com/go-telegram/bot v1.20.0/go.mod h1:i2TRs7fXWIeaceF3z7KzsMt/he0TwkVC680mvdTFYeM= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/moby/api v1.54.1 h1:TqVzuJkOLsgLDDwNLmYqACUuTehOHRGKiPhvH8V3Nn4= +github.com/moby/moby/api v1.54.1/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.4.0 h1:S+2XegzHQrrvTCvF6s5HFzcrywWQmuVnhOXe2kiWjIw= +github.com/moby/moby/client v0.4.0/go.mod h1:QWPbvWchQbxBNdaLSpoKpCdf5E+WxFAgNHogCWDoa7g= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= diff --git a/handleDockerAction.go b/handleDockerAction.go new file mode 100644 index 0000000..c182270 --- /dev/null +++ b/handleDockerAction.go @@ -0,0 +1,71 @@ +package main + +import ( + "context" + "errors" + + "fergalla.com/dockerbot/internal/apperrors" + "github.com/go-telegram/bot" +) + +func (appCtx *App) handleDockerAction(ctx context.Context, b *bot.Bot, chatID int64, action string, params []string) { + + if len(params) == 0 { + appCtx.sendMessage(ctx, b, chatID, + appCtx.T("e.container.missing_name", map[string]string{"example": action}), + true, + nil, + ) + return + } + + container := params[0] + + err := appCtx.dockerInfo.ContainerAction(container, action) + if err != nil { + appCtx.logger.Error( + "Failed to execute docker action", + "module", "Docker", + "action", action, + "container", container, + "error", err, + ) + var msg string + if errors.Is(err, apperrors.ErrContainerNotFound) { + msg = appCtx.T("e.docker.connection") + } else { + msg = appCtx.T("e.container.action") + } + appCtx.sendMessage(ctx, b, chatID, msg, true, nil) + return + } + + // 🔄 invalidar cache + appCtx.containerCache.Invalidate() + + // 🎨 render vista actualizada + text, keyboard, err := appCtx.renderContainerDetail(ctx, container, 0) + if err != nil { + appCtx.logger.Error( + "Failed to render container detail after action", + "module", "Bot", + "container", container, + "error", err, + ) + var msg string + if errors.Is(err, apperrors.ErrContainerNotFound) { + msg = appCtx.T("e.container.not_found") + } else { + msg = appCtx.T("e.container.info") + } + appCtx.sendMessage(ctx, b, chatID, msg, true, nil) + return + } + + // ✅ feedback + vista + finalText := appCtx.T("a.container."+action, map[string]string{ + "name": container, + }) + "\n\n" + text + + appCtx.sendMessage(ctx, b, chatID, finalText, true, keyboard) +} diff --git a/handleDockerInfo.go b/handleDockerInfo.go new file mode 100644 index 0000000..904a673 --- /dev/null +++ b/handleDockerInfo.go @@ -0,0 +1,198 @@ +package main + +import ( + "context" + "errors" + "strconv" + "strings" + + "fergalla.com/dockerbot/internal/apperrors" + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" +) + +func (appCtx *App) handleDockerInfo(ctx context.Context, b *bot.Bot, chatID int64, params []string) { + if len(params) == 0 { + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.container.missing_name", map[string]string{"example": "info"}), true, nil) + return + } + text, keyboard, err := appCtx.renderContainerDetail(ctx, params[0], 0) + if err != nil { + appCtx.logger.Error( + "Failed to render container info", + "module", "Bot", + "container", params[0], + "error", err, + ) + if errors.Is(err, apperrors.ErrContainerNotFound) { + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.container.not_found"), true, nil) + } else { + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.container.info"), true, nil) + } + return + } + + appCtx.sendMessage(ctx, b, chatID, text, true, keyboard) +} + +func (appCtx *App) callbackHandlerContainer(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + data := cb.Data + + parts := strings.Split(data, ":") + if len(parts) < 3 { + return + } + + scope := parts[0] + action := parts[1] + container := parts[2] + + if scope != "docker_action" { + return + } + + // 🧠 estado (page opcional) + pageIndex := 0 + if len(parts) >= 4 { + if p, err := strconv.Atoi(parts[3]); err == nil { + pageIndex = p + } + } + + var successMsg string + + // 🔧 acción (excepto refresh) + if action != "refresh" { + err := appCtx.dockerInfo.ContainerAction(container, action) + if err != nil { + appCtx.logger.Error( + "Docker action failed (callback)", + "module", "Docker", + "action", action, + "container", container, + "error", err, + ) + var msg string + if errors.Is(err, apperrors.ErrContainerNotFound) { + msg = appCtx.T("e.docker.connection") + + } else { + msg = appCtx.T("e.container.action") + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: msg, + ShowAlert: true, + }) + return + } + + successMsg = appCtx.T("a.container."+action, map[string]string{ + "name": container, + }) + } + + // 🔄 invalidar cache SIEMPRE (acción o refresh) + appCtx.containerCache.Invalidate() + + // 🎨 render centralizado + text, keyboard, err := appCtx.renderContainerDetail(ctx, container, pageIndex) + if err != nil { + msg := appCtx.T("e.container.info") + if err.Error() == "container_not_found" { + msg = appCtx.T("e.container.not_found") + } + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: msg, + ShowAlert: true, + }) + return + } + + // ✅ respuesta UX + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: successMsg, + ShowAlert: false, + }) + + // 🔄 actualizar mensaje + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn( + "Failed to edit message after action", + "module", "Bot", + "error", err, + ) + return + } +} + +func (appCtx *App) callbackDockerInfo(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) < 2 { + return + } + + container := parts[1] + + pageIndex := 0 + if len(parts) >= 3 { + if p, err := strconv.Atoi(parts[2]); err == nil { + pageIndex = p + } + } + + text, keyboard, err := appCtx.renderContainerDetail(ctx, container, pageIndex) + if err != nil { + var msg string + if errors.Is(err, apperrors.ErrContainerNotFound) { + msg = appCtx.T("e.container.not_found") + } else { + msg = appCtx.T("e.container.info") + } + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: msg, + ShowAlert: true, + }) + return + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + }) + + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn("Failed to edit message (container info)", "error", err) + return + } +} diff --git a/handleDockerList.go b/handleDockerList.go new file mode 100644 index 0000000..f1baf01 --- /dev/null +++ b/handleDockerList.go @@ -0,0 +1,154 @@ +package main + +import ( + "context" + "strconv" + "strings" + + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" +) + +func (appCtx *App) handleDockerList(ctx context.Context, b *bot.Bot, chatID int64) { + text, keyboard, _ := appCtx.renderContainerPage(ctx, 0, true) + appCtx.sendMessage(ctx, b, chatID, text, true, keyboard) +} + +func (appCtx *App) callbackDockerPagination(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) != 2 { + return + } + + pageIndex, err := strconv.Atoi(parts[1]) + if err != nil { + pageIndex = 0 + } + + text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, false) + if err != nil { + appCtx.logger.Error("Pagination render failed", "error", err) + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: appCtx.T("e.container.list"), + ShowAlert: true, + }) + return + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + }) + + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn("Failed pagination edit", "error", err) + return + } +} + +func (appCtx *App) callbackDockerListRefresh(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) != 2 { + return + } + + pageIndex, err := strconv.Atoi(parts[1]) + if err != nil { + pageIndex = 0 + } + + text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, true) + if err != nil { + appCtx.logger.Error("Refresh render failed", "error", err) + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: appCtx.T("e.container.list"), + ShowAlert: true, + }) + return + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: "🔄 Actualizado", + }) + + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn("Failed refresh edit", "error", err) + return + } +} + +func (appCtx *App) callbackDockerBack(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) != 2 { + return + } + + pageIndex, err := strconv.Atoi(parts[1]) + if err != nil { + pageIndex = 0 + } + + text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, false) + if err != nil { + appCtx.logger.Error("Back render failed", "error", err) + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: appCtx.T("e.container.list"), + ShowAlert: true, + }) + return + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + }) + + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn("Failed back edit", "error", err) + return + } +} diff --git a/handleDockerLogs.go b/handleDockerLogs.go new file mode 100644 index 0000000..23d8a4e --- /dev/null +++ b/handleDockerLogs.go @@ -0,0 +1,256 @@ +package main + +import ( + "context" + "errors" + "strconv" + "strings" + + "fergalla.com/dockerbot/internal/apperrors" + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" +) + +func (appCtx *App) handleDockerLogs(ctx context.Context, b *bot.Bot, chatID int64, params []string) { + if len(params) == 0 { + appCtx.sendMessage( + ctx, + b, + chatID, + appCtx.T("e.container.missing_name", map[string]string{ + "example": "logs", + "opts": " --tail 10", + }), + true, + nil, + ) + return + } + + container, tail := parseLogsParams(params) + + text, keyboard, err := appCtx.renderContainerLogs(ctx, container, 0, tail) + if err != nil { + appCtx.logger.Error( + "Failed to render container logs", + "module", "Bot", + "container", container, + "tail", tail, + "error", err, + ) + if errors.Is(err, apperrors.ErrContainerNotFound) { + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.container.not_found"), true, nil) + } else { + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.container.logs"), true, nil) + } + return + } + appCtx.sendMessage(ctx, b, chatID, text, true, keyboard) +} + +func parseLogsParams(params []string) (container string, tail int) { + const defaultTail = 0 + const maxTail = 100 + + if len(params) == 0 { + return "", defaultTail + } + + container = params[0] + tail = defaultTail + + for i := 1; i < len(params); i++ { + if params[i] == "--tail" && i+1 < len(params) { + if v, err := strconv.Atoi(params[i+1]); err == nil { + tail = v + } + i++ // saltar valor + } + } + + // clamp + if tail <= 0 { + tail = defaultTail + } + if tail > maxTail { + tail = maxTail + } + + return +} + +func (appCtx *App) callbackDockerLogs(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) < 2 { + return + } + + container := parts[1] + + pageIndex := 0 + if len(parts) >= 3 { + if p, err := strconv.Atoi(parts[2]); err == nil { + pageIndex = p + } + } + tail := 0 // default + if len(parts) >= 4 { + if t, err := strconv.Atoi(parts[3]); err == nil { + tail = t + } + } + + text, keyboard, err := appCtx.renderContainerLogs(ctx, container, pageIndex, tail) + if err != nil { + appCtx.logger.Error("Logs render generator failed", "error", err) + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: appCtx.T("e.container.logs"), + ShowAlert: true, + }) + return + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + }) + + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn("Failed to render logs", "error", err) + return + } +} + +func (appCtx *App) callbackDockerLogsRefresh(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) < 2 { + return + } + + container := parts[1] + + pageIndex := 0 + if len(parts) >= 3 { + if p, err := strconv.Atoi(parts[2]); err == nil { + pageIndex = p + } + } + tail := 0 // default + if len(parts) >= 4 { + if t, err := strconv.Atoi(parts[3]); err == nil { + tail = t + } + } + + // 🎨 render logs actualizado + text, keyboard, err := appCtx.renderContainerLogs(ctx, container, pageIndex, tail) + if err != nil { + var msg string + if errors.Is(err, apperrors.ErrContainerNotFound) { + msg = appCtx.T("e.container.not_found") + } else { + msg = appCtx.T("e.container.logs") + } + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: msg, + ShowAlert: true, + }) + return + } + + // ✅ feedback UX + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: "🔄 " + appCtx.T("ui.updated"), + ShowAlert: false, + }) + + // 🔄 actualizar mensaje + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn( + "Failed to refresh logs", + "module", "Bot", + "container", container, + "error", err, + ) + return + } +} + +func (appCtx *App) callbackDockerBackDetail(ctx context.Context, b *bot.Bot, update *models.Update) { + if update.CallbackQuery == nil { + return + } + + cb := update.CallbackQuery + parts := strings.Split(cb.Data, ":") + + if len(parts) < 2 { + return + } + + container := parts[1] + + pageIndex := 0 + if len(parts) >= 3 { + if p, err := strconv.Atoi(parts[2]); err == nil { + pageIndex = p + } + } + + text, keyboard, err := appCtx.renderContainerDetail(ctx, container, pageIndex) + if err != nil { + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + Text: appCtx.T("e.container.info"), + ShowAlert: true, + }) + return + } + + b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{ + CallbackQueryID: cb.ID, + }) + + _, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{ + ChatID: cb.Message.Message.Chat.ID, + MessageID: cb.Message.Message.ID, + Text: text, + ParseMode: "html", + ReplyMarkup: keyboard, + }) + + if err != nil { + appCtx.logger.Warn("Failed to go back to detail", "error", err) + return + } +} diff --git a/internal/apperrors/apperrors.go b/internal/apperrors/apperrors.go new file mode 100644 index 0000000..14ea7ce --- /dev/null +++ b/internal/apperrors/apperrors.go @@ -0,0 +1,5 @@ +package apperrors + +import "errors" + +var ErrContainerNotFound = errors.New("container_not_found") diff --git a/internal/auth/auth.go b/internal/auth/auth.go new file mode 100644 index 0000000..0dbf327 --- /dev/null +++ b/internal/auth/auth.go @@ -0,0 +1,87 @@ +package auth + +import ( + "encoding/json" + "errors" + "io/fs" + "os" + "sync" +) + +type Store struct { + file string + users map[int64]bool + mu sync.RWMutex +} + +func New(file string) (*Store, error) { + users, err := loadUsers(file) + if err != nil { + return nil, err + } + return &Store{ + file: file, + users: users, + }, nil +} +func (s *Store) IsAllowed(userID int64) bool { + s.mu.RLock() + defer s.mu.RUnlock() + return s.users[userID] +} +func (s *Store) IsEmpty() bool { + s.mu.RLock() + defer s.mu.RUnlock() + return len(s.users) == 0 +} +func (s *Store) FirstUser(userID int64) error { + s.mu.Lock() + defer s.mu.Unlock() + s.users[userID] = true + return s.save() +} +func (s *Store) Add(userID int64) error { + s.mu.Lock() + defer s.mu.Unlock() + s.users[userID] = true + return s.save() +} +func (s *Store) Remove(userID int64) error { + s.mu.Lock() + defer s.mu.Unlock() + delete(s.users, userID) + return s.save() +} +func (s *Store) save() error { + data, err := json.MarshalIndent(s.users, "", " ") + if err != nil { + return err + } + + tmpFile := s.file + ".tmp" + if err := os.WriteFile(tmpFile, data, 0644); err != nil { + return err + } + + return os.Rename(tmpFile, s.file) +} +func loadUsers(file string) (map[int64]bool, error) { + data, err := os.ReadFile(file) + if err != nil { + if errors.Is(err, fs.ErrNotExist) { + return make(map[int64]bool), nil + } + return nil, err + } + + users := make(map[int64]bool) + if len(data) == 0 { + return users, nil + } + + if err := json.Unmarshal(data, &users); err != nil { + return nil, err + } + + return users, nil +} diff --git a/internal/cache/cache.go b/internal/cache/cache.go new file mode 100644 index 0000000..63c34f2 --- /dev/null +++ b/internal/cache/cache.go @@ -0,0 +1,83 @@ +package cache + +import ( + "sync" + "time" + + "fergalla.com/dockerbot/internal/docker" +) + +type ContainerCache struct { + mu sync.RWMutex + + data []docker.ContainerBasicInfo + expiresAt time.Time + ttl time.Duration + + // función para obtener datos frescos + fetchFunc func() ([]docker.ContainerBasicInfo, error) +} + +// Constructor +func NewContainerCache(ttl time.Duration, fetch func() ([]docker.ContainerBasicInfo, error)) *ContainerCache { + return &ContainerCache{ + ttl: ttl, + fetchFunc: fetch, + } +} + +// Get devuelve datos cacheados o refresca si ha expirado +func (c *ContainerCache) Get() ([]docker.ContainerBasicInfo, error) { + // 🔍 lectura rápida + c.mu.RLock() + if time.Now().Before(c.expiresAt) && c.data != nil { + data := c.data + c.mu.RUnlock() + return data, nil + } + c.mu.RUnlock() + + // 🔒 lock de escritura (refresco) + c.mu.Lock() + defer c.mu.Unlock() + + // ⚠️ doble check (evita refrescos duplicados) + if time.Now().Before(c.expiresAt) && c.data != nil { + return c.data, nil + } + + data, err := c.fetchFunc() + if err != nil { + return nil, err + } + + c.data = data + c.expiresAt = time.Now().Add(c.ttl) + + return c.data, nil +} + +// Invalidate fuerza limpieza de cache +func (c *ContainerCache) Invalidate() { + c.mu.Lock() + defer c.mu.Unlock() + + c.data = nil + c.expiresAt = time.Time{} +} + +// ForceRefresh fuerza actualización inmediata +func (c *ContainerCache) ForceRefresh() ([]docker.ContainerBasicInfo, error) { + c.mu.Lock() + defer c.mu.Unlock() + + data, err := c.fetchFunc() + if err != nil { + return nil, err + } + + c.data = data + c.expiresAt = time.Now().Add(c.ttl) + + return c.data, nil +} diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..88b640d --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,65 @@ +package config + +import ( + "os" + "strconv" +) + +type Config struct { + Locale string + Token string + Webhookurl string + Webhooktoken string + PageSize int + CacheTTL int +} + +func Load() *Config { + return &Config{ + Locale: getEnv("DOCKERBOT_LOCALE", "en"), + Token: getEnv("DOCKERBOT_TOKEN", ""), + Webhookurl: getEnv("DOCKERBOT_WEBHOOKURL", ""), + Webhooktoken: getEnv("DOCKERBOT_WEBHOOK_TOKEN", ""), + PageSize: getEnvInt("DOCKERBOT_PAGE_SIZE", 4), + CacheTTL: getEnvInt("DOCKERBOT_CACHE_TTL", 10), + } +} + +func getEnv(key, defaultValue string) string { + val := os.Getenv(key) + if val == "" { + return defaultValue + } + return val +} + +func getEnvInt(key string, defaultValue int) int { + valStr := os.Getenv(key) + if valStr == "" { + return defaultValue + } + + val, err := strconv.Atoi(valStr) + if err != nil { + return defaultValue + } + + if val <= 0 { + return defaultValue + } + + return val +} + +func getEnvBool(key string, defaultValue bool) bool { + val := os.Getenv(key) + if val == "" { + return defaultValue + } + + v, err := strconv.ParseBool(val) + if err != nil { + return defaultValue + } + return v +} diff --git a/internal/docker/docker.go b/internal/docker/docker.go new file mode 100644 index 0000000..0c6ac63 --- /dev/null +++ b/internal/docker/docker.go @@ -0,0 +1,238 @@ +package docker + +import ( + "bytes" + "context" + "fmt" + "io" + "strconv" + "strings" + "time" + + "fergalla.com/dockerbot/internal/apperrors" + "github.com/containerd/errdefs" + "github.com/moby/moby/api/pkg/stdcopy" + "github.com/moby/moby/client" +) + +type DockerInfo struct { + ctxDocker context.Context + dockerClient *client.Client +} + +/* type ContainerStats struct { + CPUPercent float64 + MemUsage uint64 + MemLimit uint64 + MemPercent float64 + NetInput uint64 + NetOutput uint64 +} + +type statsResponse struct { + CPUStats struct { + CPUUsage struct { + TotalUsage uint64 `json:"total_usage"` + PercpuUsage []uint64 `json:"percpu_usage"` + } `json:"cpu_usage"` + SystemUsage uint64 `json:"system_cpu_usage"` + } `json:"cpu_stats"` + + PreCPUStats struct { + CPUUsage struct { + TotalUsage uint64 `json:"total_usage"` + } `json:"cpu_usage"` + SystemUsage uint64 `json:"system_cpu_usage"` + } `json:"precpu_stats"` + + MemoryStats struct { + Usage uint64 `json:"usage"` + Limit uint64 `json:"limit"` + } `json:"memory_stats"` + + Networks map[string]struct { + RxBytes uint64 `json:"rx_bytes"` + TxBytes uint64 `json:"tx_bytes"` + } `json:"networks"` +} */ + +type ContainerInspectInfo struct { + ID string + Name string + Image string + Created time.Time + Path string + Command string + State string + Health string + RestartCount int + StartedAt time.Time + FinishedAt time.Time + Ports map[string]string + Mounts []string + Networks []string +} + +type ContainerBasicInfo struct { + Name string + Image string + State string + Health string +} + +func New() (*DockerInfo, error) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + apiClient, err := client.New(client.FromEnv) + if err != nil { + return nil, err + } + + return &DockerInfo{ + dockerClient: apiClient, + ctxDocker: ctx, + }, nil +} + +func (d *DockerInfo) ListContainers() ([]ContainerBasicInfo, error) { + containers, err := d.dockerClient.ContainerList(d.ctxDocker, client.ContainerListOptions{All: true}) + if err != nil { + return nil, err + } + var basicInfo []ContainerBasicInfo + for _, c := range containers.Items { + name := "unknown" + if len(c.Names) > 0 { + name = c.Names[0][1:] + } + image := c.Image + state := c.State + health := c.Health.Status + basicInfo = append(basicInfo, ContainerBasicInfo{ + Name: name, + Image: image, + State: string(state), + Health: string(health), + }) + } + return basicInfo, nil +} + +func (d *DockerInfo) GetContainerInfo(containerID string) (*ContainerInspectInfo, error) { + containerJSON, err := d.dockerClient.ContainerInspect(d.ctxDocker, containerID, client.ContainerInspectOptions{}) + if err != nil { + if errdefs.IsNotFound(err) { + return nil, apperrors.ErrContainerNotFound + } + return nil, err + } + c := containerJSON.Container + info := &ContainerInspectInfo{ + Name: strings.TrimPrefix(c.Name, "/"), + Image: c.Config.Image, + ID: c.ID, + Path: c.Path, + Command: c.Path + " " + strings.Join(c.Args, " "), + State: string(c.State.Status), + Health: "none", + RestartCount: c.RestartCount, + Created: strToTime(c.Created), + StartedAt: strToTime(c.State.StartedAt), + FinishedAt: strToTime(c.State.FinishedAt), + } + + if c.State.Health != nil { + info.Health = string(c.State.Health.Status) + } + + info.Ports = make(map[string]string) + for port, bindings := range c.NetworkSettings.Ports { + if len(bindings) > 0 { + info.Ports[port.String()] = bindings[0].HostPort + } + } + + for _, m := range c.Mounts { + info.Mounts = append(info.Mounts, m.Source+"->"+m.Destination) + } + + for name := range c.NetworkSettings.Networks { + info.Networks = append(info.Networks, name) + } + return info, nil +} + +func (d *DockerInfo) ContainerAction(containerID string, action string) error { + var err error + switch action { + + case "start": + _, err = d.dockerClient.ContainerStart(d.ctxDocker, containerID, client.ContainerStartOptions{}) + + case "stop": + _, err = d.dockerClient.ContainerStop(d.ctxDocker, containerID, client.ContainerStopOptions{}) + + case "restart": + _, err = d.dockerClient.ContainerRestart(d.ctxDocker, containerID, client.ContainerRestartOptions{}) + + case "pause": + _, err = d.dockerClient.ContainerPause(d.ctxDocker, containerID, client.ContainerPauseOptions{}) + + case "unpause": + _, err = d.dockerClient.ContainerUnpause(d.ctxDocker, containerID, client.ContainerUnpauseOptions{}) + + default: + return fmt.Errorf("unknown docker action: %s", action) + } + if errdefs.IsNotFound(err) { + return apperrors.ErrContainerNotFound + } else { + return err + } +} + +func (d *DockerInfo) GetContainerLogs(containerID string, tail int) (string, error) { + opts := client.ContainerLogsOptions{ + ShowStdout: true, + ShowStderr: true, + } + if tail != 0 { + opts.Tail = strconv.Itoa(tail) + } + + reader, err := d.dockerClient.ContainerLogs(d.ctxDocker, containerID, opts) + if err != nil { + if errdefs.IsNotFound(err) { + return "", apperrors.ErrContainerNotFound + } else { + return "", err + } + } + + defer reader.Close() + + var stdoutBuf bytes.Buffer + var stderrBuf bytes.Buffer + + _, err = stdcopy.StdCopy(&stdoutBuf, &stderrBuf, reader) + if err != nil && err != io.EOF { + return "", err + } + + out := "\n\n⚠️ STDOUT:\n" + stdoutBuf.String() + errOut := stderrBuf.String() + + if errOut != "" { + out += "\n\n⚠️ STDERR:\n" + errOut + } + + return out, nil +} + +func strToTime(date string) time.Time { + t, err := time.Parse(time.RFC3339Nano, date) + if err != nil { + t = time.Time{} + } + return t +} diff --git a/internal/i18n/i18n.go b/internal/i18n/i18n.go new file mode 100644 index 0000000..3db92fe --- /dev/null +++ b/internal/i18n/i18n.go @@ -0,0 +1,160 @@ +package i18n + +import ( + "encoding/json" + "fmt" + "os" + "path/filepath" + "strings" + "sync" +) + +// I18n es la estructura principal +type I18n struct { + current string + fallback string + locales map[string]map[string]string + mu sync.RWMutex // protege acceso concurrente +} + +// New crea una instancia de i18n +/* func New(defaultLocale, fallback string) *I18n { + return &I18n{ + current: defaultLocale, + fallback: fallback, + locales: make(map[string]map[string]string), + } +} +*/ +func New(path string, fallback string) (*I18n, error) { + i := &I18n{ + current: fallback, + fallback: fallback, + locales: make(map[string]map[string]string), + } + + if err := i.loadDir(path); err != nil { + return nil, err + } + + if len(i.locales) == 0 { + return nil, fmt.Errorf("no locales loaded from %s", path) + } + + return i, nil +} + +func (i *I18n) loadDir(path string) error { + files, err := os.ReadDir(path) + if err != nil { + return err + } + + for _, file := range files { + if file.IsDir() { + continue + } + + name := file.Name() + + if !strings.HasSuffix(name, ".json") { + continue + } + + lang := strings.TrimSuffix(name, ".json") + + if err := i.loadFile(filepath.Join(path, name), lang); err != nil { + return err + } + } + + return nil +} + +// LoadLocale carga un archivo JSON en memoria +func (i *I18n) LoadLocale(locale, path string) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + + var parsed map[string]string + if err := json.Unmarshal(data, &parsed); err != nil { + return err + } + + i.mu.Lock() + i.locales[locale] = parsed + i.mu.Unlock() + + return nil +} + +func (i *I18n) loadFile(path string, lang string) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + + var content map[string]string + + if err := json.Unmarshal(data, &content); err != nil { + return err + } + + i.mu.Lock() + defer i.mu.Unlock() + + i.locales[lang] = content + + return nil +} + +// SetLocale cambia el idioma activo +func (i *I18n) SetLocale(locale string) { + i.mu.Lock() + i.current = locale + i.mu.Unlock() +} + +// T traduce una clave, opcionalmente interpolando variables +func (i *I18n) T(key string, vars map[string]string) string { + val := i.translate(key) + if vars == nil { + return val + } + // Interpolación simple: reemplaza {var} por su valor + for k, v := range vars { + val = strings.ReplaceAll(val, "{"+k+"}", v) + } + + return val +} + +// translate busca la clave en el idioma actual y fallback +func (i *I18n) translate(key string) string { + i.mu.RLock() + defer i.mu.RUnlock() + + // 1. Buscar en idioma actual + if localeData, ok := i.locales[i.current]; ok { + if val, ok := localeData[key]; ok { + return val + } + } + + // 2. Buscar en fallback + if localeData, ok := i.locales[i.fallback]; ok { + if val, ok := localeData[key]; ok { + return val + } + } + + // 3. Si no existe → devolver clave marcada + return fmt.Sprintf("??%s??", key) +} + +// Helper para construir claves con seguridad +func Key(parts ...string) string { + return strings.Join(parts, ".") +} diff --git a/internal/logger/logger.go b/internal/logger/logger.go new file mode 100644 index 0000000..b7fcdb7 --- /dev/null +++ b/internal/logger/logger.go @@ -0,0 +1,42 @@ +package logger + +import ( + "log/slog" + "os" + "strings" +) + +// Logger envuelve slog.Logger +type Logger struct { + *slog.Logger +} + +func (l *Logger) Fatalf(s string, err error) { + panic("unimplemented") +} + +// parseLevel convierte string → slog.Level +func parseLevel(level string) slog.Level { + switch strings.ToUpper(level) { + case "DEBUG": + return slog.LevelDebug + case "INFO": + return slog.LevelInfo + case "WARN", "WARNING": + return slog.LevelWarn + case "ERROR": + return slog.LevelError + default: + return slog.LevelInfo + } +} + +func New(level string, service string) *Logger { + handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ + Level: parseLevel(level), + }) + base := slog.New(handler).With( + "service", service, + ) + return &Logger{base} +} diff --git a/internal/ui/ui.go b/internal/ui/ui.go new file mode 100644 index 0000000..4b8d466 --- /dev/null +++ b/internal/ui/ui.go @@ -0,0 +1,450 @@ +package ui + +import ( + "fmt" + "strings" + + "fergalla.com/dockerbot/internal/docker" + "fergalla.com/dockerbot/internal/i18n" + "github.com/go-telegram/bot/models" +) + +// Renderer encapsula toda la lógica de renderizado UI + +type Renderer struct { + T func(string, ...map[string]string) string +} + +// ========================= +// 📦 LISTADO DE CONTENEDORES +// ========================= + +type Page struct { + Items []docker.ContainerBasicInfo + Page int + PageSize int + TotalItems int +} + +func (r *Renderer) RenderContainerList(p Page) (string, *models.InlineKeyboardMarkup) { + var sb strings.Builder + + // Header + sb.WriteString(r.T("app.headerList")) + sb.WriteString("\n") + sb.WriteString(r.separator()) + sb.WriteString("\n") + + // Summary + sb.WriteString(r.renderStateSummary(p.Items)) + + // Slice paginado + start := p.Page * p.PageSize + end := start + p.PageSize + + if start > len(p.Items) { + return r.T("e.container.list.not_found"), nil + } + if end > len(p.Items) { + end = len(p.Items) + } + + visibleItems := p.Items[start:end] + + // Items (texto informativo) + for _, c := range visibleItems { + sb.WriteString(r.renderContainerItem(c)) + } + + // Footer + totalPages := (p.TotalItems + p.PageSize - 1) / p.PageSize + sb.WriteString("\n") + sb.WriteString(r.T("ui.page", map[string]string{ + "current": fmt.Sprintf("%d", p.Page+1), + "total": fmt.Sprintf("%d", totalPages), + })) + + // Keyboard combinando contenedores + navegación + keyboard := r.buildContainerListKeyboard(visibleItems, p.Page, totalPages) + + return sb.String(), keyboard +} + +func (r *Renderer) renderContainerItem(c docker.ContainerBasicInfo) string { + var sb strings.Builder + + sb.WriteString(r.T("list.container.header", map[string]string{ + "name": c.Name, + })) + + sb.WriteString("\n") + + sb.WriteString(r.T("list.container.image", map[string]string{ + "image": c.Image, + })) + + sb.WriteString("\n") + + state := r.T(i18n.Key("d", "state", c.State)) + + line := r.T("list.container.state", map[string]string{ + "emoji": stateEmoji(c.State), + "state": state, + }) + + if c.Health != "" { + health := r.T(i18n.Key("d", "health", c.Health)) + line += r.T("list.container.health_suffix", map[string]string{ + "health": health, + }) + } + + sb.WriteString(line) + sb.WriteString("\n\n") + + return sb.String() +} + +// ========================= +// 📊 HELPERS +// ========================= + +func (r *Renderer) renderStateSummary(data []docker.ContainerBasicInfo) string { + running, stopped, restarting, paused, other := 0, 0, 0, 0, 0 + + for _, c := range data { + switch c.State { + case "running": + running++ + case "exited", "dead": + stopped++ + case "restarting": + restarting++ + case "paused": + paused++ + default: + other++ + } + } + + return r.T("list.summary", map[string]string{ + "running": fmt.Sprintf("%d", running), + "stopped": fmt.Sprintf("%d", stopped), + "restarting": fmt.Sprintf("%d", restarting), + "paused": fmt.Sprintf("%d", paused), + "other": fmt.Sprintf("%d", other), + }) + "\n\n" +} + +func (r *Renderer) separator() string { + return r.T("ui.separator") +} + +// ========================= +// ⬅️➡️ PAGINACIÓN + BOTONES +// ========================= + +func (r *Renderer) buildContainerListKeyboard(items []docker.ContainerBasicInfo, page, totalPages int) *models.InlineKeyboardMarkup { + var rows [][]models.InlineKeyboardButton + + // 🔘 botones de contenedores (2 por fila) + var row []models.InlineKeyboardButton + + for i, c := range items { + btn := models.InlineKeyboardButton{ + Text: stateEmoji(c.State) + " " + c.Name, + CallbackData: fmt.Sprintf("dockerList_infoDocker:%s:%d", c.Name, page), + } + + row = append(row, btn) + + if len(row) == 2 { + rows = append(rows, row) + row = []models.InlineKeyboardButton{} + } + + if i == len(items)-1 && len(row) > 0 { + rows = append(rows, row) + } + } + + // ⬅️➡️ navegación + var navRow []models.InlineKeyboardButton + + if page > 0 { + navRow = append(navRow, models.InlineKeyboardButton{ + Text: r.T("ui.prev"), + CallbackData: fmt.Sprintf("dockerList_page:%d", page-1), + }) + } + + if page < totalPages-1 { + navRow = append(navRow, models.InlineKeyboardButton{ + Text: r.T("ui.next"), + CallbackData: fmt.Sprintf("dockerList_page:%d", page+1), + }) + } + + // 🔄 refresh siempre visible + navRow = append(navRow, models.InlineKeyboardButton{ + Text: r.T("btn.refresh"), + CallbackData: fmt.Sprintf("dockerList_refresh:%d", page), + }) + + rows = append(rows, navRow) + + return &models.InlineKeyboardMarkup{ + InlineKeyboard: rows, + } +} + +// ========================= +// 🎨 EMOJIS +// ========================= + +func stateEmoji(state string) string { + switch state { + case "running": + return "🟢" + case "exited": + return "🔴" + case "dead": + return "🪦" + case "restarting": + return "🟡" + case "paused": + return "⏸️" + default: + return "⚪" + } +} + +/**************************************************************************************************************/ +/**************************************************************************************************************/ +/**************************************************************************************************************/ +type ContainerDetailView struct { + Container *docker.ContainerInspectInfo + Page int +} + +func (r *Renderer) RenderContainerDetail(v ContainerDetailView) (string, *models.InlineKeyboardMarkup) { + c := v.Container + + var sb strings.Builder + + // Header + sb.WriteString(r.T("c.header", map[string]string{"name": capitalize(c.Name)})) + sb.WriteString("\n") + sb.WriteString(r.T("c.separator")) + sb.WriteString("\n\n") + + // Basic info + sb.WriteString(r.line("c.id", map[string]string{"id": c.ID})) + sb.WriteString(r.line("c.image", map[string]string{"image": c.Image})) + sb.WriteString(r.line("c.path", map[string]string{"path": c.Path})) + sb.WriteString(r.line("c.command", map[string]string{"command": c.Command})) + sb.WriteString(r.line("c.created", map[string]string{"created": formatTime(c.Created)})) + + // State + sb.WriteString(r.line("c.state", map[string]string{ + "emoji": stateEmoji(c.State), + "state": r.T(i18n.Key("d", "state", c.State)), + })) + + // Health + sb.WriteString(r.line("c.health", map[string]string{ + "emoji": healthEmoji(c.Health), + "health": r.T(i18n.Key("d", "health", c.Health)), + })) + + // Stats + sb.WriteString(r.line("c.restart", map[string]string{"count": fmt.Sprintf("%d", c.RestartCount)})) + sb.WriteString(r.line("c.started", map[string]string{"started": formatTime(c.StartedAt)})) + sb.WriteString(r.line("c.finished", map[string]string{"finished": formatTime(c.FinishedAt)})) + + // Ports + if len(c.Ports) > 0 { + sb.WriteString("\n" + r.T("c.ports") + "\n") + for port, mapping := range c.Ports { + sb.WriteString(fmt.Sprintf(" - %s → %s\n", port, mapping)) + } + } + + // Mounts + if len(c.Mounts) > 0 { + sb.WriteString("\n" + r.T("c.mounts") + "\n") + for _, m := range c.Mounts { + sb.WriteString(fmt.Sprintf(" - %s\n", m)) + } + } + + // Networks + if len(c.Networks) > 0 { + sb.WriteString("\n" + r.T("c.networks") + "\n") + for _, n := range c.Networks { + sb.WriteString(fmt.Sprintf(" - %s\n", n)) + } + } + + keyboard := r.buildContainerDetailKeyboard(v) + + return sb.String(), keyboard +} + +// ========================= +// 🔘 KEYBOARD +// ========================= + +func (r *Renderer) buildContainerDetailKeyboard(v ContainerDetailView) *models.InlineKeyboardMarkup { + c := v.Container + page := v.Page + var buttons [][]models.InlineKeyboardButton + + switch c.State { + + case "running": + buttons = [][]models.InlineKeyboardButton{ + { + {Text: r.T("btn.stop"), CallbackData: fmt.Sprintf("docker_action:stop:%s:%d", c.Name, page)}, + {Text: r.T("btn.restart"), CallbackData: fmt.Sprintf("docker_action:restart:%s:%d", c.Name, page)}, + }, + { + {Text: r.T("btn.pause"), CallbackData: fmt.Sprintf("docker_action:pause:%s:%d", c.Name, page)}, + }, + } + + case "exited", "created": + buttons = [][]models.InlineKeyboardButton{ + { + {Text: r.T("btn.start"), CallbackData: fmt.Sprintf("docker_action:start:%s:%d", c.Name, page)}, + }, + } + + case "paused": + buttons = [][]models.InlineKeyboardButton{ + { + {Text: r.T("btn.resume"), CallbackData: fmt.Sprintf("docker_action:unpause:%s:%d", c.Name, page)}, + {Text: r.T("btn.stop"), CallbackData: fmt.Sprintf("docker_action:stop:%s:%d", c.Name, page)}, + }, + } + + default: + buttons = [][]models.InlineKeyboardButton{ + { + {Text: r.T("btn.restart"), CallbackData: fmt.Sprintf("docker_action:restart:%s:%d", c.Name, page)}, + }, + } + } + + buttons = append(buttons, []models.InlineKeyboardButton{ + {Text: r.T("ui.back"), CallbackData: fmt.Sprintf("docker_back_list:%d", page)}, + }) + + buttons = append(buttons, []models.InlineKeyboardButton{ + {Text: r.T("btn.logs"), CallbackData: fmt.Sprintf("logs:%s:%d", c.Name, page)}, + {Text: r.T("btn.refresh"), CallbackData: fmt.Sprintf("docker_action:refresh:%s:%d", c.Name, page)}, + }) + + return &models.InlineKeyboardMarkup{ + InlineKeyboard: buttons, + } +} + +// ========================= +// 🧩 HELPERS +// ========================= + +func (r *Renderer) line(key string, vars map[string]string) string { + return r.T(key, vars) + "\n" +} + +func formatTime(t any) string { + if v, ok := t.(interface{ Format(string) string }); ok { + return v.Format("2006-01-02 15:04:05") + } + return "-" +} + +func capitalize(s string) string { + if len(s) == 0 { + return s + } + return strings.ToUpper(string(s[0])) + s[1:] +} + +func healthEmoji(h string) string { + switch h { + case "healthy": + return "✅" + case "unhealthy": + return "⚠️" + case "starting": + return "⏳" + default: + return "❓" + } +} + +/**************************************************************************************************************/ +/**************************************************************************************************************/ +/**************************************************************************************************************/ + +type ContainerLogsView struct { + Container string + Logs string + Page int + Tail int +} + +func (r *Renderer) RenderContainerLogs(v ContainerLogsView) (string, *models.InlineKeyboardMarkup) { + const maxLen = 3500 + var sb strings.Builder + + if len(v.Logs) > maxLen { + v.Logs = v.Logs[len(v.Logs)-maxLen:] + + sb.WriteString(r.T("logs.truncated")) + sb.WriteString("\n\n") + } + + sb.WriteString(r.T("logs.header", map[string]string{ + "name": v.Container, + })) + sb.WriteString("\n") + sb.WriteString(r.T("ui.separator")) + sb.WriteString("\n\n") + + if v.Logs == "" { + sb.WriteString(r.T("logs.empty")) + } else { + sb.WriteString("
    ")
    +		sb.WriteString(v.Logs)
    +		sb.WriteString("
    ") + } + + keyboard := r.buildLogsKeyboard(v) + + return sb.String(), keyboard +} + +func (r *Renderer) buildLogsKeyboard(v ContainerLogsView) *models.InlineKeyboardMarkup { + + rows := [][]models.InlineKeyboardButton{ + { + { + Text: r.T("btn.refresh"), + CallbackData: fmt.Sprintf("logs_refresh:%s:%d:%d", v.Container, v.Page, v.Tail), + }, + }, + { + { + Text: r.T("ui.back"), + CallbackData: fmt.Sprintf("logs_back_detail:%s:%d", v.Container, v.Page), + }, + }, + } + + return &models.InlineKeyboardMarkup{ + InlineKeyboard: rows, + } +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..0aab467 --- /dev/null +++ b/main.go @@ -0,0 +1,303 @@ +package main + +import ( + "context" + "errors" + "fmt" + "net/http" + "os" + "os/signal" + "strings" + "time" + + "fergalla.com/dockerbot/internal/auth" + "fergalla.com/dockerbot/internal/cache" + "fergalla.com/dockerbot/internal/config" + "fergalla.com/dockerbot/internal/docker" + "fergalla.com/dockerbot/internal/i18n" + "fergalla.com/dockerbot/internal/logger" + "fergalla.com/dockerbot/internal/ui" + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" +) + +type App struct { + logger *logger.Logger + store *auth.Store + i18n *i18n.I18n + dockerInfo *docker.DockerInfo + renderer *ui.Renderer + config *config.Config + containerCache *cache.ContainerCache +} + +func main() { + log := logger.New("DEBUG", "Bot Telegram") + cfg := config.Load() + i, err := i18n.New("./conf/locales", "en") + if err != nil { + log.Error( + "Failed to load locale file", + "module", "Bot", + "error", err) + os.Exit(1) + } + i.SetLocale(cfg.Locale) + + store, err := auth.New("./conf/users.json") + if err != nil { + log.Error( + "Failed to load users file", + "module", "Auth", + "error", err, + ) + } + d, err := docker.New() + if err != nil { + log.Error( + "Failed to create client docker", + "module", "Bot", + "error", err) + os.Exit(1) + } + ttl := time.Duration(cfg.CacheTTL) * time.Second + containerCache := cache.NewContainerCache(ttl, func() ([]docker.ContainerBasicInfo, error) { + return d.ListContainers() + }) + appCtx := App{ + logger: log, + store: store, + i18n: i, + dockerInfo: d, + config: cfg, + containerCache: containerCache, + } + renderer := &ui.Renderer{ + T: appCtx.T, + } + appCtx.renderer = renderer + + ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt) + defer cancel() + + if appCtx.config.Token == "" { + appCtx.logger.Error( + "Bot token not found", + "module", "Bot", + ) + os.Exit(1) + } + opts := []bot.Option{ + bot.WithMiddlewares( + appCtx.AuthMiddleware(), + appCtx.RecoveryMiddleware(), + appCtx.LoggingMiddleware(), + ), + bot.WithDefaultHandler(appCtx.defaultHandler), + } + + b, err := bot.New(appCtx.config.Token, opts...) + if err != nil { + appCtx.logger.Error( + "Bot created failed", + "module", "Bot", + "error", err, + ) + os.Exit(1) + } + + if err := appCtx.setConfigBot(ctx, b); err != nil { + appCtx.logger.Error("Bot setup failed", "error", err) + } + + b.RegisterHandler(bot.HandlerTypeMessageText, "/start", bot.MatchTypeExact, appCtx.startHandler) + b.RegisterHandler(bot.HandlerTypeMessageText, "/help", bot.MatchTypeExact, appCtx.helpHandler) + b.RegisterHandler(bot.HandlerTypeMessageText, "/docker", bot.MatchTypePrefix, appCtx.dockerHandler) + + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "dockerList_page", bot.MatchTypePrefix, appCtx.callbackDockerPagination) + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "dockerList_refresh", bot.MatchTypePrefix, appCtx.callbackDockerListRefresh) + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "dockerList_infoDocker", bot.MatchTypePrefix, appCtx.callbackDockerInfo) + + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "docker_action", bot.MatchTypePrefix, appCtx.callbackHandlerContainer) + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "docker_back_list", bot.MatchTypePrefix, appCtx.callbackDockerBack) + + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "logs_back_detail", bot.MatchTypePrefix, appCtx.callbackDockerBackDetail) + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "logs_refresh", bot.MatchTypePrefix, appCtx.callbackDockerLogsRefresh) + b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "logs", bot.MatchTypePrefix, appCtx.callbackDockerLogs) + + if appCtx.config.Webhookurl != "" { + _, err := b.SetWebhook(ctx, &bot.SetWebhookParams{ + URL: appCtx.config.Webhookurl, + SecretToken: appCtx.config.Webhooktoken, + }) + if err != nil { + appCtx.logger.Error( + "Failed to set webhook", + "module", "Bot", + "url", appCtx.config.Webhookurl, + "error", err, + ) + os.Exit(1) + } + + go b.StartWebhook(ctx) + appCtx.logger.Info( + "Starting app", + "module", "Bot", + "mode", "webhook", + "url", appCtx.config.Webhookurl, + ) + err = http.ListenAndServe(":8080", b.WebhookHandler()) + if err != nil { + appCtx.logger.Error( + "HTTP server failed", + "module", "Bot", + "error", err, + ) + os.Exit(1) + } + } else { + b.DeleteWebhook(ctx, &bot.DeleteWebhookParams{DropPendingUpdates: true}) + appCtx.logger.Info( + "Starting app", + "module", "Bot", + "mode", "polling", + ) + b.Start(ctx) + } + +} + +func (a *App) T(key string, vars ...map[string]string) string { + var values map[string]string + if len(vars) > 0 { + values = vars[0] + } else { + values = nil + } + return a.i18n.T(key, values) +} + +func (appCtx *App) setConfigBot(ctx context.Context, b *bot.Bot) error { + var errs []error + + commands := []models.BotCommand{ + { + Command: "start", + Description: appCtx.T("i.cmd.start"), + }, + { + Command: "docker", + Description: appCtx.T("i.cmd.docker.detailed"), + }, + { + Command: "help", + Description: appCtx.T("i.cmd.help"), + }, + } + + if _, err := b.SetMyCommands(ctx, &bot.SetMyCommandsParams{ + Commands: commands, + }); err != nil { + errs = append(errs, fmt.Errorf("set commands: %w", err)) + } + + /* if _, err := b.SetMyName(ctx, &bot.SetMyNameParams{ + Name: "DockerBot 🤖", + }); err != nil { + errs = append(errs, fmt.Errorf("set name: %w", err)) + } + + if _, err := b.SetMyShortDescription(ctx, &bot.SetMyShortDescriptionParams{ + ShortDescription: appCtx.T("app.short"), + }); err != nil { + errs = append(errs, fmt.Errorf("set short description: %w", err)) + } + + if _, err := b.SetMyDescription(ctx, &bot.SetMyDescriptionParams{ + Description: appCtx.T("app.about"), + }); err != nil { + errs = append(errs, fmt.Errorf("set description: %w", err)) + } + + if err := setProfileImage(ctx, b); err != nil { + errs = append(errs, fmt.Errorf("set profile image: %w", err)) + } */ + + if len(errs) > 0 { + return errors.Join(errs...) + } + + return nil +} + +func (appCtx *App) defaultHandler(ctx context.Context, b *bot.Bot, update *models.Update) { + chatID := update.Message.Chat.ID + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.unknown_command"), false, nil) +} +func (appCtx *App) startHandler(ctx context.Context, b *bot.Bot, update *models.Update) { + appCtx.sendMessage(ctx, b, update.Message.Chat.ID, appCtx.T("app.welcome", map[string]string{"name": update.Message.From.FirstName}), true, nil) +} +func (appCtx *App) helpHandler(ctx context.Context, b *bot.Bot, update *models.Update) { + appCtx.sendMessage(ctx, b, update.Message.Chat.ID, appCtx.T("app.help", nil), true, nil) +} + +func (appCtx *App) dockerHandler(ctx context.Context, b *bot.Bot, update *models.Update) { + chatID := update.Message.Chat.ID + args := strings.Fields(strings.TrimSpace(update.Message.Text[len("/docker"):])) + + if len(args) == 0 || args[0] == "list" { + appCtx.handleDockerList(ctx, b, chatID) + return + } + + subcommand := strings.ToLower(args[0]) + params := args[1:] + + appCtx.handleDockerSubcommand(ctx, b, chatID, subcommand, params) +} +func (appCtx *App) handleDockerSubcommand(ctx context.Context, b *bot.Bot, chatID int64, subcommand string, params []string) { + switch subcommand { + case "info": + appCtx.handleDockerInfo(ctx, b, chatID, params) + case "start", "stop", "pause", "unpause", "restart": + appCtx.handleDockerAction(ctx, b, chatID, subcommand, params) + case "logs": + appCtx.handleDockerLogs(ctx, b, chatID, params) + case "help": + appCtx.sendDockerHelp(ctx, b, chatID) + default: + appCtx.sendMessage(ctx, b, chatID, appCtx.T("e.unknown_command"), true, nil) + } +} +func (appCtx *App) sendDockerHelp(ctx context.Context, b *bot.Bot, chatID int64) { + appCtx.sendMessage(ctx, b, chatID, appCtx.T("app.help", nil), true, nil) +} + +func (appCtx *App) sendMessage(ctx context.Context, b *bot.Bot, chatID int64, text string, parseHTML bool, keyboard *models.InlineKeyboardMarkup) { + params := &bot.SendMessageParams{ + ChatID: chatID, + Text: text, + } + + if parseHTML { + params.ParseMode = "html" + params.LinkPreviewOptions = &models.LinkPreviewOptions{IsDisabled: bot.True()} + } else { + params.ParseMode = "markdown" + } + if keyboard != nil { + params.ReplyMarkup = keyboard + } + + _, err := b.SendMessage(ctx, params) + if err != nil { + appCtx.logger.Error( + "Failed to send message", + "module", "Bot", + "chat_id", chatID, + "error", err, + ) + return + } +} diff --git a/middelwares.go b/middelwares.go new file mode 100644 index 0000000..9095a8d --- /dev/null +++ b/middelwares.go @@ -0,0 +1,104 @@ +package main + +import ( + "context" + + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" +) + +func (appCtx *App) LoggingMiddleware() bot.Middleware { + return func(next bot.HandlerFunc) bot.HandlerFunc { + return func(ctx context.Context, b *bot.Bot, update *models.Update) { + + var chatID int64 + var text string + + if update.Message != nil { + chatID = update.Message.Chat.ID + text = update.Message.Text + } else { + chatID = 0 + text = "" + } + + appCtx.logger.Debug( + "Update received", + "module", "Bot", + "chat_id", chatID, + "text", text, + ) + + next(ctx, b, update) + + appCtx.logger.Debug( + "Update processed", + "module", "Bot", + ) + } + } +} + +func (appCtx *App) RecoveryMiddleware() bot.Middleware { + return func(next bot.HandlerFunc) bot.HandlerFunc { + return func(ctx context.Context, b *bot.Bot, update *models.Update) { + defer func() { + if r := recover(); r != nil { + appCtx.logger.Error( + "Recovered from panic", + "module", "Bot", + "panic", r, + ) + } + }() + next(ctx, b, update) + } + } +} + +func (appCtx *App) AuthMiddleware() bot.Middleware { + return func(next bot.HandlerFunc) bot.HandlerFunc { + return func(ctx context.Context, b *bot.Bot, update *models.Update) { + + var user *models.User + var chatID int64 + + if update.Message != nil && update.Message.From != nil { + user = update.Message.From + chatID = update.Message.Chat.ID + + } else if update.CallbackQuery != nil { + + if update.CallbackQuery.Message.Message == nil { + return + } + + user = &update.CallbackQuery.From + chatID = update.CallbackQuery.Message.Message.Chat.ID + + } else { + return + } + + // Bootstrap primer usuario + if appCtx.store.IsEmpty() { + if err := appCtx.store.FirstUser(user.ID); err != nil { + appCtx.logger.Error("Failed to save first user", "error", err) + } else { + appCtx.logger.Info("First user registered", "user_id", user.ID) + } + next(ctx, b, update) + return + } + + // Autorización + if !appCtx.store.IsAllowed(user.ID) { + appCtx.logger.Warn("Unauthorized access", "user_id", user.ID, "chat_id", chatID) + appCtx.sendMessage(ctx, b, chatID, appCtx.T("i.auth.unauthorized"), true, nil) + return + } + + next(ctx, b, update) + } + } +} diff --git a/utils.go b/utils.go new file mode 100644 index 0000000..f2835e4 --- /dev/null +++ b/utils.go @@ -0,0 +1,28 @@ +package main + +import ( + "context" + "os" + + "github.com/go-telegram/bot" + "github.com/go-telegram/bot/models" +) + +func setProfileImage(ctx context.Context, b *bot.Bot) error { + file, err := os.Open("./conf/DockerBot.jpg") + if err != nil { + return err + } + defer file.Close() + attachName := "profile_photo" + photo := &models.InputProfilePhotoStatic{ + Photo: "attach://" + attachName, + MediaAttachment: file, + } + _, err = b.SetMyProfilePhoto(ctx, &bot.SetMyProfilePhotoParams{ + Photo: photo}) + if err != nil { + return err + } + return nil +} diff --git a/view_containers.go b/view_containers.go new file mode 100644 index 0000000..dfbce94 --- /dev/null +++ b/view_containers.go @@ -0,0 +1,89 @@ +package main + +import ( + "context" + + "fergalla.com/dockerbot/internal/docker" + "fergalla.com/dockerbot/internal/ui" + "github.com/go-telegram/bot/models" +) + +func (appCtx *App) renderContainerPage(ctx context.Context, pageIndex int, forceRefresh bool) (string, *models.InlineKeyboardMarkup, error) { + var data []docker.ContainerBasicInfo + var err error + + // 📦 obtener datos + if forceRefresh { + data, err = appCtx.containerCache.ForceRefresh() + } else { + data, err = appCtx.containerCache.Get() + } + + if err != nil { + return "", nil, err + } + + totalItems := len(data) + if totalItems == 0 { + return appCtx.T("e.container.list.not_found"), nil, nil + } + + pageSize := appCtx.config.PageSize + totalPages := (totalItems + pageSize - 1) / pageSize + + // 🛑 clamp + if pageIndex < 0 { + pageIndex = 0 + } + if pageIndex >= totalPages { + pageIndex = totalPages - 1 + } + + // 🧩 construir view + page := ui.Page{ + Items: data, + Page: pageIndex, + PageSize: pageSize, + TotalItems: totalItems, + } + + // 🎨 render + text, keyboard := appCtx.renderer.RenderContainerList(page) + + return text, keyboard, nil +} + +func (appCtx *App) renderContainerDetail(ctx context.Context, container string, page int) (string, *models.InlineKeyboardMarkup, error) { + + info, err := appCtx.dockerInfo.GetContainerInfo(container) + if err != nil { + return "", nil, err + } + + view := ui.ContainerDetailView{ + Container: info, + Page: page, + } + + text, keyboard := appCtx.renderer.RenderContainerDetail(view) + + return text, keyboard, nil +} + +func (appCtx *App) renderContainerLogs(ctx context.Context, container string, page int, tail int) (string, *models.InlineKeyboardMarkup, error) { + logs, err := appCtx.dockerInfo.GetContainerLogs(container, tail) + if err != nil { + return "", nil, err + } + + view := ui.ContainerLogsView{ + Container: container, + Logs: logs, + Page: page, + Tail: tail, + } + + text, keyboard := appCtx.renderer.RenderContainerLogs(view) + + return text, keyboard, nil +}