41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
const dotenv = require('dotenv');
|
|
const AWS = require('aws-sdk');
|
|
|
|
dotenv.config();
|
|
|
|
function integerFromEnv(name, fallback) {
|
|
const value = process.env[name];
|
|
if (value === undefined || value === '') return fallback;
|
|
return Number(value);
|
|
}
|
|
|
|
module.exports = {
|
|
WEBHOOK_URL: process.env.WEBHOOK_URL,
|
|
PORT: integerFromEnv('PORT', 25),
|
|
MAX_FILE_SIZE: integerFromEnv('MAX_FILE_SIZE', 5 * 1024 * 1024),
|
|
MAX_MESSAGE_SIZE: integerFromEnv('MAX_MESSAGE_SIZE', 25 * 1024 * 1024),
|
|
MAX_SMTP_CLIENTS: integerFromEnv('MAX_SMTP_CLIENTS', 50),
|
|
SMTP_SOCKET_TIMEOUT: integerFromEnv('SMTP_SOCKET_TIMEOUT', 5 * 60 * 1000),
|
|
SMTP_CLOSE_TIMEOUT: integerFromEnv('SMTP_CLOSE_TIMEOUT', 10 * 1000),
|
|
SMTP_ALLOWED_IPS: (process.env.SMTP_ALLOWED_IPS || '')
|
|
.split(',')
|
|
.map(ip => ip.trim())
|
|
.filter(Boolean),
|
|
BUCKET_NAME: process.env.S3_BUCKET_NAME,
|
|
SMTP_SECURE: process.env.SMTP_SECURE === 'true',
|
|
TLS_KEY_PATH: process.env.TLS_KEY_PATH,
|
|
TLS_CERT_PATH: process.env.TLS_CERT_PATH,
|
|
WEBHOOK_CONCURRENCY: integerFromEnv('WEBHOOK_CONCURRENCY', 5),
|
|
WEBHOOK_QUEUE_RETRIES: integerFromEnv('WEBHOOK_QUEUE_RETRIES', 10),
|
|
WEBHOOK_QUEUE_RETRY_DELAY: integerFromEnv('WEBHOOK_QUEUE_RETRY_DELAY', 60 * 1000),
|
|
WEBHOOK_QUEUE_TIMEOUT: integerFromEnv('WEBHOOK_QUEUE_TIMEOUT', 35 * 1000),
|
|
SPOOL_DIR: process.env.SPOOL_DIR || '/var/lib/smtpwebhook/spool',
|
|
LOG_DIR: process.env.LOG_DIR || '/var/lib/smtpwebhook/logs',
|
|
|
|
s3: new AWS.S3({
|
|
region: process.env.AWS_REGION,
|
|
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
})
|
|
};
|