99 lines
3.3 KiB
JavaScript
99 lines
3.3 KiB
JavaScript
const os = require('os');
|
|
const path = require('path');
|
|
|
|
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
|
|
|
|
const { validateEnv } = require('./utils/env-validation');
|
|
validateEnv();
|
|
|
|
const config = {
|
|
gcloud: {
|
|
bucket: 'fldemo-files',
|
|
hash: 'afeefb9d49f5b7977577876b99532ac7',
|
|
},
|
|
s3: {
|
|
bucket: process.env.AWS_S3_BUCKET || '',
|
|
region: process.env.AWS_S3_REGION || 'us-east-1',
|
|
accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',
|
|
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || '',
|
|
prefix: process.env.AWS_S3_PREFIX || 'afeefb9d49f5b7977577876b99532ac7',
|
|
// Timeout configuration (in milliseconds)
|
|
connectionTimeout:
|
|
parseInt(process.env.AWS_S3_CONNECTION_TIMEOUT, 10) || 5000,
|
|
requestTimeout: parseInt(process.env.AWS_S3_REQUEST_TIMEOUT, 10) || 30000,
|
|
// Retry configuration
|
|
maxAttempts: parseInt(process.env.AWS_S3_MAX_ATTEMPTS, 10) || 3,
|
|
// Connection pool configuration
|
|
maxSockets: parseInt(process.env.AWS_S3_MAX_SOCKETS, 10) || 50,
|
|
keepAlive: process.env.AWS_S3_KEEP_ALIVE !== 'false',
|
|
// Presigned URL expiry (in seconds)
|
|
presignExpirySeconds:
|
|
parseInt(process.env.AWS_S3_PRESIGN_EXPIRY, 10) || 3600,
|
|
},
|
|
bcrypt: {
|
|
saltRounds: 12,
|
|
},
|
|
admin_pass: process.env.ADMIN_PASS || '88dbeaf8',
|
|
user_pass: process.env.USER_PASS || 'c3baadeda5c6',
|
|
admin_email: process.env.ADMIN_EMAIL || 'admin@flatlogic.com',
|
|
providers: {
|
|
LOCAL: 'local',
|
|
GOOGLE: 'google',
|
|
MICROSOFT: 'microsoft',
|
|
},
|
|
secret_key: process.env.SECRET_KEY || '88dbeaf8-e906-405e-9e41-c3baadeda5c6',
|
|
remote: '',
|
|
port: process.env.NODE_ENV === 'production' ? '' : '8080',
|
|
hostUI: process.env.NODE_ENV === 'production' ? '' : 'http://localhost',
|
|
portUI: process.env.NODE_ENV === 'production' ? '' : '3000',
|
|
|
|
portUIProd: process.env.NODE_ENV === 'production' ? '' : ':3000',
|
|
|
|
swaggerUI: process.env.NODE_ENV === 'production' ? '' : 'http://localhost',
|
|
swaggerPort: process.env.NODE_ENV === 'production' ? '' : ':8080',
|
|
google: {
|
|
clientId: process.env.GOOGLE_CLIENT_ID || '',
|
|
clientSecret: process.env.GOOGLE_CLIENT_SECRET || '',
|
|
},
|
|
microsoft: {
|
|
clientId: process.env.MS_CLIENT_ID || '',
|
|
clientSecret: process.env.MS_CLIENT_SECRET || '',
|
|
},
|
|
uploadDir: os.tmpdir(),
|
|
email: {
|
|
from: 'Tour Builder Platform <app@flatlogic.app>',
|
|
host: 'email-smtp.us-east-1.amazonaws.com',
|
|
port: 587,
|
|
auth: {
|
|
user: process.env.EMAIL_USER || '',
|
|
pass: process.env.EMAIL_PASS,
|
|
},
|
|
tls: {
|
|
rejectUnauthorized: process.env.EMAIL_TLS_REJECT_UNAUTHORIZED !== 'false',
|
|
},
|
|
},
|
|
roles: {
|
|
admin: 'Administrator',
|
|
|
|
user: 'Analytics Viewer',
|
|
},
|
|
|
|
project_uuid: '88dbeaf8-e906-405e-9e41-c3baadeda5c6',
|
|
flHost:
|
|
process.env.NODE_ENV === 'production' ||
|
|
process.env.NODE_ENV === 'dev_stage'
|
|
? 'https://flatlogic.com/projects'
|
|
: 'http://localhost:3000/projects',
|
|
|
|
gpt_key: process.env.GPT_KEY || '',
|
|
};
|
|
|
|
config.host =
|
|
process.env.NODE_ENV === 'production' ? config.remote : 'http://localhost';
|
|
config.apiUrl = `${config.host}${config.port ? `:${config.port}` : ``}/api`;
|
|
config.swaggerUrl = `${config.swaggerUI}${config.swaggerPort}`;
|
|
config.uiUrl = `${config.hostUI}${config.portUI ? `:${config.portUI}` : ``}/#`;
|
|
config.backUrl = `${config.hostUI}${config.portUI ? `:${config.portUI}` : ``}`;
|
|
|
|
module.exports = config;
|