119 lines
4.4 KiB
TypeScript
119 lines
4.4 KiB
TypeScript
/**
|
|
* Admin interfaces configuration using envalid
|
|
* PgAdmin, Mongo Express, Redis Insight for database management
|
|
*/
|
|
import { cleanEnv, str, port, bool } from 'envalid';
|
|
|
|
/**
|
|
* PgAdmin configuration with validation and defaults
|
|
*/
|
|
export const pgAdminConfig = cleanEnv(process.env, {
|
|
// PgAdmin Server
|
|
PGADMIN_HOST: str({ default: 'localhost', desc: 'PgAdmin host' }),
|
|
PGADMIN_PORT: port({ default: 8080, desc: 'PgAdmin port' }),
|
|
|
|
// Authentication
|
|
PGADMIN_DEFAULT_EMAIL: str({ default: 'admin@tradingbot.local', desc: 'PgAdmin default admin email' }),
|
|
PGADMIN_DEFAULT_PASSWORD: str({ default: 'admin123', desc: 'PgAdmin default admin password' }),
|
|
|
|
// Configuration
|
|
PGADMIN_SERVER_MODE: bool({ default: false, desc: 'Enable server mode (multi-user)' }),
|
|
PGADMIN_DISABLE_POSTFIX: bool({ default: true, desc: 'Disable postfix for email' }),
|
|
PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION: bool({ default: true, desc: 'Enhanced cookie protection' }),
|
|
|
|
// Security
|
|
PGADMIN_MASTER_PASSWORD_REQUIRED: bool({ default: false, desc: 'Require master password' }),
|
|
PGADMIN_SESSION_TIMEOUT: str({ default: '60', desc: 'Session timeout in minutes' }),
|
|
});
|
|
|
|
/**
|
|
* Mongo Express configuration with validation and defaults
|
|
*/
|
|
export const mongoExpressConfig = cleanEnv(process.env, {
|
|
// Mongo Express Server
|
|
MONGO_EXPRESS_HOST: str({ default: 'localhost', desc: 'Mongo Express host' }),
|
|
MONGO_EXPRESS_PORT: port({ default: 8081, desc: 'Mongo Express port' }),
|
|
|
|
// MongoDB Connection
|
|
MONGO_EXPRESS_MONGODB_SERVER: str({ default: 'mongodb', desc: 'MongoDB server name/host' }),
|
|
MONGO_EXPRESS_MONGODB_PORT: port({ default: 27017, desc: 'MongoDB port' }),
|
|
MONGO_EXPRESS_MONGODB_ADMINUSERNAME: str({ default: 'trading_admin', desc: 'MongoDB admin username' }),
|
|
MONGO_EXPRESS_MONGODB_ADMINPASSWORD: str({ default: '', desc: 'MongoDB admin password' }),
|
|
|
|
// Basic Authentication for Mongo Express
|
|
MONGO_EXPRESS_BASICAUTH_USERNAME: str({ default: 'admin', desc: 'Basic auth username for Mongo Express' }),
|
|
MONGO_EXPRESS_BASICAUTH_PASSWORD: str({ default: 'admin123', desc: 'Basic auth password for Mongo Express' }),
|
|
|
|
// Configuration
|
|
MONGO_EXPRESS_ENABLE_ADMIN: bool({ default: true, desc: 'Enable admin features' }),
|
|
MONGO_EXPRESS_OPTIONS_EDITOR_THEME: str({
|
|
default: 'rubyblue',
|
|
desc: 'Editor theme (rubyblue, 3024-night, etc.)'
|
|
}),
|
|
MONGO_EXPRESS_REQUEST_SIZE: str({ default: '100kb', desc: 'Maximum request size' }),
|
|
});
|
|
|
|
/**
|
|
* Redis Insight configuration with validation and defaults
|
|
*/
|
|
export const redisInsightConfig = cleanEnv(process.env, {
|
|
// Redis Insight Server
|
|
REDIS_INSIGHT_HOST: str({ default: 'localhost', desc: 'Redis Insight host' }),
|
|
REDIS_INSIGHT_PORT: port({ default: 8001, desc: 'Redis Insight port' }),
|
|
|
|
// Redis Connection Settings
|
|
REDIS_INSIGHT_REDIS_HOSTS: str({
|
|
default: 'local:dragonfly:6379',
|
|
desc: 'Redis hosts in format name:host:port,name:host:port'
|
|
}),
|
|
|
|
// Configuration
|
|
REDIS_INSIGHT_LOG_LEVEL: str({
|
|
default: 'info',
|
|
choices: ['error', 'warn', 'info', 'verbose', 'debug'],
|
|
desc: 'Redis Insight log level'
|
|
}),
|
|
REDIS_INSIGHT_DISABLE_ANALYTICS: bool({ default: true, desc: 'Disable analytics collection' }),
|
|
REDIS_INSIGHT_BUILD_TYPE: str({ default: 'DOCKER', desc: 'Build type identifier' }),
|
|
});
|
|
|
|
// Export typed configuration objects
|
|
export type PgAdminConfig = typeof pgAdminConfig;
|
|
export type MongoExpressConfig = typeof mongoExpressConfig;
|
|
export type RedisInsightConfig = typeof redisInsightConfig;
|
|
|
|
// Export individual config values for convenience
|
|
export const {
|
|
PGADMIN_HOST,
|
|
PGADMIN_PORT,
|
|
PGADMIN_DEFAULT_EMAIL,
|
|
PGADMIN_DEFAULT_PASSWORD,
|
|
PGADMIN_SERVER_MODE,
|
|
PGADMIN_DISABLE_POSTFIX,
|
|
PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION,
|
|
PGADMIN_MASTER_PASSWORD_REQUIRED,
|
|
PGADMIN_SESSION_TIMEOUT,
|
|
} = pgAdminConfig;
|
|
|
|
export const {
|
|
MONGO_EXPRESS_HOST,
|
|
MONGO_EXPRESS_PORT,
|
|
MONGO_EXPRESS_MONGODB_SERVER,
|
|
MONGO_EXPRESS_MONGODB_PORT,
|
|
MONGO_EXPRESS_MONGODB_ADMINUSERNAME,
|
|
MONGO_EXPRESS_MONGODB_ADMINPASSWORD,
|
|
MONGO_EXPRESS_BASICAUTH_USERNAME,
|
|
MONGO_EXPRESS_BASICAUTH_PASSWORD,
|
|
MONGO_EXPRESS_ENABLE_ADMIN,
|
|
MONGO_EXPRESS_OPTIONS_EDITOR_THEME,
|
|
MONGO_EXPRESS_REQUEST_SIZE,
|
|
} = mongoExpressConfig;
|
|
|
|
export const {
|
|
REDIS_INSIGHT_HOST,
|
|
REDIS_INSIGHT_PORT,
|
|
REDIS_INSIGHT_REDIS_HOSTS,
|
|
REDIS_INSIGHT_LOG_LEVEL,
|
|
REDIS_INSIGHT_DISABLE_ANALYTICS,
|
|
REDIS_INSIGHT_BUILD_TYPE,
|
|
} = redisInsightConfig;
|