diff --git a/keyserver/src/cron/backups.js b/keyserver/src/cron/backups.js --- a/keyserver/src/cron/backups.js +++ b/keyserver/src/cron/backups.js @@ -9,8 +9,9 @@ import { promisify } from 'util'; import zlib from 'zlib'; +import { getCommConfig } from 'lib/utils/comm-config.js'; + import { getDBConfig, type DBConfig } from '../database/db-config.js'; -import { importJSON } from '../utils/import-json.js'; const readdir = promisify(fs.readdir); const lstat = promisify(fs.lstat); @@ -23,7 +24,7 @@ }; function getBackupConfig(): Promise { - return importJSON({ folder: 'facts', name: 'backups' }); + return getCommConfig({ folder: 'facts', name: 'backups' }); } async function backupDB() { diff --git a/keyserver/src/cron/update-geoip-db.js b/keyserver/src/cron/update-geoip-db.js --- a/keyserver/src/cron/update-geoip-db.js +++ b/keyserver/src/cron/update-geoip-db.js @@ -4,11 +4,12 @@ import cluster from 'cluster'; import geoip from 'geoip-lite'; +import { getCommConfig } from 'lib/utils/comm-config.js'; + import { handleAsyncPromise } from '../responders/handlers.js'; -import { importJSON } from '../utils/import-json.js'; async function updateGeoipDB(): Promise { - const geoipLicense = await importJSON({ + const geoipLicense = await getCommConfig({ folder: 'secrets', name: 'geoip_license', }); diff --git a/keyserver/src/database/db-config.js b/keyserver/src/database/db-config.js --- a/keyserver/src/database/db-config.js +++ b/keyserver/src/database/db-config.js @@ -2,7 +2,7 @@ import invariant from 'invariant'; -import { importJSON } from '../utils/import-json.js'; +import { getCommConfig } from 'lib/utils/comm-config.js'; type DBType = 'mariadb10.8'; export type DBConfig = { @@ -49,7 +49,7 @@ dbType: assertValidDBType(process.env.COMM_DATABASE_TYPE), }; } else { - const importedDBConfig = await importJSON({ + const importedDBConfig = await getCommConfig({ folder: 'secrets', name: 'db_config', }); diff --git a/keyserver/src/emails/sendmail.js b/keyserver/src/emails/sendmail.js --- a/keyserver/src/emails/sendmail.js +++ b/keyserver/src/emails/sendmail.js @@ -3,10 +3,9 @@ import invariant from 'invariant'; import nodemailer from 'nodemailer'; +import { getCommConfig } from 'lib/utils/comm-config.js'; import { isDev } from 'lib/utils/dev-utils.js'; -import { importJSON } from '../utils/import-json.js'; - type MailInfo = { +from: string, +to: string, @@ -28,7 +27,7 @@ if (cachedTransport) { return cachedTransport; } - const postmark: ?PostmarkConfig = await importJSON({ + const postmark: ?PostmarkConfig = await getCommConfig({ folder: 'secrets', name: 'postmark', }); diff --git a/keyserver/src/push/providers.js b/keyserver/src/push/providers.js --- a/keyserver/src/push/providers.js +++ b/keyserver/src/push/providers.js @@ -8,8 +8,7 @@ import webpush from 'web-push'; import type { PlatformDetails } from 'lib/types/device-types'; - -import { importJSON } from '../utils/import-json.js'; +import { getCommConfig } from 'lib/utils/comm-config.js'; type APNPushProfile = 'apn_config' | 'comm_apn_config'; function getAPNPushProfileForCodeVersion( @@ -35,7 +34,7 @@ return provider; } try { - const apnConfig = await importJSON({ folder: 'secrets', name: profile }); + const apnConfig = await getCommConfig({ folder: 'secrets', name: profile }); invariant(apnConfig, `APN config missing for ${profile}`); if (!cachedAPNProviders.has(profile)) { cachedAPNProviders.set(profile, new apn.Provider(apnConfig)); @@ -55,7 +54,7 @@ return provider; } try { - const fcmConfig = await importJSON({ folder: 'secrets', name: profile }); + const fcmConfig = await getCommConfig({ folder: 'secrets', name: profile }); invariant(fcmConfig, `FCM config missed for ${profile}`); if (!cachedFCMProviders.has(profile)) { cachedFCMProviders.set( @@ -101,7 +100,7 @@ if (cachedWebPushConfig) { return cachedWebPushConfig; } - cachedWebPushConfig = await importJSON({ + cachedWebPushConfig = await getCommConfig({ folder: 'secrets', name: 'web_push_config', }); diff --git a/keyserver/src/utils/olm-utils.js b/keyserver/src/utils/olm-utils.js --- a/keyserver/src/utils/olm-utils.js +++ b/keyserver/src/utils/olm-utils.js @@ -4,7 +4,7 @@ import type { Utility as OlmUtility } from '@matrix-org/olm'; import invariant from 'invariant'; -import { importJSON } from './import-json.js'; +import { getCommConfig } from 'lib/utils/comm-config.js'; type OlmConfig = { +picklingKey: string, @@ -12,7 +12,10 @@ }; async function getOlmConfig(): Promise { - const olmConfig = await importJSON({ folder: 'secrets', name: 'olm_config' }); + const olmConfig = await getCommConfig({ + folder: 'secrets', + name: 'olm_config', + }); invariant(olmConfig, 'OLM config missing'); return olmConfig; } diff --git a/keyserver/src/utils/urls.js b/keyserver/src/utils/urls.js --- a/keyserver/src/utils/urls.js +++ b/keyserver/src/utils/urls.js @@ -2,10 +2,9 @@ import invariant from 'invariant'; +import { getCommConfig } from 'lib/utils/comm-config.js'; import { values } from 'lib/utils/objects.js'; -import { importJSON } from './import-json.js'; - export type AppURLFacts = { +baseDomain: string, +basePath: string, @@ -28,7 +27,7 @@ if (existing !== undefined) { return existing; } - let urlFacts: ?AppURLFacts = await importJSON({ + let urlFacts: ?AppURLFacts = await getCommConfig({ folder: 'facts', name: `${site}_url`, }); diff --git a/keyserver/src/utils/import-json.js b/lib/utils/comm-config.js rename from keyserver/src/utils/import-json.js rename to lib/utils/comm-config.js --- a/keyserver/src/utils/import-json.js +++ b/lib/utils/comm-config.js @@ -19,7 +19,11 @@ } const cachedJSON = new Map(); -async function importJSON(configName: ConfigName): Promise { + +// This function checks for an env var named COMM_JSONCONFIG_{folder}_{name} +// If it doesn't find one, it then looks for keyserver/{folder}/{name}.json +// In both cases, it expects to find a JSON blob +async function getCommConfig(configName: ConfigName): Promise { const key = getKeyForConfigName(configName); const cached = cachedJSON.get(key); if (cached !== undefined) { @@ -57,4 +61,4 @@ } } -export { importJSON }; +export { getCommConfig };