@rockcarver/frodo-lib 0.13.1 → 0.13.2-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 +9 -1
- package/cjs/ops/LogOps.js +10 -4
- package/cjs/ops/LogOps.js.map +1 -1
- package/esm/ops/LogOps.mjs +7 -3
- package/package.json +1 -1
- package/types/ops/LogOps.d.ts +2 -1
- package/types/ops/LogOps.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.13.2-0] - 2022-10-04
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- rockcarver/frodo-cli#70: Added ability to create custom logging noise filters
|
|
15
|
+
|
|
10
16
|
## [0.13.1] - 2022-10-04
|
|
11
17
|
|
|
12
18
|
### Fixed
|
|
@@ -589,7 +595,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
589
595
|
- Fixed problem with adding connection profiles
|
|
590
596
|
- Miscellaneous bug fixes
|
|
591
597
|
|
|
592
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.13.
|
|
598
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.13.2-0...HEAD
|
|
599
|
+
|
|
600
|
+
[0.13.2-0]: https://github.com/rockcarver/frodo-lib/compare/v0.13.1...v0.13.2-0
|
|
593
601
|
|
|
594
602
|
[0.13.1]: https://github.com/rockcarver/frodo-lib/compare/v0.13.0...v0.13.1
|
|
595
603
|
|
package/cjs/ops/LogOps.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.defaultNoiseFilter = defaultNoiseFilter;
|
|
6
7
|
exports.getLogSources = getLogSources;
|
|
7
8
|
exports.provisionCreds = provisionCreds;
|
|
8
9
|
exports.resolveLevel = resolveLevel;
|
|
@@ -61,6 +62,10 @@ var logLevelMap = {
|
|
|
61
62
|
ALL: ['ALL']
|
|
62
63
|
};
|
|
63
64
|
|
|
65
|
+
function defaultNoiseFilter() {
|
|
66
|
+
return noise;
|
|
67
|
+
}
|
|
68
|
+
|
|
64
69
|
function resolveLevel(level) {
|
|
65
70
|
// const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];
|
|
66
71
|
// levels.splice(levels.indexOf(levelName) + 1, levels.length);
|
|
@@ -102,12 +107,12 @@ function _getLogSources() {
|
|
|
102
107
|
return _getLogSources.apply(this, arguments);
|
|
103
108
|
}
|
|
104
109
|
|
|
105
|
-
function tailLogs(_x, _x2, _x3, _x4) {
|
|
110
|
+
function tailLogs(_x, _x2, _x3, _x4, _x5) {
|
|
106
111
|
return _tailLogs.apply(this, arguments);
|
|
107
112
|
}
|
|
108
113
|
|
|
109
114
|
function _tailLogs() {
|
|
110
|
-
_tailLogs = _asyncToGenerator(function* (source, levels, txid, cookie) {
|
|
115
|
+
_tailLogs = _asyncToGenerator(function* (source, levels, txid, cookie, nf) {
|
|
111
116
|
try {
|
|
112
117
|
var response = yield LogApi.tail(source, cookie);
|
|
113
118
|
|
|
@@ -121,16 +126,17 @@ function _tailLogs() {
|
|
|
121
126
|
|
|
122
127
|
var logsObject = response.data;
|
|
123
128
|
var filteredLogs = [];
|
|
129
|
+
var noiseFilter = nf == null ? noise : nf;
|
|
124
130
|
|
|
125
131
|
if (Array.isArray(logsObject.result)) {
|
|
126
|
-
filteredLogs = logsObject.result.filter(el => !
|
|
132
|
+
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)));
|
|
127
133
|
}
|
|
128
134
|
|
|
129
135
|
filteredLogs.forEach(e => {
|
|
130
136
|
(0, _Console.printMessage)(JSON.stringify(e.payload), 'data');
|
|
131
137
|
});
|
|
132
138
|
setTimeout(() => {
|
|
133
|
-
tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie);
|
|
139
|
+
tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);
|
|
134
140
|
}, 5000);
|
|
135
141
|
return null;
|
|
136
142
|
} catch (e) {
|
package/cjs/ops/LogOps.js.map
CHANGED
|
@@ -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","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","LogApi","tail","status","logsObject","filteredLogs","Array","isArray","filter","el","includes","logger","transactionId","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","storage","session","getUsername","getAPIKeys","k","name","getCurrentTimestamp","createAPIKeyAndSecret","resp","getTenant"],"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 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) {\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 if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noise.includes(el.payload.logger) &&\n !noise.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);\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"],"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"],"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"],"mappings":"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"}
|
package/esm/ops/LogOps.mjs
CHANGED
|
@@ -36,6 +36,9 @@ const logLevelMap = {
|
|
|
36
36
|
FINEST: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG', 'INFO', 'INFORMATION', 'DEBUG', 'FINE', 'FINER', 'FINEST'],
|
|
37
37
|
ALL: ['ALL']
|
|
38
38
|
};
|
|
39
|
+
export function defaultNoiseFilter() {
|
|
40
|
+
return noise;
|
|
41
|
+
}
|
|
39
42
|
export function resolveLevel(level) {
|
|
40
43
|
// const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];
|
|
41
44
|
// levels.splice(levels.indexOf(levelName) + 1, levels.length);
|
|
@@ -67,7 +70,7 @@ export async function getLogSources() {
|
|
|
67
70
|
});
|
|
68
71
|
return sources;
|
|
69
72
|
}
|
|
70
|
-
export async function tailLogs(source, levels, txid, cookie) {
|
|
73
|
+
export async function tailLogs(source, levels, txid, cookie, nf) {
|
|
71
74
|
try {
|
|
72
75
|
const response = await LogApi.tail(source, cookie);
|
|
73
76
|
|
|
@@ -81,16 +84,17 @@ export async function tailLogs(source, levels, txid, cookie) {
|
|
|
81
84
|
|
|
82
85
|
const logsObject = response.data;
|
|
83
86
|
let filteredLogs = [];
|
|
87
|
+
const noiseFilter = nf == null ? noise : nf;
|
|
84
88
|
|
|
85
89
|
if (Array.isArray(logsObject.result)) {
|
|
86
|
-
filteredLogs = logsObject.result.filter(el => !
|
|
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)));
|
|
87
91
|
}
|
|
88
92
|
|
|
89
93
|
filteredLogs.forEach(e => {
|
|
90
94
|
printMessage(JSON.stringify(e.payload), 'data');
|
|
91
95
|
});
|
|
92
96
|
setTimeout(() => {
|
|
93
|
-
tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie);
|
|
97
|
+
tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);
|
|
94
98
|
}, 5000);
|
|
95
99
|
return null;
|
|
96
100
|
} catch (e) {
|
package/package.json
CHANGED
package/types/ops/LogOps.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
export declare function defaultNoiseFilter(): string[];
|
|
1
2
|
export declare function resolveLevel(level: any): any;
|
|
2
3
|
export declare function resolvePayloadLevel(log: any): any;
|
|
3
4
|
export declare function getLogSources(): Promise<any[]>;
|
|
4
|
-
export declare function tailLogs(source: any, levels: any, txid: any, cookie: any): Promise<string>;
|
|
5
|
+
export declare function tailLogs(source: any, levels: any, txid: any, cookie: any, nf: any): Promise<string>;
|
|
5
6
|
export declare function provisionCreds(): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ops/LogOps.ts"],"names":[],"mappings":"AAwOA,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,mBAuC1D;AAED,wBAAsB,cAAc,iBA2CnC","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 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) {\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 if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noise.includes(el.payload.logger) &&\n !noise.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);\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"]}
|
|
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","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"]}
|