oneuptime/CommonServer/EnvironmentConfig.ts
Simon Larsen d2a1385123
refactor: Update ALLOWED_ACTIVE_MONITOR_COUNT_IN_FREE_PLAN to 10
The ALLOWED_ACTIVE_MONITOR_COUNT_IN_FREE_PLAN constant has been updated to 10 in multiple files. This change aligns the codebase with the new limit for active monitors allowed in the free plan.
2024-06-11 13:50:55 +01:00

214 lines
6.9 KiB
TypeScript

import BillingConfig from './BillingConfig';
import Hostname from 'Common/Types/API/Hostname';
import Protocol from 'Common/Types/API/Protocol';
import SubscriptionPlan from 'Common/Types/Billing/SubscriptionPlan';
import Email from 'Common/Types/Email';
import { JSONObject } from 'Common/Types/JSON';
import ObjectID from 'Common/Types/ObjectID';
import Port from 'Common/Types/Port';
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 LetsEncryptNotificationEmail: Email = Email.fromString(
process.env['LETS_ENCRYPT_NOTIFICATION_EMAIL'] ||
'notifications@example.com'
);
export const LetsEncryptAccountKey: string =
process.env['LETS_ENCRYPT_ACCOUNT_KEY'] || '';
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 RedisTlsCert: string | undefined =
process.env['REDIS_TLS_CERT'] || undefined;
export const RedisTlsKey: string | undefined =
process.env['REDIS_TLS_KEY'] || undefined;
export const RedisTlsSentinelMode: boolean =
process.env['REDIS_TLS_SENTINEL_MODE'] === 'true';
export const ShouldRedisTlsEnable: boolean = Boolean(
RedisTlsCa || (RedisTlsCert && RedisTlsKey)
);
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 StatusPageCNameRecord: string =
process.env['STATUS_PAGE_CNAME_RECORD'] || '';
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 ClickhouseTlsCa: string | undefined =
process.env['CLICKHOUSE_TLS_CA'] || undefined;
export const ClickhouseTlsCert: string | undefined =
process.env['CLICKHOUSE_TLS_CERT'] || undefined;
export const ClickhouseTlsKey: string | undefined =
process.env['CLICKHOUSE_TLS_KEY'] || undefined;
export const ClickHouseIsHostHttps: boolean =
process.env['CLICKHOUSE_IS_HOST_HTTPS'] === 'true';
export const ShouldClickhouseSslEnable: boolean = Boolean(
ClickhouseTlsCa || (ClickhouseTlsCert && ClickhouseTlsKey)
);
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.INFO;
export const HttpProtocol: Protocol =
process.env['HTTP_PROTOCOL'] === 'https' ? Protocol.HTTPS : Protocol.HTTP;
export const Host: string = process.env['HOST'] || '';
export const WorkflowScriptTimeoutInMS: number = process.env[
'WORKFLOW_SCRIPT_TIMEOUT_IN_MS'
]
? parseInt(process.env['WORKFLOW_SCRIPT_TIMEOUT_IN_MS'].toString())
: 5000;
export const AllowedActiveMonitorCountInFreePlan: number = process.env[
'ALLOWED_ACTIVE_MONITOR_COUNT_IN_FREE_PLAN'
]
? parseInt(
process.env['ALLOWED_ACTIVE_MONITOR_COUNT_IN_FREE_PLAN'].toString()
)
: 10;