@rockcarver/frodo-lib 0.16.0 → 0.16.1

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,7 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [0.16.0] - 2022-10-19
10
+ ## [0.16.1] - 2022-10-19
11
+
12
+ ### Fixed
13
+
14
+ - rockcarver/frodo-cli#95: Error tailing logs with txId
11
15
 
12
16
  ## [0.16.1] - 2022-10-18
13
17
 
@@ -667,7 +671,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
667
671
  - Fixed problem with adding connection profiles
668
672
  - Miscellaneous bug fixes
669
673
 
670
- [Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.16.0...HEAD
674
+ [Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.16.1...HEAD
675
+
676
+ [0.16.1]: https://github.com/rockcarver/frodo-lib/compare/v0.16.0...v0.16.1
671
677
 
672
678
  [0.16.0]: https://github.com/rockcarver/frodo-lib/compare/v0.15.3-0...v0.16.0
673
679
 
package/cjs/ops/LogOps.js CHANGED
@@ -130,7 +130,11 @@ function _tailLogs() {
130
130
  var noiseFilter = nf == null ? noise : nf;
131
131
 
132
132
  if (Array.isArray(logsObject.result)) {
133
- filteredLogs = logsObject.result.filter(el => !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || el.payload.transactionId.includes(txid)));
133
+ filteredLogs = logsObject.result.filter(el => {
134
+ var _el$payload$transacti;
135
+
136
+ return !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || ((_el$payload$transacti = el.payload.transactionId) === null || _el$payload$transacti === void 0 ? void 0 : _el$payload$transacti.includes(txid)));
137
+ });
134
138
  }
135
139
 
136
140
  filteredLogs.forEach(e => {
@@ -1 +1 @@
1
- {"version":3,"file":"LogOps.js","names":["unfilterableNoise","miscNoise","journeysNoise","journeys","samlNoise","saml","noise","concat","numLogLevelMap","logLevelMap","SEVERE","ERROR","FATAL","WARN","WARNING","CONFIG","INFO","INFORMATION","DEBUG","FINE","FINER","FINEST","ALL","defaultNoiseFilter","resolveLevel","level","Number","isNaN","parseInt","resolvePayloadLevel","log","type","payload","match","e","getLogSources","sources","getSources","then","response","data","result","forEach","item","push","catch","error","printMessage","tailLogs","source","levels","txid","cookie","nf","LogApi","tail","status","logsObject","filteredLogs","noiseFilter","Array","isArray","filter","el","includes","logger","transactionId","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","storage","session","getUsername","getAPIKeys","k","name","getCurrentTimestamp","createAPIKeyAndSecret","resp","getTenant","fetchLogs","startTs","endTs","ffString","fetch"],"sources":["ops/LogOps.ts"],"sourcesContent":["import { printMessage } from './utils/Console';\nimport { getCurrentTimestamp } from './utils/ExportImportUtils';\nimport { createAPIKeyAndSecret, getAPIKeys, getSources } from '../api/LogApi';\n\nimport storage from '../storage/SessionStorage';\n\nimport * as LogApi from '../api/LogApi';\n\n// eslint-disable-next-line no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\nexport function defaultNoiseFilter() {\n return noise;\n}\n\nexport function resolveLevel(level) {\n // const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];\n // levels.splice(levels.indexOf(levelName) + 1, levels.length);\n if (Number.isNaN(parseInt(level, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level][0]];\n}\n\n// It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n// Therefore, for those, this function returns null, and thus filters out the undesirable\nexport function resolvePayloadLevel(log) {\n try {\n return log.type !== 'text/plain'\n ? log.payload.level\n : log.payload.match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\nexport async function getLogSources() {\n const sources = [];\n await getSources()\n .then((response) => {\n response.data.result.forEach((item) => {\n sources.push(item);\n });\n })\n .catch((error) => {\n printMessage(\n `getSources ERROR: get log sources call returned ${error}}`,\n 'error'\n );\n return [];\n });\n return sources;\n}\n\nexport async function tailLogs(source, levels, txid, cookie, nf) {\n try {\n const response = await LogApi.tail(source, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `tail ERROR: tail call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n // if (!cookie) {\n // await saveConnection();\n // }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e.payload), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${storage.session.getUsername()}`;\n return getAPIKeys()\n .then((response) => {\n response.data.result.forEach((k) => {\n if (k.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${getCurrentTimestamp()}`;\n }\n });\n return createAPIKeyAndSecret(keyName)\n .then((resp) => {\n if (resp.data.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n printMessage(\n `Created a new log API key [${keyName}] in ${storage.session.getTenant()}`\n );\n return resp.data;\n })\n .catch((error) => {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n });\n })\n .catch((error) => {\n printMessage(\n `get keys ERROR: get keys call returned ${error}`,\n 'error'\n );\n });\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n cookie,\n nf\n) {\n try {\n // console.log(`startTs: ${startTs} endTs : ${endTs}`);\n const response = await LogApi.fetch(source, startTs, endTs, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `fetch ERROR: fetch call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LogOps.js","names":["unfilterableNoise","miscNoise","journeysNoise","journeys","samlNoise","saml","noise","concat","numLogLevelMap","logLevelMap","SEVERE","ERROR","FATAL","WARN","WARNING","CONFIG","INFO","INFORMATION","DEBUG","FINE","FINER","FINEST","ALL","defaultNoiseFilter","resolveLevel","level","Number","isNaN","parseInt","resolvePayloadLevel","log","type","payload","match","e","getLogSources","sources","getSources","then","response","data","result","forEach","item","push","catch","error","printMessage","tailLogs","source","levels","txid","cookie","nf","LogApi","tail","status","logsObject","filteredLogs","noiseFilter","Array","isArray","filter","el","includes","logger","transactionId","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","storage","session","getUsername","getAPIKeys","k","name","getCurrentTimestamp","createAPIKeyAndSecret","resp","getTenant","fetchLogs","startTs","endTs","ffString","fetch"],"sources":["ops/LogOps.ts"],"sourcesContent":["import { printMessage } from './utils/Console';\nimport { getCurrentTimestamp } from './utils/ExportImportUtils';\nimport { createAPIKeyAndSecret, getAPIKeys, getSources } from '../api/LogApi';\n\nimport storage from '../storage/SessionStorage';\n\nimport * as LogApi from '../api/LogApi';\n\n// eslint-disable-next-line no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\nexport function defaultNoiseFilter() {\n return noise;\n}\n\nexport function resolveLevel(level) {\n // const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];\n // levels.splice(levels.indexOf(levelName) + 1, levels.length);\n if (Number.isNaN(parseInt(level, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level][0]];\n}\n\n// It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n// Therefore, for those, this function returns null, and thus filters out the undesirable\nexport function resolvePayloadLevel(log) {\n try {\n return log.type !== 'text/plain'\n ? log.payload.level\n : log.payload.match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\nexport async function getLogSources() {\n const sources = [];\n await getSources()\n .then((response) => {\n response.data.result.forEach((item) => {\n sources.push(item);\n });\n })\n .catch((error) => {\n printMessage(\n `getSources ERROR: get log sources call returned ${error}}`,\n 'error'\n );\n return [];\n });\n return sources;\n}\n\nexport async function tailLogs(source, levels, txid, cookie, nf) {\n try {\n const response = await LogApi.tail(source, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `tail ERROR: tail call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n // if (!cookie) {\n // await saveConnection();\n // }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId?.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e.payload), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${storage.session.getUsername()}`;\n return getAPIKeys()\n .then((response) => {\n response.data.result.forEach((k) => {\n if (k.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${getCurrentTimestamp()}`;\n }\n });\n return createAPIKeyAndSecret(keyName)\n .then((resp) => {\n if (resp.data.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n printMessage(\n `Created a new log API key [${keyName}] in ${storage.session.getTenant()}`\n );\n return resp.data;\n })\n .catch((error) => {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n });\n })\n .catch((error) => {\n printMessage(\n `get keys ERROR: get keys call returned ${error}`,\n 'error'\n );\n });\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n cookie,\n nf\n) {\n try {\n // console.log(`startTs: ${startTs} endTs : ${endTs}`);\n const response = await LogApi.fetch(source, startTs, endTs, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `fetch ERROR: fetch call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"],"mappings":"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"}
@@ -87,7 +87,11 @@ export async function tailLogs(source, levels, txid, cookie, nf) {
87
87
  const noiseFilter = nf == null ? noise : nf;
88
88
 
89
89
  if (Array.isArray(logsObject.result)) {
90
- filteredLogs = logsObject.result.filter(el => !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || el.payload.transactionId.includes(txid)));
90
+ filteredLogs = logsObject.result.filter(el => {
91
+ var _el$payload$transacti;
92
+
93
+ return !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || ((_el$payload$transacti = el.payload.transactionId) === null || _el$payload$transacti === void 0 ? void 0 : _el$payload$transacti.includes(txid)));
94
+ });
91
95
  }
92
96
 
93
97
  filteredLogs.forEach(e => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockcarver/frodo-lib",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "type": "commonjs",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.mjs",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ops/LogOps.ts"],"names":[],"mappings":"AAwOA,wBAAgB,kBAAkB,aAEjC;AAED,wBAAgB,YAAY,CAAC,KAAK,KAAA,OAOjC;AAID,wBAAgB,mBAAmB,CAAC,GAAG,KAAA,OAStC;AAED,wBAAsB,aAAa,mBAgBlC;AAED,wBAAsB,QAAQ,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,MAAM,KAAA,EAAE,EAAE,KAAA,mBAwC9D;AAED,wBAAsB,cAAc,iBA2CnC;AAED,wBAAsB,SAAS,CAC7B,MAAM,KAAA,EACN,OAAO,KAAA,EACP,KAAK,KAAA,EACL,MAAM,KAAA,EACN,IAAI,KAAA,EACJ,QAAQ,KAAA,EACR,MAAM,KAAA,EACN,EAAE,KAAA,mBAsDH","file":"LogOps.d.ts","sourcesContent":["import { printMessage } from './utils/Console';\nimport { getCurrentTimestamp } from './utils/ExportImportUtils';\nimport { createAPIKeyAndSecret, getAPIKeys, getSources } from '../api/LogApi';\n\nimport storage from '../storage/SessionStorage';\n\nimport * as LogApi from '../api/LogApi';\n\n// eslint-disable-next-line no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\nexport function defaultNoiseFilter() {\n return noise;\n}\n\nexport function resolveLevel(level) {\n // const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];\n // levels.splice(levels.indexOf(levelName) + 1, levels.length);\n if (Number.isNaN(parseInt(level, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level][0]];\n}\n\n// It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n// Therefore, for those, this function returns null, and thus filters out the undesirable\nexport function resolvePayloadLevel(log) {\n try {\n return log.type !== 'text/plain'\n ? log.payload.level\n : log.payload.match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\nexport async function getLogSources() {\n const sources = [];\n await getSources()\n .then((response) => {\n response.data.result.forEach((item) => {\n sources.push(item);\n });\n })\n .catch((error) => {\n printMessage(\n `getSources ERROR: get log sources call returned ${error}}`,\n 'error'\n );\n return [];\n });\n return sources;\n}\n\nexport async function tailLogs(source, levels, txid, cookie, nf) {\n try {\n const response = await LogApi.tail(source, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `tail ERROR: tail call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n // if (!cookie) {\n // await saveConnection();\n // }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e.payload), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${storage.session.getUsername()}`;\n return getAPIKeys()\n .then((response) => {\n response.data.result.forEach((k) => {\n if (k.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${getCurrentTimestamp()}`;\n }\n });\n return createAPIKeyAndSecret(keyName)\n .then((resp) => {\n if (resp.data.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n printMessage(\n `Created a new log API key [${keyName}] in ${storage.session.getTenant()}`\n );\n return resp.data;\n })\n .catch((error) => {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n });\n })\n .catch((error) => {\n printMessage(\n `get keys ERROR: get keys call returned ${error}`,\n 'error'\n );\n });\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n cookie,\n nf\n) {\n try {\n // console.log(`startTs: ${startTs} endTs : ${endTs}`);\n const response = await LogApi.fetch(source, startTs, endTs, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `fetch ERROR: fetch call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/ops/LogOps.ts"],"names":[],"mappings":"AAwOA,wBAAgB,kBAAkB,aAEjC;AAED,wBAAgB,YAAY,CAAC,KAAK,KAAA,OAOjC;AAID,wBAAgB,mBAAmB,CAAC,GAAG,KAAA,OAStC;AAED,wBAAsB,aAAa,mBAgBlC;AAED,wBAAsB,QAAQ,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,MAAM,KAAA,EAAE,EAAE,KAAA,mBAwC9D;AAED,wBAAsB,cAAc,iBA2CnC;AAED,wBAAsB,SAAS,CAC7B,MAAM,KAAA,EACN,OAAO,KAAA,EACP,KAAK,KAAA,EACL,MAAM,KAAA,EACN,IAAI,KAAA,EACJ,QAAQ,KAAA,EACR,MAAM,KAAA,EACN,EAAE,KAAA,mBAsDH","file":"LogOps.d.ts","sourcesContent":["import { printMessage } from './utils/Console';\nimport { getCurrentTimestamp } from './utils/ExportImportUtils';\nimport { createAPIKeyAndSecret, getAPIKeys, getSources } from '../api/LogApi';\n\nimport storage from '../storage/SessionStorage';\n\nimport * as LogApi from '../api/LogApi';\n\n// eslint-disable-next-line no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\nexport function defaultNoiseFilter() {\n return noise;\n}\n\nexport function resolveLevel(level) {\n // const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];\n // levels.splice(levels.indexOf(levelName) + 1, levels.length);\n if (Number.isNaN(parseInt(level, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level][0]];\n}\n\n// It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n// Therefore, for those, this function returns null, and thus filters out the undesirable\nexport function resolvePayloadLevel(log) {\n try {\n return log.type !== 'text/plain'\n ? log.payload.level\n : log.payload.match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\nexport async function getLogSources() {\n const sources = [];\n await getSources()\n .then((response) => {\n response.data.result.forEach((item) => {\n sources.push(item);\n });\n })\n .catch((error) => {\n printMessage(\n `getSources ERROR: get log sources call returned ${error}}`,\n 'error'\n );\n return [];\n });\n return sources;\n}\n\nexport async function tailLogs(source, levels, txid, cookie, nf) {\n try {\n const response = await LogApi.tail(source, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `tail ERROR: tail call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n // if (!cookie) {\n // await saveConnection();\n // }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId?.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e.payload), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${storage.session.getUsername()}`;\n return getAPIKeys()\n .then((response) => {\n response.data.result.forEach((k) => {\n if (k.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${getCurrentTimestamp()}`;\n }\n });\n return createAPIKeyAndSecret(keyName)\n .then((resp) => {\n if (resp.data.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n printMessage(\n `Created a new log API key [${keyName}] in ${storage.session.getTenant()}`\n );\n return resp.data;\n })\n .catch((error) => {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n });\n })\n .catch((error) => {\n printMessage(\n `get keys ERROR: get keys call returned ${error}`,\n 'error'\n );\n });\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n cookie,\n nf\n) {\n try {\n // console.log(`startTs: ${startTs} endTs : ${endTs}`);\n const response = await LogApi.fetch(source, startTs, endTs, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `fetch ERROR: fetch call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"]}