diff --git a/scripts/set-admin-data.js b/scripts/set-admin-data.js new file mode 100644 index 000000000..60252873c --- /dev/null +++ b/scripts/set-admin-data.js @@ -0,0 +1,84 @@ +/* eslint-disable flowtype/require-valid-file-annotation */ + +const fs = require('fs'); +const readline = require('readline'); + +// Create an interface for reading input +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const data = {}; + +rl.question('username: ', value1 => { + data.username = value1; + + rl.question('password: ', value2 => { + data.password = value2; + + rl.question('user id: ', value3 => { + data.id = value3; + + writeFiles(data); + + // Close the readline interface + rl.close(); + }); + }); +}); + +function writeFiles(credentials) { + try { + const userCredentials = { + username: credentials.username, + password: credentials.password, + usingIdentityCredentials: true, + }; + const userCredentialsJSON = JSON.stringify(userCredentials, null, 2); + const keyserverSecrets = 'keyserver/secrets'; + if (!fs.existsSync(keyserverSecrets)) { + fs.mkdirSync(keyserverSecrets); + } + fs.writeFileSync( + 'keyserver/secrets/user_credentials.json', + userCredentialsJSON, + ); + + // Create configs containing authoritative keyservers data. + // Because we have different mechanisms for fetching configs, + // we need this config in two places + + const authoritativeKeyserver = { + authoritativeKeyserverID: credentials.id, + }; + const authoritativeKeyserverJSON = JSON.stringify( + authoritativeKeyserver, + null, + 2, + ); + const nativeFacts = 'native/facts'; + if (!fs.existsSync(nativeFacts)) { + fs.mkdirSync(nativeFacts); + } + fs.writeFileSync( + 'native/facts/authoritative_keyserver.json', + authoritativeKeyserverJSON, + ); + + const keyserverFacts = 'keyserver/facts'; + if (!fs.existsSync(keyserverFacts)) { + fs.mkdirSync(keyserverFacts); + } + fs.writeFileSync( + 'keyserver/facts/authoritative_keyserver.json', + authoritativeKeyserverJSON, + ); + } catch (e) { + console.error( + 'Failure creating configuration files: ' + + 'admin data could not be correctly written', + ); + throw e; + } +}