@rockcarver/frodo-lib 2.0.0-1 → 2.0.0-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/cjs/api/ApiTypes.js.map +1 -1
  3. package/cjs/index.js +1 -105
  4. package/cjs/index.js.map +1 -1
  5. package/cjs/lib/FrodoLib.js +20 -20
  6. package/cjs/lib/FrodoLib.js.map +1 -1
  7. package/cjs/ops/AgentOps.js +8 -0
  8. package/cjs/ops/AgentOps.js.map +1 -1
  9. package/cjs/ops/AuthenticateOps.js +33 -6
  10. package/cjs/ops/AuthenticateOps.js.map +1 -1
  11. package/cjs/ops/CirclesOfTrustOps.js +36 -10
  12. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  13. package/cjs/ops/ConnectionProfileOps.js +13 -126
  14. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  15. package/cjs/ops/IdmOps.js.map +1 -1
  16. package/cjs/ops/JourneyOps.js.map +1 -1
  17. package/cjs/ops/OAuth2OidcOps.js +84 -0
  18. package/cjs/ops/OAuth2OidcOps.js.map +1 -0
  19. package/cjs/ops/ResourceTypeOps.js +65 -49
  20. package/cjs/ops/ResourceTypeOps.js.map +1 -1
  21. package/cjs/ops/ServiceOps.js +3 -0
  22. package/cjs/ops/ServiceOps.js.map +1 -1
  23. package/cjs/ops/ThemeOps.js +28 -14
  24. package/cjs/ops/ThemeOps.js.map +1 -1
  25. package/cjs/ops/cloud/LogOps.js +3 -13
  26. package/cjs/ops/cloud/LogOps.js.map +1 -1
  27. package/cjs/ops/utils/Console.js +7 -7
  28. package/cjs/ops/utils/Console.js.map +1 -1
  29. package/cjs/ops/utils/ExportImportUtils.js +109 -0
  30. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  31. package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
  32. package/cjs/ops/utils/Version.js +29 -6
  33. package/cjs/ops/utils/Version.js.map +1 -1
  34. package/cjs/ops/utils/Version.test.js.map +1 -1
  35. package/cjs/shared/State.js +0 -2
  36. package/cjs/shared/State.js.map +1 -1
  37. package/esm/index.mjs +1 -59
  38. package/esm/lib/FrodoLib.mjs +19 -18
  39. package/esm/ops/AgentOps.mjs +8 -0
  40. package/esm/ops/AuthenticateOps.mjs +24 -4
  41. package/esm/ops/CirclesOfTrustOps.mjs +18 -2
  42. package/esm/ops/ConnectionProfileOps.mjs +1 -105
  43. package/esm/ops/OAuth2OidcOps.mjs +40 -0
  44. package/esm/ops/ResourceTypeOps.mjs +14 -4
  45. package/esm/ops/ServiceOps.mjs +3 -0
  46. package/esm/ops/ThemeOps.mjs +7 -7
  47. package/esm/ops/cloud/LogOps.mjs +3 -13
  48. package/esm/ops/utils/Console.mjs +8 -8
  49. package/esm/ops/utils/ExportImportUtils.mjs +101 -0
  50. package/esm/ops/utils/ExportImportUtils.test.mjs +15 -2
  51. package/esm/ops/utils/Version.mjs +21 -4
  52. package/esm/ops/utils/Version.test.mjs +4 -1
  53. package/esm/shared/State.mjs +0 -2
  54. package/package.json +1 -1
  55. package/types/api/ApiTypes.d.ts +11 -11
  56. package/types/api/ApiTypes.d.ts.map +1 -1
  57. package/types/index.d.ts +1 -48
  58. package/types/index.d.ts.map +1 -1
  59. package/types/lib/FrodoLib.d.ts +13 -9
  60. package/types/lib/FrodoLib.d.ts.map +1 -1
  61. package/types/ops/AgentOps.d.ts +5 -0
  62. package/types/ops/AgentOps.d.ts.map +1 -1
  63. package/types/ops/AuthenticateOps.d.ts +11 -1
  64. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  65. package/types/ops/CirclesOfTrustOps.d.ts +16 -2
  66. package/types/ops/CirclesOfTrustOps.d.ts.map +1 -1
  67. package/types/ops/ConnectionProfileOps.d.ts +0 -19
  68. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  69. package/types/ops/IdmOps.d.ts +1 -1
  70. package/types/ops/IdmOps.d.ts.map +1 -1
  71. package/types/ops/JourneyOps.d.ts +2 -2
  72. package/types/ops/JourneyOps.d.ts.map +1 -1
  73. package/types/ops/OAuth2OidcOps.d.ts +11 -0
  74. package/types/ops/OAuth2OidcOps.d.ts.map +1 -0
  75. package/types/ops/ResourceTypeOps.d.ts +3 -3
  76. package/types/ops/ResourceTypeOps.d.ts.map +1 -1
  77. package/types/ops/ServiceOps.d.ts +1 -0
  78. package/types/ops/ServiceOps.d.ts.map +1 -1
  79. package/types/ops/ThemeOps.d.ts +14 -14
  80. package/types/ops/ThemeOps.d.ts.map +1 -1
  81. package/types/ops/cloud/LogOps.d.ts +1 -1
  82. package/types/ops/cloud/LogOps.d.ts.map +1 -1
  83. package/types/ops/utils/Console.d.ts.map +1 -1
  84. package/types/ops/utils/ExportImportUtils.d.ts +43 -0
  85. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  86. package/types/ops/utils/Version.d.ts +16 -2
  87. package/types/ops/utils/Version.d.ts.map +1 -1
  88. package/types/shared/State.d.ts.map +1 -1
@@ -6,12 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.addNewServiceAccount = addNewServiceAccount;
7
7
  exports.default = void 0;
8
8
  exports.deleteConnectionProfile = deleteConnectionProfile;
9
- exports.describeConnectionProfile = describeConnectionProfile;
10
9
  exports.getConnectionProfile = getConnectionProfile;
11
10
  exports.getConnectionProfileByHost = getConnectionProfileByHost;
12
11
  exports.getConnectionProfilesPath = getConnectionProfilesPath;
13
12
  exports.initConnectionProfiles = initConnectionProfiles;
14
- exports.listConnectionProfiles = listConnectionProfiles;
15
13
  exports.saveConnectionProfile = saveConnectionProfile;
16
14
  var _fs = _interopRequireDefault(require("fs"));
17
15
  var _os = _interopRequireDefault(require("os"));
@@ -185,45 +183,6 @@ function findConnectionProfiles(_ref2) {
185
183
  return profiles;
186
184
  }
187
185
 
188
- /**
189
- * List connection profiles
190
- * @param {boolean} long Long list format with details
191
- * @param {State} state library state
192
- */
193
- function listConnectionProfiles(_ref3) {
194
- var {
195
- long = false,
196
- state
197
- } = _ref3;
198
- var filename = getConnectionProfilesPath({
199
- state
200
- });
201
- try {
202
- var data = _fs.default.readFileSync(filename, 'utf8');
203
- var connectionsData = JSON.parse(data);
204
- if (Object.keys(connectionsData).length < 1) {
205
- (0, _Console.printMessage)("No connections defined yet in ".concat(filename), 'info');
206
- } else {
207
- if (long) {
208
- var table = (0, _Console.createTable)(['Host', 'Service Account', 'Username', 'Log API Key']);
209
- Object.keys(connectionsData).forEach(c => {
210
- table.push([c, connectionsData[c].svcacctName || connectionsData[c].svcacctId, connectionsData[c].username, connectionsData[c].logApiKey]);
211
- });
212
- (0, _Console.printMessage)(table.toString(), 'data');
213
- } else {
214
- Object.keys(connectionsData).forEach(c => {
215
- (0, _Console.printMessage)("".concat(c), 'data');
216
- });
217
- // getUniqueNames(5, Object.keys(connectionsData));
218
- }
219
-
220
- (0, _Console.printMessage)('Any unique substring of a saved host can be used as the value for host parameter in all commands', 'info');
221
- }
222
- } catch (e) {
223
- (0, _Console.printMessage)("No connections found in ".concat(filename, " (").concat(e.message, ")"), 'error');
224
- }
225
- }
226
-
227
186
  /**
228
187
  * Migrate from .frodorc to Connections.json
229
188
  */
@@ -261,10 +220,10 @@ function initConnectionProfiles(_x) {
261
220
  * @returns {Object} connection profile or null
262
221
  */
263
222
  function _initConnectionProfiles() {
264
- _initConnectionProfiles = _asyncToGenerator(function* (_ref4) {
223
+ _initConnectionProfiles = _asyncToGenerator(function* (_ref3) {
265
224
  var {
266
225
  state
267
- } = _ref4;
226
+ } = _ref3;
268
227
  var dataProtection = new _DataProtection.default(state.getMasterKeyPath());
269
228
  // create connections.json file if it doesn't exist
270
229
  var filename = getConnectionProfilesPath({
@@ -317,11 +276,11 @@ function getConnectionProfileByHost(_x2) {
317
276
  * @returns {Object} connection profile or null
318
277
  */
319
278
  function _getConnectionProfileByHost() {
320
- _getConnectionProfileByHost = _asyncToGenerator(function* (_ref5) {
279
+ _getConnectionProfileByHost = _asyncToGenerator(function* (_ref4) {
321
280
  var {
322
281
  host,
323
282
  state
324
- } = _ref5;
283
+ } = _ref4;
325
284
  try {
326
285
  var dataProtection = new _DataProtection.default(state.getMasterKeyPath());
327
286
  var filename = getConnectionProfilesPath({
@@ -372,10 +331,10 @@ function getConnectionProfile(_x3) {
372
331
  * @returns {Promise<boolean>} true if the operation succeeded, false otherwise
373
332
  */
374
333
  function _getConnectionProfile() {
375
- _getConnectionProfile = _asyncToGenerator(function* (_ref6) {
334
+ _getConnectionProfile = _asyncToGenerator(function* (_ref5) {
376
335
  var {
377
336
  state
378
- } = _ref6;
337
+ } = _ref5;
379
338
  return getConnectionProfileByHost({
380
339
  host: state.getHost(),
381
340
  state
@@ -391,11 +350,11 @@ function saveConnectionProfile(_x4) {
391
350
  * @param {String} host host tenant host url or unique substring
392
351
  */
393
352
  function _saveConnectionProfile() {
394
- _saveConnectionProfile = _asyncToGenerator(function* (_ref7) {
353
+ _saveConnectionProfile = _asyncToGenerator(function* (_ref6) {
395
354
  var {
396
355
  host,
397
356
  state
398
- } = _ref7;
357
+ } = _ref6;
399
358
  (0, _Console.debugMessage)("ConnectionProfileOps.saveConnectionProfile: start");
400
359
  var dataProtection = new _DataProtection.default(state.getMasterKeyPath());
401
360
  var filename = getConnectionProfilesPath({
@@ -502,11 +461,11 @@ function _saveConnectionProfile() {
502
461
  });
503
462
  return _saveConnectionProfile.apply(this, arguments);
504
463
  }
505
- function deleteConnectionProfile(_ref8) {
464
+ function deleteConnectionProfile(_ref7) {
506
465
  var {
507
466
  host,
508
467
  state
509
- } = _ref8;
468
+ } = _ref7;
510
469
  var filename = getConnectionProfilesPath({
511
470
  state
512
471
  });
@@ -543,90 +502,18 @@ function deleteConnectionProfile(_ref8) {
543
502
  });
544
503
  }
545
504
 
546
- /**
547
- * Describe connection profile
548
- * @param {string} host Host URL or unique substring
549
- * @param {boolean} showSecrets Whether secrets should be shown in clear text or not
550
- */
551
- function describeConnectionProfile(_x5) {
552
- return _describeConnectionProfile.apply(this, arguments);
553
- }
554
505
  /**
555
506
  * Create a new service account using auto-generated parameters
556
507
  * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object
557
508
  */
558
- function _describeConnectionProfile() {
559
- _describeConnectionProfile = _asyncToGenerator(function* (_ref9) {
560
- var {
561
- host,
562
- showSecrets,
563
- state
564
- } = _ref9;
565
- (0, _Console.debugMessage)("ConnectionProfileOps.describeConnectionProfile: start");
566
- var profile = yield getConnectionProfileByHost({
567
- host,
568
- state
569
- });
570
- if (profile) {
571
- (0, _Console.debugMessage)(profile);
572
- var present = '[present]';
573
- var jwk = profile.svcacctJwk;
574
- if (!showSecrets) {
575
- if (profile.password) profile.password = present;
576
- if (profile.logApiSecret) profile.logApiSecret = present;
577
- if (profile.svcacctJwk) profile['svcacctJwk'] = present;
578
- }
579
- if (!profile.username) {
580
- delete profile.username;
581
- delete profile.password;
582
- }
583
- if (!profile.logApiKey) {
584
- delete profile.logApiKey;
585
- delete profile.logApiSecret;
586
- }
587
- if (!profile.svcacctId) {
588
- delete profile.svcacctId;
589
- delete profile.svcacctJwk;
590
- delete profile.svcacctName;
591
- }
592
- if (showSecrets && jwk) {
593
- profile['svcacctJwk'] = 'see below';
594
- }
595
- if (!profile.authenticationService) {
596
- delete profile.authenticationService;
597
- }
598
- var keyMap = {
599
- tenant: 'Host',
600
- username: 'Username',
601
- password: 'Password',
602
- logApiKey: 'Log API Key',
603
- logApiSecret: 'Log API Secret',
604
- authenticationService: 'Authentication Service',
605
- authenticationHeaderOverrides: 'Authentication Header Overrides',
606
- svcacctName: 'Service Account Name',
607
- svcacctId: 'Service Account Id',
608
- svcacctJwk: 'Service Account JWK'
609
- };
610
- var table = (0, _Console.createObjectTable)(profile, keyMap);
611
- (0, _Console.printMessage)(table.toString(), 'data');
612
- if (showSecrets && jwk) {
613
- (0, _Console.printMessage)(jwk, 'data');
614
- }
615
- } else {
616
- (0, _Console.printMessage)("No connection profile ".concat(host, " found"));
617
- }
618
- (0, _Console.debugMessage)("ConnectionProfileOps.describeConnectionProfile: end");
619
- });
620
- return _describeConnectionProfile.apply(this, arguments);
621
- }
622
- function addNewServiceAccount(_x6) {
509
+ function addNewServiceAccount(_x5) {
623
510
  return _addNewServiceAccount.apply(this, arguments);
624
511
  }
625
512
  function _addNewServiceAccount() {
626
- _addNewServiceAccount = _asyncToGenerator(function* (_ref10) {
513
+ _addNewServiceAccount = _asyncToGenerator(function* (_ref8) {
627
514
  var {
628
515
  state
629
- } = _ref10;
516
+ } = _ref8;
630
517
  (0, _Console.debugMessage)("ConnectionProfileOps.addNewServiceAccount: start");
631
518
  var name = "Frodo-SA-".concat(new Date().getTime());
632
519
  (0, _Console.debugMessage)("ConnectionProfileOps.addNewServiceAccount: name=".concat(name, "..."));
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionProfileOps.js","names":["_fs","_interopRequireDefault","require","_os","_path","_DataProtection","_Console","_StaticStorage","_JoseOps","_ServiceAccountOps","_ExportImportUtils","_OpsUtils","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","err","ConnectionProfileOps","constructor","state","getConnectionProfilesPath","findConnectionProfiles","connectionProfiles","host","initConnectionProfiles","_this","getConnectionProfileByHost","_this2","getConnectionProfile","_this3","saveConnectionProfile","_this4","deleteConnectionProfile","addNewServiceAccount","_this5","exports","fileOptions","indentation","legacyProfileFilename","newProfileFilename","_ref","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","concat","os","homedir","_ref2","profiles","tenant","debugMessage","includes","foundProfile","listConnectionProfiles","_ref3","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","printMessage","table","createTable","c","svcacctName","svcacctId","username","logApiKey","toString","e","message","migrateFromLegacyProfile","legacyPath","newPath","existsSync","writeFileSync","stringify","copyFileSync","renameSync","_x","_initConnectionProfiles","_ref4","dataProtection","DataProtection","getMasterKeyPath","folderName","path","dirname","mkdirSync","recursive","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","_x2","_getConnectionProfileByHost","_ref5","p","password","decrypt","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctJwk","_x3","_getConnectionProfile","_ref6","getHost","_x4","_saveConnectionProfile","_ref7","profile","statSync","found","setHost","verboseMessage","isValidUrl","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","serviceAccountId","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","saveJsonToFile","includeMeta","_ref8","stat","code","describeConnectionProfile","_x5","_describeConnectionProfile","_ref9","showSecrets","present","jwk","keyMap","createObjectTable","_x6","_addNewServiceAccount","_ref10","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","accountStatus","scopes","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport DataProtection from './utils/DataProtection';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n printMessage,\n verboseMessage,\n} from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { IdObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\nimport State from '../shared/State';\n\nexport default class ConnectionProfileOps {\n state: State;\n constructor(state: State) {\n this.state = state;\n }\n\n /**\n * Get connection profiles file name\n * @returns {string} connection profiles file name\n */\n getConnectionProfilesPath(): string {\n return getConnectionProfilesPath({ state: this.state });\n }\n\n /**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\n findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n ): SecureConnectionProfileInterface[] {\n return findConnectionProfiles({ connectionProfiles, host });\n }\n\n /**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\n async initConnectionProfiles() {\n initConnectionProfiles({ state: this.state });\n }\n\n /**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\n async getConnectionProfileByHost(\n host: string\n ): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host, state: this.state });\n }\n\n /**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\n async getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfile({ state: this.state });\n }\n\n /**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\n async saveConnectionProfile(host: string): Promise<boolean> {\n return saveConnectionProfile({ host, state: this.state });\n }\n\n /**\n * Delete connection profile\n * @param {string} host host tenant host url or unique substring\n */\n deleteConnectionProfile(host: string): void {\n deleteConnectionProfile({ host, state: this.state });\n }\n\n /**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n async addNewServiceAccount(): Promise<IdObjectSkeletonInterface> {\n return addNewServiceAccount({ state: this.state });\n }\n}\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @param {State} state library state\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath({ state }: { state: State }): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @param {State} state library state\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles({\n connectionProfiles,\n host,\n}: {\n connectionProfiles: ConnectionsFileInterface;\n host: string;\n}): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`\n );\n if (tenant.includes(host)) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`\n );\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n * @param {State} state library state\n */\nexport function listConnectionProfiles({\n long = false,\n state,\n}: {\n long?: boolean;\n state: State;\n}) {\n const filename = getConnectionProfilesPath({ state });\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n * @param {State} state library state\n */\nexport async function initConnectionProfiles({ state }: { state: State }) {\n const dataProtection = new DataProtection(state.getMasterKeyPath());\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath({ state });\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await dataProtection.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret =\n await dataProtection.encrypt(connectionsData[conn]['logApiSecret']);\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await dataProtection.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @param {State} state library state\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<ConnectionProfileInterface> {\n try {\n const dataProtection = new DataProtection(state.getMasterKeyPath());\n const filename = getConnectionProfilesPath({ state });\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n });\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await dataProtection.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await dataProtection.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await dataProtection.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile({\n state,\n}: {\n state: State;\n}): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host: state.getHost(), state });\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<boolean> {\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: start`);\n const dataProtection = new DataProtection(state.getMasterKeyPath());\n const filename = getConnectionProfilesPath({ state });\n debugMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles({\n connectionProfiles: profiles,\n host,\n });\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n debugMessage(profile);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [false]`);\n return false;\n }\n }\n } catch (error) {\n debugMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await dataProtection.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await dataProtection.encrypt(\n state.getLogApiSecret()\n );\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n profile.svcacctName = (\n await getServiceAccount({\n serviceAccountId: state.getServiceAccountId(),\n state,\n })\n ).name;\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await dataProtection.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (\n await getServiceAccount({ serviceAccountId: profile.svcacctId, state })\n ).name;\n debugMessage(\n `ConnectionProfileOps.saveConnectionProfile: added missing service account name`\n );\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile({\n data: orderedProfiles,\n filename,\n includeMeta: false,\n state,\n });\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [true]`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}) {\n const filename = getConnectionProfilesPath({ state });\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n });\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile({\n host,\n showSecrets,\n state,\n}: {\n host: string;\n showSecrets: boolean;\n state: State;\n}) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost({ host, state });\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount({\n state,\n}: {\n state: State;\n}): Promise<IdObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount({\n name,\n description,\n accountStatus: 'Active',\n scopes: scope,\n jwks,\n state,\n });\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionProfileOps.js","names":["_fs","_interopRequireDefault","require","_os","_path","_DataProtection","_Console","_StaticStorage","_JoseOps","_ServiceAccountOps","_ExportImportUtils","_OpsUtils","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","err","ConnectionProfileOps","constructor","state","getConnectionProfilesPath","findConnectionProfiles","connectionProfiles","host","initConnectionProfiles","_this","getConnectionProfileByHost","_this2","getConnectionProfile","_this3","saveConnectionProfile","_this4","deleteConnectionProfile","addNewServiceAccount","_this5","exports","fileOptions","indentation","legacyProfileFilename","newProfileFilename","_ref","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","concat","os","homedir","_ref2","profiles","tenant","debugMessage","includes","foundProfile","migrateFromLegacyProfile","legacyPath","newPath","fs","existsSync","writeFileSync","JSON","stringify","copyFileSync","renameSync","_x","_initConnectionProfiles","_ref3","dataProtection","DataProtection","getMasterKeyPath","filename","folderName","path","dirname","mkdirSync","recursive","data","readFileSync","connectionsData","parse","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","_x2","_getConnectionProfileByHost","_ref4","printMessage","p","username","password","decrypt","logApiKey","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctName","svcacctId","svcacctJwk","e","_x3","_getConnectionProfile","_ref5","getHost","_x4","_saveConnectionProfile","_ref6","profile","statSync","found","setHost","verboseMessage","isValidUrl","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","serviceAccountId","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","saveJsonToFile","includeMeta","_ref7","stat","code","_x5","_addNewServiceAccount","_ref8","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","accountStatus","scopes","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport DataProtection from './utils/DataProtection';\nimport { debugMessage, printMessage, verboseMessage } from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { IdObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\nimport State from '../shared/State';\n\nexport default class ConnectionProfileOps {\n state: State;\n constructor(state: State) {\n this.state = state;\n }\n\n /**\n * Get connection profiles file name\n * @returns {string} connection profiles file name\n */\n getConnectionProfilesPath(): string {\n return getConnectionProfilesPath({ state: this.state });\n }\n\n /**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\n findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n ): SecureConnectionProfileInterface[] {\n return findConnectionProfiles({ connectionProfiles, host });\n }\n\n /**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\n async initConnectionProfiles() {\n initConnectionProfiles({ state: this.state });\n }\n\n /**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\n async getConnectionProfileByHost(\n host: string\n ): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host, state: this.state });\n }\n\n /**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\n async getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfile({ state: this.state });\n }\n\n /**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\n async saveConnectionProfile(host: string): Promise<boolean> {\n return saveConnectionProfile({ host, state: this.state });\n }\n\n /**\n * Delete connection profile\n * @param {string} host host tenant host url or unique substring\n */\n deleteConnectionProfile(host: string): void {\n deleteConnectionProfile({ host, state: this.state });\n }\n\n /**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n async addNewServiceAccount(): Promise<IdObjectSkeletonInterface> {\n return addNewServiceAccount({ state: this.state });\n }\n}\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @param {State} state library state\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath({ state }: { state: State }): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @param {State} state library state\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles({\n connectionProfiles,\n host,\n}: {\n connectionProfiles: ConnectionsFileInterface;\n host: string;\n}): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`\n );\n if (tenant.includes(host)) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`\n );\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n * @param {State} state library state\n */\nexport async function initConnectionProfiles({ state }: { state: State }) {\n const dataProtection = new DataProtection(state.getMasterKeyPath());\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath({ state });\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await dataProtection.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret =\n await dataProtection.encrypt(connectionsData[conn]['logApiSecret']);\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await dataProtection.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @param {State} state library state\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<ConnectionProfileInterface> {\n try {\n const dataProtection = new DataProtection(state.getMasterKeyPath());\n const filename = getConnectionProfilesPath({ state });\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n });\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await dataProtection.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await dataProtection.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await dataProtection.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile({\n state,\n}: {\n state: State;\n}): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host: state.getHost(), state });\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<boolean> {\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: start`);\n const dataProtection = new DataProtection(state.getMasterKeyPath());\n const filename = getConnectionProfilesPath({ state });\n debugMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles({\n connectionProfiles: profiles,\n host,\n });\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n debugMessage(profile);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [false]`);\n return false;\n }\n }\n } catch (error) {\n debugMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await dataProtection.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await dataProtection.encrypt(\n state.getLogApiSecret()\n );\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n profile.svcacctName = (\n await getServiceAccount({\n serviceAccountId: state.getServiceAccountId(),\n state,\n })\n ).name;\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await dataProtection.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (\n await getServiceAccount({ serviceAccountId: profile.svcacctId, state })\n ).name;\n debugMessage(\n `ConnectionProfileOps.saveConnectionProfile: added missing service account name`\n );\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile({\n data: orderedProfiles,\n filename,\n includeMeta: false,\n state,\n });\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [true]`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}) {\n const filename = getConnectionProfilesPath({ state });\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n });\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount({\n state,\n}: {\n state: State;\n}): Promise<IdObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount({\n name,\n description,\n accountStatus: 'Active',\n scopes: scope,\n jwks,\n state,\n });\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IdmOps.js","names":["_IdmConfigApi","require","_IdmSystemApi","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","IdmOps","constructor","state","getAllConfigEntities","getConfigEntitiesByType","type","getConfigEntity","entityId","putConfigEntity","entityData","queryAllManagedObjectsByType","fields","pageCookie","testConnectorServers","_this","exports","default","_x","_testConnectorServers2","_ref","response","_testConnectorServers","openicf"],"sources":["ops/IdmOps.ts"],"sourcesContent":["import {\n IdObjectSkeletonInterface,\n NoIdObjectSkeletonInterface,\n PagedResult,\n} from '../api/ApiTypes';\nimport {\n getAllConfigEntities,\n getConfigEntity,\n putConfigEntity,\n getConfigEntitiesByType,\n queryAllManagedObjectsByType,\n} from '../api/IdmConfigApi';\nimport {\n testConnectorServers as _testConnectorServers,\n ConnectorServerStatusInterface,\n} from '../api/IdmSystemApi';\nimport State from '../shared/State';\n\nexport default class IdmOps {\n state: State;\n constructor(state: State) {\n this.state = state;\n }\n\n getAllConfigEntities() {\n return getAllConfigEntities({ state: this.state });\n }\n\n getConfigEntitiesByType(type: string) {\n return getConfigEntitiesByType({ type, state: this.state });\n }\n\n getConfigEntity(entityId: string) {\n return getConfigEntity({ entityId, state: this.state });\n }\n\n putConfigEntity(entityId: string, entityData: NoIdObjectSkeletonInterface) {\n return putConfigEntity({ entityId, entityData, state: this.state });\n }\n\n /**\n * Query managed objects\n * @param {string} type managed object type\n * @param {string[]} fields fields to retrieve\n * @param {string} pageCookie paged results cookie\n * @returns {Promise<PagedResult<IdObjectSkeletonInterface>>} a promise that resolves to managed objects of the desired type\n */\n queryAllManagedObjectsByType(\n type: string,\n fields: string[],\n pageCookie: string\n ): Promise<PagedResult<IdObjectSkeletonInterface>> {\n return queryAllManagedObjectsByType({\n type,\n fields,\n pageCookie,\n state: this.state,\n });\n }\n\n /**\n * Test connector servers\n * @returns {Promise<ConnectorServerStatusInterface[]>} a promise that resolves to an array of ConnectorServerStatusInterface objects\n */\n async testConnectorServers(): Promise<ConnectorServerStatusInterface[]> {\n return testConnectorServers({ state: this.state });\n }\n}\n\nexport {\n getAllConfigEntities,\n getConfigEntitiesByType,\n getConfigEntity,\n putConfigEntity,\n queryAllManagedObjectsByType,\n};\n\n/**\n * Test connector servers\n * @returns {Promise<ConnectorServerStatusInterface[]>} a promise that resolves to an array of ConnectorServerStatusInterface objects\n */\nexport async function testConnectorServers({\n state,\n}: {\n state: State;\n}): Promise<ConnectorServerStatusInterface[]> {\n const response = await _testConnectorServers({ state });\n return response.openicf;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AAOA,IAAAC,aAAA,GAAAD,OAAA;AAG6B,SAAAE,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA;AAGd,MAAMC,MAAM,CAAC;EAE1BC,WAAWA,CAACC,KAAY,EAAE;IACxB,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,OAAO,IAAAA,kCAAoB,EAAC;MAAED,KAAK,EAAE,IAAI,CAACA;IAAM,CAAC,CAAC;EACpD;EAEAE,uBAAuBA,CAACC,IAAY,EAAE;IACpC,OAAO,IAAAD,qCAAuB,EAAC;MAAEC,IAAI;MAAEH,KAAK,EAAE,IAAI,CAACA;IAAM,CAAC,CAAC;EAC7D;EAEAI,eAAeA,CAACC,QAAgB,EAAE;IAChC,OAAO,IAAAD,6BAAe,EAAC;MAAEC,QAAQ;MAAEL,KAAK,EAAE,IAAI,CAACA;IAAM,CAAC,CAAC;EACzD;EAEAM,eAAeA,CAACD,QAAgB,EAAEE,UAAuC,EAAE;IACzE,OAAO,IAAAD,6BAAe,EAAC;MAAED,QAAQ;MAAEE,UAAU;MAAEP,KAAK,EAAE,IAAI,CAACA;IAAM,CAAC,CAAC;EACrE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEQ,4BAA4BA,CAC1BL,IAAY,EACZM,MAAgB,EAChBC,UAAkB,EAC+B;IACjD,OAAO,IAAAF,0CAA4B,EAAC;MAClCL,IAAI;MACJM,MAAM;MACNC,UAAU;MACVV,KAAK,EAAE,IAAI,CAACA;IACd,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACQW,oBAAoBA,CAAA,EAA8C;IAAA,IAAAC,KAAA;IAAA,OAAAtB,iBAAA;MACtE,OAAOqB,oBAAoB,CAAC;QAAEX,KAAK,EAAEY,KAAI,CAACZ;MAAM,CAAC,CAAC;IAAC;EACrD;AACF;AAACa,OAAA,CAAAC,OAAA,GAAAhB,MAAA;AAUD;AACA;AACA;AACA;AAHA,SAIsBa,oBAAoBA,CAAAI,EAAA;EAAA,OAAAC,sBAAA,CAAArB,KAAA,OAAAD,SAAA;AAAA;AAAA,SAAAsB,uBAAA;EAAAA,sBAAA,GAAA1B,iBAAA,CAAnC,WAAA2B,IAAA,EAIuC;IAAA,IAJH;MACzCjB;IAGF,CAAC,GAAAiB,IAAA;IACC,IAAMC,QAAQ,SAAS,IAAAC,kCAAqB,EAAC;MAAEnB;IAAM,CAAC,CAAC;IACvD,OAAOkB,QAAQ,CAACE,OAAO;EACzB,CAAC;EAAA,OAAAJ,sBAAA,CAAArB,KAAA,OAAAD,SAAA;AAAA"}
1
+ {"version":3,"file":"IdmOps.js","names":["_IdmConfigApi","require","_IdmSystemApi","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","IdmOps","constructor","state","getAllConfigEntities","getConfigEntitiesByType","type","getConfigEntity","entityId","putConfigEntity","entityData","queryAllManagedObjectsByType","fields","pageCookie","testConnectorServers","_this","exports","default","_x","_testConnectorServers2","_ref","response","_testConnectorServers","openicf"],"sources":["ops/IdmOps.ts"],"sourcesContent":["import {\n IdObjectSkeletonInterface,\n NoIdObjectSkeletonInterface,\n PagedResult,\n} from '../api/ApiTypes';\nimport {\n getAllConfigEntities,\n getConfigEntity,\n putConfigEntity,\n getConfigEntitiesByType,\n queryAllManagedObjectsByType,\n} from '../api/IdmConfigApi';\nimport {\n testConnectorServers as _testConnectorServers,\n ConnectorServerStatusInterface,\n} from '../api/IdmSystemApi';\nimport State from '../shared/State';\n\nexport default class IdmOps {\n state: State;\n constructor(state: State) {\n this.state = state;\n }\n\n getAllConfigEntities() {\n return getAllConfigEntities({ state: this.state });\n }\n\n getConfigEntitiesByType(type: string) {\n return getConfigEntitiesByType({ type, state: this.state });\n }\n\n getConfigEntity(entityId: string) {\n return getConfigEntity({ entityId, state: this.state });\n }\n\n putConfigEntity(\n entityId: string,\n entityData: NoIdObjectSkeletonInterface | string\n ) {\n return putConfigEntity({ entityId, entityData, state: this.state });\n }\n\n /**\n * Query managed objects\n * @param {string} type managed object type\n * @param {string[]} fields fields to retrieve\n * @param {string} pageCookie paged results cookie\n * @returns {Promise<PagedResult<IdObjectSkeletonInterface>>} a promise that resolves to managed objects of the desired type\n */\n queryAllManagedObjectsByType(\n type: string,\n fields: string[],\n pageCookie: string\n ): Promise<PagedResult<IdObjectSkeletonInterface>> {\n return queryAllManagedObjectsByType({\n type,\n fields,\n pageCookie,\n state: this.state,\n });\n }\n\n /**\n * Test connector servers\n * @returns {Promise<ConnectorServerStatusInterface[]>} a promise that resolves to an array of ConnectorServerStatusInterface objects\n */\n async testConnectorServers(): Promise<ConnectorServerStatusInterface[]> {\n return testConnectorServers({ state: this.state });\n }\n}\n\nexport {\n getAllConfigEntities,\n getConfigEntitiesByType,\n getConfigEntity,\n putConfigEntity,\n queryAllManagedObjectsByType,\n};\n\n/**\n * Test connector servers\n * @returns {Promise<ConnectorServerStatusInterface[]>} a promise that resolves to an array of ConnectorServerStatusInterface objects\n */\nexport async function testConnectorServers({\n state,\n}: {\n state: State;\n}): Promise<ConnectorServerStatusInterface[]> {\n const response = await _testConnectorServers({ state });\n return response.openicf;\n}\n"],"mappings":"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"}