Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/responders/website-responders.js
Show All 37 Lines | |||||
} | } | ||||
type AssetInfo = { | type AssetInfo = { | ||||
+jsURL: string, | +jsURL: string, | ||||
+fontsURL: string, | +fontsURL: string, | ||||
+cssInclude: string, | +cssInclude: string, | ||||
+olmFilename: string, | +olmFilename: string, | ||||
+commQueryExecutorFilename: string, | +commQueryExecutorFilename: string, | ||||
+opaqueURL: string, | |||||
+backupClientFilename: string, | +backupClientFilename: string, | ||||
+webworkersOpaqueFilename: string, | +webworkersOpaqueFilename: string, | ||||
}; | }; | ||||
let assetInfo: ?AssetInfo = null; | let assetInfo: ?AssetInfo = null; | ||||
async function getAssetInfo() { | async function getAssetInfo() { | ||||
if (assetInfo) { | if (assetInfo) { | ||||
return assetInfo; | return assetInfo; | ||||
} | } | ||||
if (process.env.NODE_ENV === 'development') { | if (process.env.NODE_ENV === 'development') { | ||||
const fontsURL = await getFontsURL(); | const fontsURL = await getFontsURL(); | ||||
assetInfo = { | assetInfo = { | ||||
jsURL: 'http://localhost:8080/dev.build.js', | jsURL: 'http://localhost:8080/dev.build.js', | ||||
fontsURL, | fontsURL, | ||||
cssInclude: '', | cssInclude: '', | ||||
olmFilename: '', | olmFilename: '', | ||||
commQueryExecutorFilename: '', | commQueryExecutorFilename: '', | ||||
opaqueURL: 'http://localhost:8080/opaque-ke.wasm', | |||||
backupClientFilename: '', | backupClientFilename: '', | ||||
webworkersOpaqueFilename: '', | webworkersOpaqueFilename: '', | ||||
}; | }; | ||||
return assetInfo; | return assetInfo; | ||||
} | } | ||||
try { | try { | ||||
const manifestString = await readFile('../web/dist/manifest.json', 'utf8'); | const manifestString = await readFile('../web/dist/manifest.json', 'utf8'); | ||||
const manifest = JSON.parse(manifestString); | const manifest = JSON.parse(manifestString); | ||||
Show All 9 Lines | assetInfo = { | ||||
<link | <link | ||||
rel="stylesheet" | rel="stylesheet" | ||||
type="text/css" | type="text/css" | ||||
href="compiled/${manifest['browser.css']}" | href="compiled/${manifest['browser.css']}" | ||||
/> | /> | ||||
`, | `, | ||||
olmFilename: manifest['olm.wasm'], | olmFilename: manifest['olm.wasm'], | ||||
commQueryExecutorFilename: webworkersManifest['comm_query_executor.wasm'], | commQueryExecutorFilename: webworkersManifest['comm_query_executor.wasm'], | ||||
opaqueURL: `compiled/${manifest['comm_opaque2_wasm_bg.wasm']}`, | |||||
backupClientFilename: webworkersManifest['backup-client-wasm_bg.wasm'], | backupClientFilename: webworkersManifest['backup-client-wasm_bg.wasm'], | ||||
webworkersOpaqueFilename: webworkersManifest['comm_opaque2_wasm_bg.wasm'], | webworkersOpaqueFilename: webworkersManifest['comm_opaque2_wasm_bg.wasm'], | ||||
}; | }; | ||||
return assetInfo; | return assetInfo; | ||||
} catch { | } catch { | ||||
throw new Error( | throw new Error( | ||||
'Could not load manifest.json for web build. ' + | 'Could not load manifest.json for web build. ' + | ||||
'Did you forget to run `yarn dev` in the web folder?', | 'Did you forget to run `yarn dev` in the web folder?', | ||||
Show All 35 Lines | async function websiteResponder(req: $Request, res: $Response): Promise<void> { | ||||
const loadingPromise = getWebpackCompiledRootComponentForSSR(); | const loadingPromise = getWebpackCompiledRootComponentForSSR(); | ||||
const assetInfoPromise = getAssetInfo(); | const assetInfoPromise = getAssetInfo(); | ||||
const { | const { | ||||
jsURL, | jsURL, | ||||
fontsURL, | fontsURL, | ||||
cssInclude, | cssInclude, | ||||
olmFilename, | olmFilename, | ||||
opaqueURL, | |||||
commQueryExecutorFilename, | commQueryExecutorFilename, | ||||
backupClientFilename, | backupClientFilename, | ||||
webworkersOpaqueFilename, | webworkersOpaqueFilename, | ||||
} = await assetInfoPromise; | } = await assetInfoPromise; | ||||
// prettier-ignore | // prettier-ignore | ||||
res.write(html` | res.write(html` | ||||
<!DOCTYPE html> | <!DOCTYPE html> | ||||
Show All 40 Lines | res.end(html` | ||||
</div> | </div> | ||||
<script> | <script> | ||||
var keyserverURL = "${keyserverURL}"; | var keyserverURL = "${keyserverURL}"; | ||||
var baseURL = "${baseURL}"; | var baseURL = "${baseURL}"; | ||||
var olmFilename = "${olmFilename}"; | var olmFilename = "${olmFilename}"; | ||||
var commQueryExecutorFilename = "${commQueryExecutorFilename}"; | var commQueryExecutorFilename = "${commQueryExecutorFilename}"; | ||||
var backupClientFilename = "${backupClientFilename}"; | var backupClientFilename = "${backupClientFilename}"; | ||||
var webworkersOpaqueFilename = "${webworkersOpaqueFilename}" | var webworkersOpaqueFilename = "${webworkersOpaqueFilename}" | ||||
var opaqueURL = "${opaqueURL}"; | |||||
</script> | </script> | ||||
<script src="${jsURL}"></script> | <script src="${jsURL}"></script> | ||||
</body> | </body> | ||||
</html> | </html> | ||||
`); | `); | ||||
} | } | ||||
const inviteSecretRegex = /^[a-z0-9]+$/i; | const inviteSecretRegex = /^[a-z0-9]+$/i; | ||||
▲ Show 20 Lines • Show All 205 Lines • Show Last 20 Lines |