fix: version 2.10.1 -- "Probar correo" tiraba Error interno si la clave SMTP no descifraba

El decrypt() de la clave SMTP guardada estaba fuera del try/catch tanto en testSmtpConfig
(el boton "Probar") como en getSmtpConfigInternal (usado por el mailer real para forgot-
password, registro, invitaciones). Si ENCRYPTION_KEY no coincide con la que se uso para
guardar -- el caso documentado de exilaser, que recibio un dump de LinkedCorp con su propia
clave -- el fallo de decrypt() se propagaba sin control: "Error interno" generico en el boton
de prueba, y un crash silencioso en el envio real en vez de la degradacion a modo dev que el
propio comentario del codigo promete. Ambos casos ahora devuelven un mensaje claro / degradan
correctamente.

De paso se agrega `app.set('trust proxy', 1)`: la app corre detras de Nginx Proxy Manager pero
Express no lo sabia, asi que express-rate-limit usaba la IP del proxy para todos los clientes
(un cupo compartido en vez de uno por usuario) y tiraba un aviso de validacion en cada request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-12 12:26:00 -05:00
parent f89bd2414c
commit da4d83e7cc
6 changed files with 40 additions and 5 deletions
+5
View File
@@ -27,6 +27,11 @@ import vaultRoutes from './modules/vault/routes.js';
export const app = express();
// Produccion (y exilaser) corren detras de Nginx Proxy Manager (un solo salto). Sin esto,
// express-rate-limit usa la IP del proxy para TODOS los clientes (un balde compartido en vez
// de uno por usuario) y ademas tira un ValidationError que ensucia los logs en cada request.
app.set('trust proxy', 1);
app.use(helmet({ contentSecurityPolicy: false }));
app.use(cors({ origin: env.corsOrigin, credentials: true }));
app.use(express.json({ limit: '2mb' }));