1 Commits

Author SHA1 Message Date
s4luorth
3bef26b332 FTP: Zugangsdaten robust einlesen (Quotes/CRLF entfernen)
All checks were successful
Build & Deploy / deploy (push) Successful in 12s
Gegen "530 Login incorrect" trotz korrekter Daten (FileZilla ok): host/
user/password werden von versehentlich umschliessenden Anfuehrungszeichen
und CR/LF bereinigt (haeufige .env-/docker-env_file-Fallen unter Windows).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-28 10:54:07 +02:00

View File

@@ -59,14 +59,20 @@ module.exports = {
// Alternativer Übermittlungsweg (batch_submissions): Ziel-FTP für die täglichen
// Bündel (xlsx + Sammel-Druck-PDF). Passwort NUR über ENV.
ftp: {
host: process.env.SKRIFT_FTP_HOST || '',
// envClean entfernt versehentliche umschließende Anführungszeichen und CR/LF
// (häufige .env-Fallen unter Windows/docker env_file), die sonst zu „530
// Login incorrect" führen, obwohl die Daten korrekt sind.
ftp: (() => {
const envClean = (v) => String(v || '').replace(/[\r\n]+/g, '').replace(/^(['"])([\s\S]*)\1$/, '$2');
return {
host: envClean(process.env.SKRIFT_FTP_HOST),
port: parseInt(process.env.SKRIFT_FTP_PORT, 10) || 21,
user: process.env.SKRIFT_FTP_USER || '',
password: process.env.SKRIFT_FTP_PASSWORD || '',
user: envClean(process.env.SKRIFT_FTP_USER),
password: envClean(process.env.SKRIFT_FTP_PASSWORD),
// explizites FTP über TLS (wie im FTP-Client eingestellt). 'false' schaltet ab.
secure: String(process.env.SKRIFT_FTP_SECURE || 'true').toLowerCase() !== 'false',
// Selbstsigniertes Zertifikat zulassen (viele FTP-Server) – auf 'false' setzen für strikte Prüfung.
rejectUnauthorized: String(process.env.SKRIFT_FTP_REJECT_UNAUTHORIZED || 'false').toLowerCase() === 'true',
},
};
})(),
};