diff --git a/lib/utils/config.js b/lib/utils/config.js --- a/lib/utils/config.js +++ b/lib/utils/config.js @@ -26,6 +26,7 @@ +setSessionIDOnRequest: boolean, +calendarRangeInactivityLimit: ?number, +platformDetails: PlatformDetails, + +authoritativeKeyserverID: string, }; let registeredConfig: ?Config = null; diff --git a/native/authoritative-keyserver.js b/native/authoritative-keyserver.js new file mode 100644 --- /dev/null +++ b/native/authoritative-keyserver.js @@ -0,0 +1,19 @@ +// @flow + +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; + +function getAuthoritativeKeyserverID(): string { + try { + const { + authoritativeKeyserverID: keyserverID, + // $FlowExpectedError: file might not exist + } = require('./facts/authoritative_keyserver.json'); + return keyserverID; + } catch { + return ashoatKeyserverID; + } +} + +const authoritativeKeyserverID: string = getAuthoritativeKeyserverID(); + +export { authoritativeKeyserverID }; diff --git a/native/config.js b/native/config.js --- a/native/config.js +++ b/native/config.js @@ -5,6 +5,7 @@ import { registerConfig } from 'lib/utils/config.js'; import { resolveKeyserverSessionInvalidationUsingNativeCredentials } from './account/legacy-recover-keyserver-session.js'; +import { authoritativeKeyserverID } from './authoritative-keyserver.js'; import { persistConfig, codeVersion } from './redux/persist.js'; registerConfig({ @@ -16,4 +17,5 @@ codeVersion, stateVersion: persistConfig.version, }, + authoritativeKeyserverID, }); diff --git a/web/app.react.js b/web/app.react.js --- a/web/app.react.js +++ b/web/app.react.js @@ -38,6 +38,7 @@ import QrCodeLogin from './account/qr-code-login.react.js'; import AppThemeWrapper from './app-theme-wrapper.react.js'; +import { authoritativeKeyserverID } from './authoritative-keyserver.js'; import WebEditThreadAvatarProvider from './avatars/web-edit-thread-avatar-provider.react.js'; import Calendar from './calendar/calendar.react.js'; import Chat from './chat/chat.react.js'; @@ -102,6 +103,7 @@ stateVersion: persistConfig.version, ...desktopDetails, }, + authoritativeKeyserverID, }); const versionBroadcast = new BroadcastChannel('comm_version'); diff --git a/web/authoritative-keyserver.js b/web/authoritative-keyserver.js new file mode 100644 --- /dev/null +++ b/web/authoritative-keyserver.js @@ -0,0 +1,8 @@ +// @flow + +import { ashoatKeyserverID } from 'lib/utils/validation-utils.js'; + +const authoritativeKeyserverID: string = + process.env.AUTHORITATIVE_KEYSERVER_ID ?? ashoatKeyserverID; + +export { authoritativeKeyserverID }; diff --git a/web/webpack.config.cjs b/web/webpack.config.cjs --- a/web/webpack.config.cjs +++ b/web/webpack.config.cjs @@ -13,7 +13,7 @@ async function getConfig(configName) { const { getCommConfig } = await import( - '../keyserver/dist/lib/utils/comm-config.js' + 'keyserver/dist/lib/utils/comm-config.js' ); return await getCommConfig(configName); } @@ -194,7 +194,18 @@ const identitySocketAddr = JSON.stringify( identityServiceConfig?.identitySocketAddr, ); - const envVars = { IDENTITY_SOCKET_ADDR: identitySocketAddr }; + const authoritativeKeyserverIDConfig = await getConfig({ + folder: 'facts', + name: 'authoritative_keyserver', + }); + const authoritativeKeyserverID = JSON.stringify( + authoritativeKeyserverIDConfig?.authoritativeKeyserverID, + ); + + const envVars = { + IDENTITY_SOCKET_ADDR: identitySocketAddr, + AUTHORITATIVE_KEYSERVER_ID: authoritativeKeyserverID, + }; const browserConfigPromise = env.prod ? createProdBrowserConfig(baseProdBrowserConfig, babelConfig, envVars) : createDevBrowserConfig(baseDevBrowserConfig, babelConfig, envVars);