diff --git a/server/src/scripts/generate-olm-config.js b/server/src/scripts/generate-olm-config.js new file mode 100644 --- /dev/null +++ b/server/src/scripts/generate-olm-config.js @@ -0,0 +1,37 @@ +// @flow + +import olm from '@matrix-org/olm'; +import fs from 'fs'; +import path from 'path'; +import uuid from 'uuid'; + +import { main } from './utils'; + +const olmConfigRelativePath = './secrets/olm_config.json'; + +async function generateOlmConfig() { + await olm.init(); + const account = new olm.Account(); + account.create(); + const picklingKey = uuid.v4(); + const pickledAccount = account.pickle(picklingKey); + + const olmConfig = { + picklingKey: picklingKey, + pickledAccount: pickledAccount, + }; + const scriptWorkingDirectory = path.resolve(); + + if (!scriptWorkingDirectory.endsWith('comm/server')) { + throw new Error('Script must be run in server directory in comm project.'); + } + + const olmConfigFilePath = path.join( + scriptWorkingDirectory, + olmConfigRelativePath, + ); + + fs.writeFileSync(olmConfigFilePath, JSON.stringify(olmConfig)); +} + +main([generateOlmConfig]);