oneuptime/CommonServer/EnvironmentConfig.ts

158 lines
5.2 KiB
TypeScript

import ObjectID from 'Common/Types/ObjectID';
import Port from 'Common/Types/Port';
import Hostname from 'Common/Types/API/Hostname';
import SubscriptionPlan from 'Common/Types/Billing/SubscriptionPlan';
import { JSONObject } from 'Common/Types/JSON';
import BillingConfig from './BillingConfig';
export enum ConfigLogLevel {
INFO = 'INFO',
WARN = 'WARN',
ERROR = 'ERROR',
DEBUG = 'DEBUG',
}
export const getAllEnvVars: () => JSONObject = (): JSONObject => {
return process.env;
};
export const IsBillingEnabled: boolean = BillingConfig.IsBillingEnabled;
export const BillingPublicKey: string = BillingConfig.BillingPublicKey;
export const BillingPrivateKey: string = BillingConfig.BillingPrivateKey;
export const DatabaseHost: Hostname = Hostname.fromString(
process.env['DATABASE_HOST'] || 'postgres'
);
export const DatabasePort: Port = new Port(
process.env['DATABASE_PORT'] || '5432'
);
export const DatabaseUsername: string =
process.env['DATABASE_USERNAME'] || 'postgres';
export const DatabasePassword: string =
process.env['DATABASE_PASSWORD'] || 'password';
export const DatabaseName: string =
process.env['DATABASE_NAME'] || 'oneuptimedb';
export const DatabaseSslCa: string | undefined =
process.env['DATABASE_SSL_CA'] || undefined;
export const DatabaseSslKey: string | undefined =
process.env['DATABASE_SSL_KEY'] || undefined;
export const DatabaseSslCert: string | undefined =
process.env['DATABASE_SSL_CERT'] || undefined;
export const DatabaseRejectUnauthorized: boolean =
process.env['DATABASE_SSL_REJECT_UNAUTHORIZED'] === 'true';
export const ShouldDatabaseSslEnable: boolean = Boolean(
DatabaseSslCa || (DatabaseSslCert && DatabaseSslKey)
);
export const EncryptionSecret: ObjectID = new ObjectID(
process.env['ENCRYPTION_SECRET'] || 'secret'
);
export const AirtableApiKey: string = process.env['AIRTABLE_API_KEY'] || '';
export const AirtableBaseId: string = process.env['AIRTABLE_BASE_ID'] || '';
export const ClusterKey: ObjectID = new ObjectID(
process.env['ONEUPTIME_SECRET'] || 'secret'
);
export const HasClusterKey: boolean = Boolean(process.env['ONEUPTIME_SECRET']);
export const AppApiHostname: Hostname = Hostname.fromString(
`${process.env['SERVER_APP_HOSTNAME'] || 'localhost'}:${
process.env['APP_PORT'] || 80
}`
);
export const IngestorHostname: Hostname = Hostname.fromString(
`${process.env['SERVER_INGESTOR_HOSTNAME'] || 'localhost'}:${
process.env['INGESTOR_PORT'] || 80
}`
);
export const IsolatedVMHostname: Hostname = Hostname.fromString(
`${process.env['SERVER_ISOLATED_VM_HOSTNAME'] || 'localhost'}:${
process.env['ISOLATED_VM_PORT'] || 80
}`
);
export const AccountsHostname: Hostname = Hostname.fromString(
`${process.env['SERVER_ACCOUNTS_HOSTNAME'] || 'localhost'}:${
process.env['ACCOUNTS_PORT'] || 80
}`
);
export const DashboardHostname: Hostname = Hostname.fromString(
`${process.env['SERVER_DASHBOARD_HOSTNAME'] || 'localhost'}:${
process.env['DASHBOARD_PORT'] || 80
}`
);
export const Env: string = process.env['NODE_ENV'] || 'production';
// Redis does not require password.
export const RedisHostname: string = process.env['REDIS_HOST'] || 'redis';
export const RedisPort: Port = new Port(process.env['REDIS_PORT'] || '6379');
export const RedisDb: number = Number(process.env['REDIS_DB']) || 0;
export const RedisUsername: string = process.env['REDIS_USERNAME'] || 'default';
export const RedisPassword: string =
process.env['REDIS_PASSWORD'] || 'password';
export const RedisTlsCa: string | undefined =
process.env['REDIS_TLS_CA'] || undefined;
export const RedisTlsSentinelMode: boolean =
process.env['REDIS_TLS_SENTINEL_MODE'] === 'true';
export const ShouldRedisTlsEnable: boolean = Boolean(
RedisTlsCa || RedisTlsSentinelMode
);
export const IsProduction: boolean =
process.env['ENVIRONMENT'] === 'production';
export const IsDevelopment: boolean =
process.env['ENVIRONMENT'] === 'development';
export const IsTest: boolean = process.env['ENVIRONMENT'] === 'test';
export const SubscriptionPlans: Array<SubscriptionPlan> =
SubscriptionPlan.getSubscriptionPlans(getAllEnvVars());
export const AnalyticsKey: string = process.env['ANALYTICS_KEY'] || '';
export const AnalyticsHost: string = process.env['ANALYTICS_HOST'] || '';
export const DisableAutomaticIncidentCreation: boolean =
process.env['DISABLE_AUTOMATIC_INCIDENT_CREATION'] === 'true';
export const ClickhouseHost: Hostname = Hostname.fromString(
process.env['CLICKHOUSE_HOST'] || 'clickhouse'
);
export const ClickhousePort: Port = new Port(
process.env['CLICKHOUSE_PORT'] || '8123'
);
export const ClickhouseUsername: string =
process.env['CLICKHOUSE_USER'] || 'default';
export const ClickhousePassword: string =
process.env['CLICKHOUSE_PASSWORD'] || 'password';
export const ClickhouseDatabase: string =
process.env['CLICKHOUSE_DATABASE'] || 'oneuptime';
export const GitSha: string = process.env['GIT_SHA'] || 'unknown';
export const AppVersion: string = process.env['APP_VERSION'] || 'unknown';
export const LogLevel: ConfigLogLevel =
(process.env['LOG_LEVEL'] as ConfigLogLevel) || ConfigLogLevel.ERROR;