173 lines
7.2 KiB
Markdown
173 lines
7.2 KiB
Markdown
# 🚀 drop.sigmac.app
|
|
|
|
> **Pasa fotos, notas, PDFs y archivos entre tu teléfono y tu ordenador en segundos — sin necesidad de abrir WhatsApp ni mandar mensajes a tu propio chat.**
|
|
|
|
Una aplicación web ágil, moderna y ligera desarrollada en **Go**. Permite transferir cualquier tipo de archivo o texto con generación instantánea de enlace y código QR para escanearlo con la cámara del móvil.
|
|
|
|
---
|
|
|
|
## 🎯 ¿Qué problema resuelve?
|
|
|
|
Pasarse una foto de la PC al celular, un fragmento de código, una contraseña temporal o un PDF habitualmente obliga a abrir WhatsApp Web, buscar tu propio chat ("Chat contigo mismo"), enviar el archivo (que a menudo se recomprime) y luego borrarlo.
|
|
|
|
**drop.sigmac.app elimina toda esa fricción:**
|
|
1. Arrastras el archivo o pegas una captura con <kbd>Ctrl+V</kbd> en el navegador.
|
|
2. Apuntas con la cámara de tu móvil al código QR que aparece en pantalla.
|
|
3. ¡Listo! Se abre el visor en tu móvil de forma inmediata.
|
|
|
|
---
|
|
|
|
## ✨ Características Principales
|
|
|
|
### 📤 Subida sin complicaciones
|
|
- **Drag & Drop:** Arrastra cualquier archivo a la ventana.
|
|
- **Portapapeles directo:** Presiona <kbd>Ctrl+V</kbd> en cualquier parte de la página para subir capturas de pantalla o texto copiado al instante.
|
|
- **Pestaña Texto / Código:** Comparte fragmentos de código, notas de reuniones o enlaces sin crear archivos de texto manualmente.
|
|
|
|
### 📱 Escaneo QR y Enlaces Cortos
|
|
- Cada elemento compartido genera una URL corta (`/v/slug`) y un **código QR nativo en pantalla**.
|
|
- Puedes escanearlo directamente desde cualquier smartphone sin instalar ninguna app adicional.
|
|
|
|
### 👁️ Visor Universal Integrado (`/v/{id}`)
|
|
No requiere descargar el archivo a ciegas para ver qué es:
|
|
- 🖼️ **Imágenes:** Visor con zoom al 100%, pantalla completa y alta calidad (PNG, JPG, GIF, WebP, SVG).
|
|
- 🎥 **Video:** Reproductor HTML5 integrado para previsualizar grabaciones o clips (MP4, WebM).
|
|
- 🎵 **Audio:** Reproductor nativo para notas de voz o música (MP3, WAV, OGG).
|
|
- 📄 **PDFs:** Lector embebido interactivo en el navegador.
|
|
- 💻 **Texto / Código:** Formato legible con resaltado monospace y botón para **Copiar texto** al portapapeles con un clic.
|
|
- 📦 **Otros archivos:** Ficha técnica con tamaño exacto, tipo de archivo y botón directo de descarga.
|
|
|
|
---
|
|
|
|
## 🔒 Política de Retención: Invitado vs Cuenta Registrada
|
|
|
|
| Característica | 👤 Modo Invitado (Guest) | 🛡️ Cuenta Registrada (WebControl / Google) |
|
|
|---|---|---|
|
|
| **¿Requiere inicio de sesión?** | **No** (usar y compartir de inmediato) | Sí (login fácil con 1 clic) |
|
|
| **Tiempo de vida del archivo** | ⏰ **24 horas exactas** | ♾️ **Permanente** (no expira) |
|
|
| **Eliminación automática** | Sí, el worker purga archivo y registro tras 24h | **Nunca** (se conserva hasta que lo borres) |
|
|
| **Panel "Mis Archivos"** | No disponible | ✅ Sí (`/mis-archivos`) con historial y métricas |
|
|
| **Eliminación manual** | No requerida (se auto-destruye) | ✅ Sí, botón para eliminar cuando quieras |
|
|
|
|
---
|
|
|
|
## 🛠️ Stack Tecnológico
|
|
|
|
- **Lenguaje:** Go (Go 1.22+ / 1.27 con routing nativo `net/http`)
|
|
- **Base de Datos:** SQLite local en modo WAL (vía `modernc.org/sqlite`, 100% puro Go sin dependencias CGO)
|
|
- **Generador QR:** `github.com/skip2/go-qrcode` (generación ultrarrápida de QR PNG)
|
|
- **Frontend:** HTML5, Tailwind CSS y FontAwesome
|
|
- **Autenticación:**
|
|
- Telcotronics **WebControl** (`https://api.siax-system.net/api/auth/login`)
|
|
- **Google OAuth2**
|
|
|
|
---
|
|
|
|
## 🚀 Puesta en Marcha Rápida
|
|
|
|
### 1. Requisitos
|
|
- Go 1.22 o superior instalado en el sistema.
|
|
|
|
### 2. Configurar entorno
|
|
Copia la plantilla de variables de entorno:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Parámetros disponibles en `.env`:
|
|
```env
|
|
PORT=8085
|
|
BASE_URL=http://localhost:8085
|
|
DATA_DIR=./data
|
|
SESSION_SECRET=clave_secreta_para_cookies
|
|
WEBCONTROL_API_URL=https://api.siax-system.net
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
```
|
|
|
|
### 3. Compilar y Arrancar
|
|
```bash
|
|
# Descargar dependencias
|
|
go mod tidy
|
|
|
|
# Compilar binario autónomo
|
|
go build -o app_compartir main.go
|
|
|
|
# Ejecutar el servidor
|
|
./app_compartir
|
|
```
|
|
|
|
Abre tu navegador en: **`http://localhost:8085`**
|
|
|
|
---
|
|
|
|
## 🧪 Pruebas Automatizadas
|
|
|
|
El proyecto cuenta con tests automatizados que comprueban la regla estricta de caducidad a las 24 horas para invitados y la permanencia de usuarios registrados:
|
|
|
|
```bash
|
|
go test -v ./...
|
|
```
|
|
|
|
---
|
|
|
|
## 🚢 Despliegue a Producción (`drop.sigmac.app`)
|
|
|
|
El proyecto sigue la convención estándar del ecosistema Telcotronics basada en dos scripts:
|
|
|
|
1. **Configurar destino:**
|
|
```bash
|
|
cp servers.conf.example servers.conf
|
|
# Ajustar HOST (192.168.10.160), SSH_USER y REMOTE_DIR si es necesario
|
|
```
|
|
|
|
2. **Lanzar despliegue desde tu máquina:**
|
|
```bash
|
|
./desplegar.sh
|
|
# O por parámetro directo: ./desplegar.sh todo
|
|
```
|
|
El script compila localmente el binario release para Linux amd64 (`CGO_ENABLED=0`), transfiere el binario y las plantillas a `server-webapps` CT 132 (`192.168.10.160`) y ejecuta `init.sh` para arrancar el servidor en el puerto `2006` en segundo plano.
|
|
|
|
3. **Ver logs en el servidor:**
|
|
```bash
|
|
./desplegar.sh estado
|
|
```
|
|
|
|
---
|
|
|
|
## 📂 Estructura del Código
|
|
|
|
```text
|
|
app_compartir/
|
|
├── internal/
|
|
│ ├── auth/ # Sesiones HTTP-only, WebControl y Google OAuth
|
|
│ ├── cleaner/ # Worker periódico de purga automática 24h para invitados
|
|
│ ├── config/ # Variables de entorno y rutas
|
|
│ ├── db/ # DAL de SQLite, esquema y consultas seguras
|
|
│ ├── handlers/ # Controladores HTTP: upload, visor, QR, auth, descarga
|
|
│ ├── models/ # Estructuras de datos (Share, User, Session)
|
|
│ └── storage/ # Generador de slugs seguros y almacenamiento en disco
|
|
├── web/
|
|
│ └── templates/ # Plantillas HTML (base, index, visor, login, mis archivos)
|
|
├── .agente/ # Documentación interna del agente y ecosistema Telcotronics
|
|
├── main.go # Servidor HTTP principal y ciclo de vida de la app
|
|
├── main_test.go # Tests de integración de retención y purga
|
|
└── README.md # Esta guía
|
|
```
|
|
|
|
---
|
|
|
|
## 🏢 Ecosistema Telcotronics e Infraestructura
|
|
|
|
Este proyecto forma parte oficial del **Ecosistema Telcotronics** y se encuentra integrado con las siguientes especificaciones:
|
|
|
|
| Entorno / Servicio | Detalle de Conexión |
|
|
|---|---|
|
|
| **Registro Central MCP** | Registrado en MariaDB como **Servicio ID 34** (Categoría: `application`) |
|
|
| **Centro de Agentes (sigma-robot)** | **Agente ID 86** (`Agente drop.sigmac.app`) activo y autorizado vía API REST |
|
|
| **Servidor de Producción** | `server-webapps` CT 132 (`192.168.10.160`), puerto interno `2008` |
|
|
| **Dominio y Proxy Apache** | `https://drop.sigmac.app` con terminación SSL/TLS Let's Encrypt |
|
|
| **Supervisión de Procesos** | Servicio `siax-app-DROP_SIGMAC_APP.service` en [SIAX Monitor](http://192.168.10.160:8080) |
|
|
| **Identidad y Normas** | Consultar [`id_agente.md`](id_agente.md), [`agents.md`](agents.md) y [`.agente/reglas.md`](.agente/reglas.md) |
|
|
| **Espejo de Infraestructura** | Sincronizado en [`.agente/infraestructura.md`](.agente/infraestructura.md) desde `/home/pablinux/Projects/infraestructura.md` |
|