@rockcarver/frodo-cli 0.19.5-2 → 0.20.1-0

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,117 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.20.1-0] - 2023-01-15
11
+
12
+ ### Fixed
13
+
14
+ - \#176: frodo logs fetch end timestamp ignored
15
+
16
+ ## [0.20.0] - 2023-01-13
17
+
18
+ ### Added
19
+
20
+ - Full support for Identity Cloud Service Accounts across all commands. Three options to leverage service accounts:
21
+
22
+ 1. Connection profiles for daily CLI usage:
23
+
24
+ For daily admin and development tasks, using the new `frodo conn save` command (see details under next bullet) is the easiest way to get going with service accounts. To migrate an existing connection profile to service accounts and automatically create a service account for your tenant admin, simply issue the following command:
25
+
26
+ % frodo conn save service-accounts
27
+ Connected to https://openam-service-accounts.forgeblocks.com/am [alpha] as user volker.scheuber@forgerock.com
28
+ Created and added service account Frodo-SA-1673586189578 with id 99c04bba-7213-463b-9a27-ceafa8a95734 to profile.
29
+ Saved connection profile https://openam-service-accounts.forgeblocks.com/am
30
+ %
31
+
32
+ Then validate your connection profile is using the new service account:
33
+
34
+ % frodo info service-accounts
35
+ Connected to https://openam-service-accounts.forgeblocks.com/am [alpha] as service account Frodo-SA-1673586189578 [99c04bba-7213-463b-9a27-ceafa8a95734]
36
+
37
+ Host URL │https://openam-service-accounts.forgeblocks.com/am
38
+ AM Version │7.3.0-2022-10-SNAPSHOT Build 9a1793c301ef579705e59b66ce57587f553e915f (2022-December-13 10:05)
39
+ Subject (Type) │Frodo-SA-1673586189578 [99c04bba-7213-463b-9a27-ceafa8a95734] (Service Account)
40
+ Deployment Type│cloud
41
+ Cookie Name │e8b2bd07d5440d3
42
+ Immutable │false
43
+ Locked │false
44
+ Region │us-west1
45
+ Tier │other
46
+
47
+ Bearer token:
48
+ eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..JD1iu64iGZZoGNwEr-iF2w.af-0-UDDOdusAETjw9YE3YnjOPr6TrdQrBLcl1lxf5RpNThfRhD08xvu1WtJbUZgvjbWdajECEFJfnEinnrUdpe9l0tHU6gAxDrRmu9hAjt0AB3PFSk9BE5SlwvaGoW5vrF4oH0IYtuv4899hFF8KGNYUtou143xmSrsLH37862YiAeiRKtjaQsVUrdbDPAFnKgGRxJIiXp-UE0ZCQQGSqm-Gj0AqVvo-Piib9THrEbbJCzdc00RPaCU2Ra1DH9PDid7ix-zfuind5IgEXxA8XwBM7kSEkiDLUWZ8EaFhn6YXwIHjXetacgYvvDaUav2Fq5baIitnG_LIrCm32XzcDkVnph4mVklBwfbQbWE6BGXEVLK-QLdDupaQw-bic-yVs2d7PBk2y70gbChHCQOm6-MepkYznP4wKoRR1gkqCdl51QIp-tsFB5K2plrKXiwsfHlHKfFKmsbdQUmH7xJFZQRhAtR_pKm-vHPOrPfBh0VbAdLRSkSeOZUABFH56X3gwXIpG_zuH42bQQkM9AlkB-lZrLf4jN0zFq-2ZN-zDgRR9h6qiiD3p9BDmFfaorUDTfFSrfaKas7OIp5ooW8Kqpv28RRtRtvfex0vT_kRbWl5R08MPWZDKZbx4IMyuun-2pYJ-F2-dvfA4A-jRvWIvC6jTUTu-RZZ0Yw1F2lgwFOVbmpMmG2uGHp5GceWePsZ34FVtJuaTd5D-uq_FoAb3HQ7FGEgUMJN_q82hCCX3URv_ocbFMjYwctdUqV_Ed-__A_9lbHHr8D2Uw_Qo0mwku7qwNBTS0-OcrwDvBOJohzRbpbfim-Sq2UzV9SBzzXNK7sMft1pNfu2-saOwPfy6SE0u42-HDqxE9t4MkklSroPY0oDUxO58ET8LXnewGhC9Tt0XTk6WA2rNLcNirhFqdmtKgfrSMQ_t22_DQEDwXpXqtHGmDoltJe7x_6Ofh0W5l7_A71MoHeFpVa_AHpHybnaF4fvUbD284wOV8i22SqrUKuHoJ3o6_g5JlhvMCvb4OZQ-ltxSf98aPsB9nCSthYg5-GkiR_r5mK1w9gZkBTXfYs0qC8-zYEQb4WNiI9.2JGMj9iW6YD-RE_dGkL7_w
49
+ %
50
+
51
+ Once you have verified that your service account works, go ahead and enable MFA for your tenant admin account!
52
+
53
+ 2. CLI parameters:
54
+
55
+ All commands support the following new options to use service accounts:
56
+
57
+ - `--sa-id <uuid>` Service account's uuid. If specified, must also include `--sa-jwk-file`.
58
+ - `--sa-jwk-file <file>` File containing the service account's java web key (jwk). Jwk must contain private key! If specified, must also include `--sa-id`.
59
+
60
+ This is a great way to leverage the nice UI to create and manage service accounts and then use one of the accounts with Frodo.
61
+
62
+ 3. Environment variables for CI/CD
63
+
64
+ For CI/CD pipelines, environment variables are preferable over command line parameters, because they are not visible in system logs:
65
+
66
+ - `FRODO_SA_ID`: Service account's uuid. If set, must also set `FRODO_SA_JWK`.
67
+ - `FRODO_SA_JWK`: Service account's java web key (jwk) as single-line string. Jwk must contain private key! If set, must also set `FRODO_SA_ID`.
68
+
69
+ - \#143: Support Identity Cloud Service Accounts in `frodo conn save|add` command
70
+
71
+ 1. The `frodo conn add` command is renamed to `frodo conn save` and `add` is added as an alias for backwards compatibility.
72
+ 2. The `frodo conn save` command supports the following new options to manage service accounts:
73
+ 1. `--sa-id <uuid>` Service account's uuid. If specified, must also include `--sa-jwk-file`. Ignored with `--no-sa`.
74
+ 2. `--sa-jwk-file <file>` File containing the service account's java web key (jwk). Jwk must contain private key! If specified, must also include `--sa-id`. Ignored with `--no-sa`.
75
+ 3. `--no-sa` Do not add service account.
76
+ 3. The existing `--no-validate` option also applies to service account operations, allowing to add service account configuration to a connection profile without validating it, typical use case is an offline situation.
77
+ 4. The `frodo conn save` command automatically creates a new service account and adds it to an existing ID Cloud profile without service account or to a new ID Cloud profile. It does not do that if the `--no-sa` option is supplied.
78
+ 1. If `--sa-id` and `--sa-jwk-file` are supplied, `frodo conn save` adds the existing service account specified by those two parameters to the profile instead of creating a new service account.
79
+ 2. The `frodo conn save` command checks if the ID Cloud tenant supports service accounts before performing any service account operations.
80
+ 5. The `frodo conn save` command validates service account configuration unless the `--no-validate` options is supplied.
81
+
82
+ - Add support for additional environment variables:
83
+
84
+ - `FRODO_SA_ID`: Service account's uuid. If set, must also set `FRODO_SA_JWK`.
85
+ - `FRODO_SA_JWK`: Service account's java web key (jwk) as single-line string. Jwk must contain private key! If set, must also set `FRODO_SA_ID`.
86
+ - `FRODO_AUTHENTICATION_SERVICE=journey`: Specify a login journey for frodo to use.
87
+ - `FRODO_MOCK=1`: Enable mocking. If enabled, frodo-lib replays recorded API responses instead of connecting to a platform instance.
88
+ - `FRODO_POLLY_LOG_LEVEL=info`: Frodo mock engine log level (`trace`, `debug`, `info`, `warn`, `error`, `silent`). This is helpful for troubleshooting the mock capability, only.
89
+
90
+ Environment variables added in 0.19.0:
91
+
92
+ - `FRODO_HOST`
93
+ - `FRODO_REALM`
94
+ - `FRODO_USERNAME`
95
+ - `FRODO_PASSWORD`
96
+ - `FRODO_SA_ID`
97
+ - `FRODO_SA_JWK`
98
+ - `FRODO_LOG_KEY`
99
+ - `FRODO_LOG_SECRET`
100
+ - `FRODO_DEBUG`
101
+
102
+ - Enhanced the `frodo info` command to give more details for Identity Cloud tenants.
103
+
104
+ - Warn if IDM connector servers are offline
105
+
106
+ - Add mock mode for library to allow unit testing of clients using the library, like frodo-cli. This initial release contains minimal mock data. Enable mock mode using `FRODO_MOCK=1`.
107
+
108
+ - Updated list of contributors in package.json
109
+
110
+ - Add linux arm64 binary builds
111
+
112
+ ### Changed
113
+
114
+ - Updated to frodo-lib 0.18.0
115
+ - More automated testing
116
+
117
+ ### Fixed
118
+
119
+ - \#161: Frodo now properly adds connection profiles with log credentials
120
+
10
121
  ## [0.19.5-2] - 2023-01-13
11
122
 
12
123
  ## [0.19.5-1] - 2023-01-12
@@ -59,37 +170,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
59
170
  2. The `frodo conn save` command checks if the ID Cloud tenant supports service accounts before performing any service account operations.
60
171
  5. The `frodo conn save` command validates service account configuration unless the `--no-validate` options is supplied.
61
172
  - \#101: Added new `frodo service` set of commands to manage AM realm services (`baseurl`, `DataStoreService`, `oauth-oidc`, `policyconfiguration`, `selfServiceTrees`, `SocialIdentityProviders`, `validation`, etc.) and global services (e.g. `CorsService`, `dashboard`, etc.).
62
- frodo service
63
- delete Delete AM services.
64
- export Export AM services.
65
- import Import AM services.
66
- list List AM services.
173
+ frodo service
174
+ delete Delete AM services.
175
+ export Export AM services.
176
+ import Import AM services.
177
+ list List AM services.
67
178
  - Added new `frodo idm import` command.
68
179
  - \#98: Add support for Agents / Gateways
69
- frodo agent Manage agents.
70
- delete Delete agents of any type.
71
- describe Describe agents of any type.
72
- export Export agents of any type.
73
- import Import agents of any type.
74
- list List agents of any type.
75
- gateway Manage gateway agents.
76
- delete Delete gateway agents.
77
- describe Describe gateway agents.
78
- export Export gateway agents.
79
- import Import gateway agents.
80
- list List gateway agents.
81
- java Manage java agents.
82
- delete Delete java agents.
83
- describe Describe java agents.
84
- export Export java agents.
85
- import Import java agents.
86
- list List java agents.
87
- web Manage web agents.
88
- delete Delete web agents.
89
- describe Describe web agents.
90
- export Export web agents.
91
- import Import web agents.
92
- list List web agents.
180
+ frodo agent Manage agents.
181
+ delete Delete agents of any type.
182
+ describe Describe agents of any type.
183
+ export Export agents of any type.
184
+ import Import agents of any type.
185
+ list List agents of any type.
186
+ gateway Manage gateway agents.
187
+ delete Delete gateway agents.
188
+ describe Describe gateway agents.
189
+ export Export gateway agents.
190
+ import Import gateway agents.
191
+ list List gateway agents.
192
+ java Manage java agents.
193
+ delete Delete java agents.
194
+ describe Describe java agents.
195
+ export Export java agents.
196
+ import Import java agents.
197
+ list List java agents.
198
+ web Manage web agents.
199
+ delete Delete web agents.
200
+ describe Describe web agents.
201
+ export Export web agents.
202
+ import Import web agents.
203
+ list List web agents.
93
204
  - Added `--raw` option to `frodo saml import` and `frodo saml export` commands. The new option uses the classic (pre 7.0.0) SAML REST APIs. This allows Frodo to export and import SAML entity providers from pre 7 platform instances.
94
205
  - New default options `--verbose`, `--debug`, and `--curlirize` for all commands
95
206
 
@@ -188,7 +299,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
188
299
 
189
300
  ### Fixed
190
301
 
191
- - \#88: `frodo idm export` now properly regognizes `-N`/`--name` option
302
+ - \#88: `frodo idm export` now properly regognizes `-N`/`--name` option
192
303
 
193
304
  ## [0.16.2-1] - 2022-10-11
194
305
 
@@ -327,9 +438,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
327
438
 
328
439
  - Frodo now allows two new parameters when adding a connection profile:
329
440
 
330
- \--authentication-service [service] Name of the authentication service/tree to use.
441
+ \--authentication-service [service] Name of the authentication service/tree to use.
331
442
 
332
- \--authentication-header-overrides [headers] Map of headers: {"host":"am.example.com:8081"}.
443
+ \--authentication-header-overrides [headers] Map of headers: {"host":"am.example.com:8081"}.
333
444
 
334
445
  These parameters are currently only supported in the `frodo conn add` command and the configuration elements will be automatically applied to commands issued using that connection profile.
335
446
 
@@ -339,13 +450,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
339
450
  Saving creds in /Users/vscheuber/.frodo/.frodorc...
340
451
  Updating connection profile https://platform.example.com:9443/am
341
452
  Advanced setting: Authentication Service: ldapService
342
- Advanced setting: Authentication Header Overrides:
453
+ Advanced setting: Authentication Header Overrides:
343
454
  { host: 'am.example.com:8081' }
344
455
  %
345
456
 
346
457
  After the connection profile is created with the additional parameters, the environment can be accessed as usual. In this case it requires the `-k` parameter for every command, as the environment uses a self-signed certificate.
347
458
 
348
- % frodo journey list platform alpha -k
459
+ % frodo journey list platform alpha -k
349
460
  ForgeOps deployment detected.
350
461
  Connected to ForgeRock Access Management 7.2.0 Build 64ef7ebc01ed3df1a1264d7b0400351bc101361f (2022-June-27 08:15)
351
462
  Listing journeys in realm "alpha"...
@@ -622,9 +733,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
622
733
 
623
734
  - Changed `idm` sub-commands to align with other commands:
624
735
  - The sub-commands `export`, `exportAll`, and `exportAllRaw` have been collapsed into one: `export`
625
- - `idm export -A` (`--all-separate`) is now the way to export all idm configuration.
736
+ - `idm export -A` (`--all-separate`) is now the way to export all idm configuration.
626
737
  - Options `-e` and `-E` select old `exportAll` functionality with variable replacement and filtering
627
- - Omitting options `-e` and `-E`, selects the old `exportAllRaw` functionality without variable replacement and without filtering
738
+ - Omitting options `-e` and `-E`, selects the old `exportAllRaw` functionality without variable replacement and without filtering
628
739
  - Renamed sample resource files for `idm export` command:
629
740
  - `<frodo home>/resources/sampleEntitiesFile.json`
630
741
  - `<frodo home>/resources/sampleEnvFile.env`
@@ -849,7 +960,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
849
960
  - Fixed problem with adding connection profiles
850
961
  - Miscellaneous bug fixes
851
962
 
852
- [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v0.19.5-2...HEAD
963
+ [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v0.20.1-0...HEAD
964
+
965
+ [0.20.1-0]: https://github.com/rockcarver/frodo-cli/compare/v0.20.0...v0.20.1-0
966
+
967
+ [0.20.0]: https://github.com/rockcarver/frodo-cli/compare/v0.19.5-2...v0.20.0
853
968
 
854
969
  [0.19.5-2]: https://github.com/rockcarver/frodo-cli/compare/v0.19.5-1...v0.19.5-2
855
970
 
@@ -19,7 +19,7 @@ const {
19
19
  const SECONDS_IN_30_DAYS = 2592000;
20
20
  const SECONDS_IN_1_HOUR = 3600;
21
21
  const LOG_TIME_WINDOW_MAX = SECONDS_IN_30_DAYS;
22
- const LOG_TIME_WINDOW_INCREMENT = SECONDS_IN_1_HOUR;
22
+ const LOG_TIME_WINDOW_INCREMENT = 1;
23
23
  const program = new FrodoCommand('frodo logs fetch', ['realm', 'type']);
24
24
  program.description('Fetch Identity Cloud logs between a specified begin and end time period.\
25
25
  WARNING: depending on filters and time period specified, this could take substantial time to complete.').addOption(sourcesOptionM).addOption(new Option('-l, --level <level>', 'Set log level filter. You can specify the level as a number or a string. \
@@ -55,6 +55,7 @@ Cannot be more than 30 days in the past. If not specified, logs from one hour ag
55
55
  }
56
56
  }
57
57
  const now = Date.now() / 1000;
58
+ const nowString = new Date(now * 1000).toISOString();
58
59
  if (typeof options.beginTimestamp === 'undefined' || !options.beginTimestamp) {
59
60
  // no beginTimestamp value specified, default is 1 hour ago
60
61
  const tempStartDate = new Date();
@@ -68,7 +69,7 @@ Cannot be more than 30 days in the past. If not specified, logs from one hour ag
68
69
  }
69
70
  if (typeof options.endTimestamp === 'undefined' || !options.endTimestamp) {
70
71
  // no endTimestamp value specified, default is now
71
- options.endTimestamp = now * 1000;
72
+ options.endTimestamp = nowString;
72
73
  printMessage('No end timestamp specified, defaulting end timestamp to "now"', 'info');
73
74
  }
74
75
  let beginTs = Date.parse(options.beginTimestamp) / 1000;
@@ -1 +1 @@
1
- {"version":3,"file":"logs-fetch.js","names":["FrodoCommand","sourcesOptionM","Option","Authenticate","ConnectionProfile","Log","state","config","printMessage","provisionCreds","fetchLogs","resolveLevel","getConnectionProfile","saveConnectionProfile","getTokens","SECONDS_IN_30_DAYS","SECONDS_IN_1_HOUR","LOG_TIME_WINDOW_MAX","LOG_TIME_WINDOW_INCREMENT","program","description","addOption","default","FRODO_LOG_NOISEFILTER_FILENAME","action","host","user","password","options","command","handleDefaultArgsAndOpts","credsFromParameters","conn","setHost","tenant","logApiKey","logApiSecret","setLogApiKey","setLogApiSecret","username","getUsername","getPassword","setUsername","setPassword","creds","api_key_id","api_key_secret","now","Date","beginTimestamp","tempStartDate","setTime","toISOString","tempEndDate","endTimestamp","beginTs","parse","intermediateEndTs","opts","sources","level","transactionId","searchString","getNoiseFilters","defaults"],"sources":["cli/logging/logs-fetch.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { sourcesOptionM } from './logs';\nimport { Option } from 'commander';\nimport {\n Authenticate,\n ConnectionProfile,\n Log,\n state,\n} from '@rockcarver/frodo-lib';\nimport * as config from '../../utils/Config';\nimport { printMessage } from '../../utils/Console';\n\nconst { provisionCreds, fetchLogs, resolveLevel } = Log;\nconst { getConnectionProfile, saveConnectionProfile } = ConnectionProfile;\nconst { getTokens } = Authenticate;\n\nconst SECONDS_IN_30_DAYS = 2592000;\nconst SECONDS_IN_1_HOUR = 3600;\nconst LOG_TIME_WINDOW_MAX = SECONDS_IN_30_DAYS;\nconst LOG_TIME_WINDOW_INCREMENT = SECONDS_IN_1_HOUR;\n\nconst program = new FrodoCommand('frodo logs fetch', ['realm', 'type']);\nprogram\n .description(\n 'Fetch Identity Cloud logs between a specified begin and end time period.\\\n WARNING: depending on filters and time period specified, this could take substantial time to complete.'\n )\n .addOption(sourcesOptionM)\n .addOption(\n new Option(\n '-l, --level <level>',\n 'Set log level filter. You can specify the level as a number or a string. \\\nFollowing values are possible (values on the same line are equivalent): \\\n\\n0, SEVERE, FATAL, or ERROR\\n1, WARNING, WARN or CONFIG\\\n\\n2, INFO or INFORMATION\\n3, DEBUG, FINE, FINER or FINEST\\\n\\n4 or ALL'\n ).default('ERROR', `${resolveLevel('ERROR')}`)\n )\n .addOption(\n new Option('-t, --transaction-id <txid>', 'Filter by transactionId')\n )\n .addOption(\n new Option(\n '-b, --begin-timestamp <beginTs>',\n 'Begin timestamp for period (in ISO8601, example: \"2022-10-13T19:06:28Z\", or \"2022-09.30\". \\\nCannot be more than 30 days in the past. If not specified, logs from one hour ago are fetched \\\n(-e is ignored)'\n )\n )\n .addOption(\n new Option(\n '-e, --end-timestamp <endTs>',\n 'End timestamp for period. Default: \"now\"'\n )\n )\n .addOption(\n new Option(\n '-s, --search-string <ss>',\n 'Filter by a specific string (ANDed with transactionID filter)'\n )\n )\n .addOption(\n new Option('-d, --defaults', 'Use default logging noise filters').default(\n false,\n `Use custom logging noise filters defined in $HOME/${config.FRODO_LOG_NOISEFILTER_FILENAME}`\n )\n )\n .action(async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n let credsFromParameters = true;\n const conn = await getConnectionProfile();\n state.setHost(conn.tenant);\n if (conn.logApiKey != null && conn.logApiSecret != null) {\n credsFromParameters = false;\n state.setLogApiKey(conn.logApiKey);\n state.setLogApiSecret(conn.logApiSecret);\n } else {\n if (conn.username == null && conn.password == null) {\n if (!state.getUsername() && !state.getPassword()) {\n credsFromParameters = false;\n printMessage(\n 'User credentials not specified as parameters and no saved API key and secret found!',\n 'warn'\n );\n return;\n }\n } else {\n state.setUsername(conn.username);\n state.setPassword(conn.password);\n }\n if (await getTokens()) {\n const creds = await provisionCreds();\n state.setLogApiKey(creds.api_key_id);\n state.setLogApiSecret(creds.api_key_secret);\n }\n }\n const now = Date.now() / 1000;\n if (\n typeof options.beginTimestamp === 'undefined' ||\n !options.beginTimestamp\n ) {\n // no beginTimestamp value specified, default is 1 hour ago\n const tempStartDate = new Date();\n tempStartDate.setTime((now - SECONDS_IN_1_HOUR) * 1000);\n options.beginTimestamp = tempStartDate.toISOString();\n // also override endTimestamp to now\n const tempEndDate = new Date();\n tempEndDate.setTime(now * 1000);\n options.endTimestamp = tempEndDate;\n printMessage(\n 'No timestamps specified, defaulting to logs from 1 hour ago',\n 'info'\n );\n }\n if (typeof options.endTimestamp === 'undefined' || !options.endTimestamp) {\n // no endTimestamp value specified, default is now\n options.endTimestamp = now * 1000;\n printMessage(\n 'No end timestamp specified, defaulting end timestamp to \"now\"',\n 'info'\n );\n }\n let beginTs = Date.parse(options.beginTimestamp) / 1000;\n if (Date.parse(options.endTimestamp) / 1000 < beginTs) {\n printMessage('End timestamp can not be before begin timestamp', 'error');\n return;\n }\n if (now - beginTs > LOG_TIME_WINDOW_MAX) {\n printMessage(\n 'Begin timestamp can not be more than 30 days in the past',\n 'error'\n );\n return;\n }\n let intermediateEndTs = 0;\n printMessage(\n `Fetching ID Cloud logs from the following sources: ${\n command.opts().sources\n } and levels [${resolveLevel(command.opts().level)}]...`\n );\n if (credsFromParameters) await saveConnectionProfile(host); // save new values if they were specified on CLI\n\n do {\n intermediateEndTs = beginTs + LOG_TIME_WINDOW_INCREMENT;\n await fetchLogs(\n command.opts().sources,\n new Date(beginTs * 1000).toISOString(),\n new Date(intermediateEndTs * 1000).toISOString(),\n resolveLevel(command.opts().level),\n command.opts().transactionId,\n command.opts().searchString,\n null,\n config.getNoiseFilters(options.defaults)\n );\n beginTs = intermediateEndTs;\n } while (intermediateEndTs < Date.parse(options.endTimestamp) / 1000);\n });\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"logs-fetch.js","names":["FrodoCommand","sourcesOptionM","Option","Authenticate","ConnectionProfile","Log","state","config","printMessage","provisionCreds","fetchLogs","resolveLevel","getConnectionProfile","saveConnectionProfile","getTokens","SECONDS_IN_30_DAYS","SECONDS_IN_1_HOUR","LOG_TIME_WINDOW_MAX","LOG_TIME_WINDOW_INCREMENT","program","description","addOption","default","FRODO_LOG_NOISEFILTER_FILENAME","action","host","user","password","options","command","handleDefaultArgsAndOpts","credsFromParameters","conn","setHost","tenant","logApiKey","logApiSecret","setLogApiKey","setLogApiSecret","username","getUsername","getPassword","setUsername","setPassword","creds","api_key_id","api_key_secret","now","Date","nowString","toISOString","beginTimestamp","tempStartDate","setTime","tempEndDate","endTimestamp","beginTs","parse","intermediateEndTs","opts","sources","level","transactionId","searchString","getNoiseFilters","defaults"],"sources":["cli/logging/logs-fetch.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { sourcesOptionM } from './logs';\nimport { Option } from 'commander';\nimport {\n Authenticate,\n ConnectionProfile,\n Log,\n state,\n} from '@rockcarver/frodo-lib';\nimport * as config from '../../utils/Config';\nimport { printMessage } from '../../utils/Console';\n\nconst { provisionCreds, fetchLogs, resolveLevel } = Log;\nconst { getConnectionProfile, saveConnectionProfile } = ConnectionProfile;\nconst { getTokens } = Authenticate;\n\nconst SECONDS_IN_30_DAYS = 2592000;\nconst SECONDS_IN_1_HOUR = 3600;\nconst LOG_TIME_WINDOW_MAX = SECONDS_IN_30_DAYS;\nconst LOG_TIME_WINDOW_INCREMENT = 1;\n\nconst program = new FrodoCommand('frodo logs fetch', ['realm', 'type']);\nprogram\n .description(\n 'Fetch Identity Cloud logs between a specified begin and end time period.\\\n WARNING: depending on filters and time period specified, this could take substantial time to complete.'\n )\n .addOption(sourcesOptionM)\n .addOption(\n new Option(\n '-l, --level <level>',\n 'Set log level filter. You can specify the level as a number or a string. \\\nFollowing values are possible (values on the same line are equivalent): \\\n\\n0, SEVERE, FATAL, or ERROR\\n1, WARNING, WARN or CONFIG\\\n\\n2, INFO or INFORMATION\\n3, DEBUG, FINE, FINER or FINEST\\\n\\n4 or ALL'\n ).default('ERROR', `${resolveLevel('ERROR')}`)\n )\n .addOption(\n new Option('-t, --transaction-id <txid>', 'Filter by transactionId')\n )\n .addOption(\n new Option(\n '-b, --begin-timestamp <beginTs>',\n 'Begin timestamp for period (in ISO8601, example: \"2022-10-13T19:06:28Z\", or \"2022-09.30\". \\\nCannot be more than 30 days in the past. If not specified, logs from one hour ago are fetched \\\n(-e is ignored)'\n )\n )\n .addOption(\n new Option(\n '-e, --end-timestamp <endTs>',\n 'End timestamp for period. Default: \"now\"'\n )\n )\n .addOption(\n new Option(\n '-s, --search-string <ss>',\n 'Filter by a specific string (ANDed with transactionID filter)'\n )\n )\n .addOption(\n new Option('-d, --defaults', 'Use default logging noise filters').default(\n false,\n `Use custom logging noise filters defined in $HOME/${config.FRODO_LOG_NOISEFILTER_FILENAME}`\n )\n )\n .action(async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n let credsFromParameters = true;\n const conn = await getConnectionProfile();\n state.setHost(conn.tenant);\n if (conn.logApiKey != null && conn.logApiSecret != null) {\n credsFromParameters = false;\n state.setLogApiKey(conn.logApiKey);\n state.setLogApiSecret(conn.logApiSecret);\n } else {\n if (conn.username == null && conn.password == null) {\n if (!state.getUsername() && !state.getPassword()) {\n credsFromParameters = false;\n printMessage(\n 'User credentials not specified as parameters and no saved API key and secret found!',\n 'warn'\n );\n return;\n }\n } else {\n state.setUsername(conn.username);\n state.setPassword(conn.password);\n }\n if (await getTokens()) {\n const creds = await provisionCreds();\n state.setLogApiKey(creds.api_key_id);\n state.setLogApiSecret(creds.api_key_secret);\n }\n }\n const now = Date.now() / 1000;\n const nowString = new Date(now * 1000).toISOString();\n if (\n typeof options.beginTimestamp === 'undefined' ||\n !options.beginTimestamp\n ) {\n // no beginTimestamp value specified, default is 1 hour ago\n const tempStartDate = new Date();\n tempStartDate.setTime((now - SECONDS_IN_1_HOUR) * 1000);\n options.beginTimestamp = tempStartDate.toISOString();\n // also override endTimestamp to now\n const tempEndDate = new Date();\n tempEndDate.setTime(now * 1000);\n options.endTimestamp = tempEndDate;\n printMessage(\n 'No timestamps specified, defaulting to logs from 1 hour ago',\n 'info'\n );\n }\n if (typeof options.endTimestamp === 'undefined' || !options.endTimestamp) {\n // no endTimestamp value specified, default is now\n options.endTimestamp = nowString;\n printMessage(\n 'No end timestamp specified, defaulting end timestamp to \"now\"',\n 'info'\n );\n }\n let beginTs = Date.parse(options.beginTimestamp) / 1000;\n if (Date.parse(options.endTimestamp) / 1000 < beginTs) {\n printMessage('End timestamp can not be before begin timestamp', 'error');\n return;\n }\n if (now - beginTs > LOG_TIME_WINDOW_MAX) {\n printMessage(\n 'Begin timestamp can not be more than 30 days in the past',\n 'error'\n );\n return;\n }\n let intermediateEndTs = 0;\n printMessage(\n `Fetching ID Cloud logs from the following sources: ${\n command.opts().sources\n } and levels [${resolveLevel(command.opts().level)}]...`\n );\n if (credsFromParameters) await saveConnectionProfile(host); // save new values if they were specified on CLI\n\n do {\n intermediateEndTs = beginTs + LOG_TIME_WINDOW_INCREMENT;\n await fetchLogs(\n command.opts().sources,\n new Date(beginTs * 1000).toISOString(),\n new Date(intermediateEndTs * 1000).toISOString(),\n resolveLevel(command.opts().level),\n command.opts().transactionId,\n command.opts().searchString,\n null,\n config.getNoiseFilters(options.defaults)\n );\n beginTs = intermediateEndTs;\n } while (intermediateEndTs < Date.parse(options.endTimestamp) / 1000);\n });\n\nprogram.parse();\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockcarver/frodo-cli",
3
- "version": "0.19.5-2",
3
+ "version": "0.20.1-0",
4
4
  "type": "module",
5
5
  "description": "A command line interface to manage ForgeRock Identity Cloud tenants, ForgeOps deployments, and classic deployments.",
6
6
  "keywords": [
@@ -104,7 +104,7 @@
104
104
  ]
105
105
  },
106
106
  "dependencies": {
107
- "@rockcarver/frodo-lib": "0.17.8-3",
107
+ "@rockcarver/frodo-lib": "0.18.0",
108
108
  "cli-progress": "^3.11.2",
109
109
  "cli-table3": "^0.6.3",
110
110
  "colors": "^1.4.0",