55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
require('dotenv').config();
|
|
|
|
module.exports = {
|
|
// Server configuration
|
|
server: {
|
|
port: process.env.PORT || 3000,
|
|
nodeEnv: process.env.NODE_ENV || 'development'
|
|
},
|
|
|
|
// Session configuration
|
|
session: {
|
|
secret: process.env.SESSION_SECRET || 'change-this-secret',
|
|
resave: false,
|
|
saveUninitialized: false,
|
|
cookie: {
|
|
secure: process.env.NODE_ENV === 'production',
|
|
httpOnly: true,
|
|
maxAge: 24 * 60 * 60 * 1000 // 24 hours
|
|
}
|
|
},
|
|
|
|
// MQTT configuration
|
|
mqtt: {
|
|
broker: process.env.MQTT_BROKER || 'mqtt://mqtt.meshtastic.org',
|
|
port: parseInt(process.env.MQTT_PORT) || 1883,
|
|
username: process.env.MQTT_USERNAME || 'meshdev',
|
|
password: process.env.MQTT_PASSWORD || 'large4cats',
|
|
topic: process.env.MQTT_TOPIC || 'msh/US/#',
|
|
pubTopic: process.env.MQTT_PUB_TOPIC || 'msh/US/2/json/mqtt/', // The ending / is apparently critical
|
|
options: {
|
|
clientId: `meshtastic-dashboard-${Math.random().toString(16).substr(2, 8)}`,
|
|
clean: true,
|
|
reconnectPeriod: 1000,
|
|
connectTimeout: 30 * 1000
|
|
}
|
|
},
|
|
|
|
// Data retention configuration
|
|
dataRetention: {
|
|
days: parseInt(process.env.DATA_RETENTION_DAYS) || 30,
|
|
purgeCronSchedule: process.env.PURGE_CRON_SCHEDULE || '0 2 * * *'
|
|
},
|
|
|
|
// Rate limiting configuration
|
|
rateLimit: {
|
|
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS) || 15 * 60 * 1000, // 15 minutes
|
|
maxRequests: parseInt(process.env.RATE_LIMIT_MAX_REQUESTS) || 100
|
|
},
|
|
|
|
// Logging configuration
|
|
logging: {
|
|
level: process.env.LOG_LEVEL || 'info'
|
|
}
|
|
};
|