87 lines
4.2 KiB
Markdown
87 lines
4.2 KiB
Markdown
# proyecto_estructura.md — Estructura del proyecto
|
|
|
|
> Árbol de archivos, rutas HTTP/API y dependencias entre módulos.
|
|
> Actualizar al agregar o mover archivos ("actualizar proyecto").
|
|
|
|
---
|
|
|
|
## Árbol de archivos
|
|
|
|
```
|
|
app_compartir/
|
|
├── .agente/
|
|
│ ├── ideas.md
|
|
│ ├── infraestructura.md
|
|
│ ├── objetivos.md
|
|
│ ├── proyecto_errores.md
|
|
│ ├── proyecto_estructura.md
|
|
│ ├── proyecto_memoria.md
|
|
│ ├── reglas.md
|
|
│ └── tareas.md
|
|
├── internal/
|
|
│ ├── auth/
|
|
│ │ └── auth.go # Manejo de sesiones, WebControl y Google OAuth2
|
|
│ ├── cleaner/
|
|
│ │ └── cleaner.go # Worker periódico de purga (24h para guest)
|
|
│ ├── config/
|
|
│ │ └── config.go # Carga de configuración y .env
|
|
│ ├── db/
|
|
│ │ └── db.go # SQLite DAL, esquema y consultas
|
|
│ ├── handlers/
|
|
│ │ └── handlers.go # Rutas HTTP, endpoints API y renderizado HTML
|
|
│ ├── models/
|
|
│ │ └── models.go # Estructuras de datos (Share, User, Session)
|
|
│ └── storage/
|
|
│ └── storage.go # Slugs aleatorios, sniffing MIME y guardado en disco
|
|
├── web/
|
|
│ └── templates/
|
|
│ ├── base.html # Layout común con Tailwind CSS y FontAwesome
|
|
│ ├── expired.html # Mensaje informativo de archivo guest caducado (24h)
|
|
│ ├── index.html # Drag & Drop, pegar portapapeles y compartir texto
|
|
│ ├── login.html # Login con WebControl y Google OAuth
|
|
│ ├── my_shares.html # Panel de usuario con sus archivos permanentes
|
|
│ └── viewer.html # Visor universal (imágenes, video, audio, PDF, código)
|
|
├── .env.example
|
|
├── .gitignore
|
|
├── desplegar.sh # Script de compilación y despliegue (máquina dev)
|
|
├── id_agente.md # Identidad oficial del agente en el ecosistema
|
|
├── init.sh # Script ejecutor local en el servidor
|
|
├── servers.conf.example # Plantilla de credenciales SSH para despliegue
|
|
├── siax-app-DROP_SIGMAC_APP.service # Definición de servicio systemd para SIAX Monitor
|
|
├── go.mod
|
|
├── go.sum
|
|
├── main.go # Punto de entrada y servidor HTTP Go
|
|
├── main_test.go # Tests unitarios/integración (purga 24h vs permanencia)
|
|
├── README.md
|
|
└── agents.md # Punto de entrada del agente
|
|
```
|
|
|
|
---
|
|
|
|
## Rutas HTTP / Endpoints
|
|
|
|
| Método | Ruta | Handler | Descripción |
|
|
|---|---|---|---|
|
|
| `GET` | `/` | `h.Index` | Página principal de subida (drag & drop, portapapeles, texto) |
|
|
| `POST` | `/api/upload` | `h.Upload` | Subida de archivos multipart |
|
|
| `POST` | `/api/share-text` | `h.ShareText` | Subida rápida de notas, textos o código |
|
|
| `GET` | `/v/{id}` | `h.View` | Visor universal de contenidos compartidos |
|
|
| `GET` | `/d/{id}` | `h.Download` | Descarga directa forzada (`attachment`) |
|
|
| `GET` | `/raw/{id}` | `h.Raw` | Visualización directa (`inline`) |
|
|
| `GET` | `/qr/{id}` | `h.QR` | Generador dinámico de código QR en PNG |
|
|
| `DELETE`| `/api/shares/{id}` | `h.DeleteShare` | Eliminación de archivo (usuario propietario) |
|
|
| `GET` | `/login` | `h.LoginView` | Pantalla de inicio de sesión |
|
|
| `POST` | `/login/webcontrol`| `h.WebControlLogin` | Autenticación con credenciales WebControl |
|
|
| `GET` | `/auth/google` | `h.GoogleLogin` | Redirección OAuth a Google |
|
|
| `GET` | `/auth/google/callback` | `h.GoogleCallback` | Retorno de autenticación OAuth Google |
|
|
| `GET` | `/logout` | `h.Logout` | Cierre de sesión y limpieza de cookie |
|
|
| `GET` | `/mis-archivos` | `h.MyShares` | Panel con archivos permanentes del usuario |
|
|
|
|
---
|
|
|
|
## Dependencias entre módulos
|
|
|
|
- `main.go` orquesta `config`, `db`, `cleaner`, `auth` y `handlers`.
|
|
- `handlers` utiliza `storage` para guardar archivos y `qrcode` para generar códigos de acceso móvil.
|
|
- `cleaner` consulta periódicamente `db` y elimina archivos físicos de `data/uploads/` para shares `is_guest = true` con `expires_at <= NOW()`. Las cuentas registradas son ignoradas por el cleaner.
|