@rockcarver/frodo-cli 0.24.4 → 2.0.0-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/.vscode/launch.json +15 -0
- package/CHANGELOG.md +13 -1
- package/esm/app.js +2 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +10 -10
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +2 -5
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +2 -5
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +2 -5
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +2 -5
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +2 -5
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +2 -5
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +2 -5
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-export.js +2 -5
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +2 -5
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +2 -5
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +2 -5
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +2 -5
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +2 -5
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +2 -5
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +2 -5
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +3 -9
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +4 -11
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-get-access-token.js +3 -9
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +3 -9
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +3 -9
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +3 -9
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +3 -9
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +3 -9
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +3 -9
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +3 -9
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +3 -9
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +3 -9
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +4 -11
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +2 -5
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +2 -5
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +4 -11
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +2 -5
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +2 -5
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +2 -5
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +2 -5
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-import.js +2 -5
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +4 -11
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +2 -5
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +2 -5
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +2 -5
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +2 -5
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-list.js +2 -5
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +4 -11
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +2 -5
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +2 -5
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +2 -5
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +2 -5
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/app/app-delete.js +2 -5
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +2 -5
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +4 -7
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +5 -8
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +3 -6
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/authz/authz-policy-delete.js +4 -7
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +2 -5
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +6 -9
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +5 -8
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +3 -6
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +3 -6
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +2 -5
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +4 -7
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +5 -8
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +2 -5
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +4 -7
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +3 -6
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +5 -8
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +6 -9
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +2 -5
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +2 -5
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +1 -4
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +1 -4
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +6 -16
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/email/email-template-export.js +4 -7
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +5 -8
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +2 -5
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +6 -16
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +3 -8
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +6 -12
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +3 -8
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +2 -5
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +2 -5
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +3 -8
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +4 -9
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +3 -8
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +4 -9
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +3 -8
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +5 -10
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +4 -9
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +3 -8
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +6 -12
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +3 -8
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +2 -5
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +2 -5
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +3 -8
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +5 -11
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/idm/idm-count.js +2 -5
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +4 -7
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +5 -8
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +2 -5
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idp/idp-export.js +2 -5
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +5 -8
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +2 -5
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/info/info.js +3 -9
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +5 -12
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +7 -15
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +3 -9
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +3 -9
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +4 -7
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +5 -8
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +2 -5
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +4 -11
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/logging/logs-fetch.js +7 -17
- package/esm/cli/logging/logs-fetch.js.map +1 -1
- package/esm/cli/logging/logs-list.js +5 -15
- package/esm/cli/logging/logs-list.js.map +1 -1
- package/esm/cli/logging/logs-tail.js +7 -17
- package/esm/cli/logging/logs-tail.js.map +1 -1
- package/esm/cli/realm/realm-add-custom-domain.js +3 -8
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +4 -12
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +3 -8
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +3 -9
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +11 -15
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +15 -19
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +5 -9
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +5 -12
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +2 -5
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +12 -30
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +15 -36
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +6 -14
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +3 -6
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/script/script-delete.js +2 -5
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +2 -5
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +2 -5
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +4 -6
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +4 -6
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/service/service-delete.js +3 -6
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +4 -7
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +5 -8
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +2 -5
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/theme/theme-delete.js +4 -7
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +5 -8
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +6 -9
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +2 -5
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/launch.js +4 -3
- package/esm/launch.js.map +1 -1
- package/esm/ops/AgentOps.js +49 -82
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +217 -2
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +97 -8
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +16 -25
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +25 -39
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +10 -18
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +49 -65
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +9 -17
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +11 -11
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +13 -29
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +28 -0
- package/esm/ops/OrganizationOps.js.map +1 -0
- package/esm/ops/PolicyOps.js +22 -38
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +19 -37
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +109 -0
- package/esm/ops/RealmOps.js.map +1 -0
- package/esm/ops/ResourceTypeOps.js +19 -37
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +30 -251
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/ScriptOps.js +14 -21
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +223 -0
- package/esm/ops/SecretsOps.js.map +1 -0
- package/esm/ops/ServiceOps.js +20 -41
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +20 -35
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +133 -0
- package/esm/ops/VariablesOps.js.map +1 -0
- package/esm/utils/Config.js +3 -6
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +2 -5
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +4 -6
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +3 -3
- package/esm/utils/Version.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
|
+
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
3
5
|
/**
|
|
4
6
|
* Get a one-line description of the circle of trust object
|
|
5
7
|
* @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe
|
|
@@ -30,4 +32,217 @@ export function getTableRowMd(cotObj) {
|
|
|
30
32
|
const row = `| ${cotObj._id} | ${cotObj.status === 'active' ? ':white_check_mark: `active`' : ':o: `inactive`'} | ${cotObj.trustedProviders.map(provider => provider.split('|')[0]).join('<br>')} |`;
|
|
31
33
|
return row;
|
|
32
34
|
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* List entity providers
|
|
38
|
+
* @param {String} long Long list format with details
|
|
39
|
+
*/
|
|
40
|
+
export async function listCirclesOfTrust(long = false) {
|
|
41
|
+
let outcome = false;
|
|
42
|
+
let cotList = [];
|
|
43
|
+
try {
|
|
44
|
+
cotList = await frodo.saml2.circlesOfTrust.getCirclesOfTrust();
|
|
45
|
+
} catch (error) {
|
|
46
|
+
printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');
|
|
47
|
+
printMessage(error, 'data');
|
|
48
|
+
}
|
|
49
|
+
cotList.sort((a, b) => a._id.localeCompare(b._id));
|
|
50
|
+
if (!long) {
|
|
51
|
+
cotList.forEach(cot => {
|
|
52
|
+
printMessage(`${cot._id}`, 'data');
|
|
53
|
+
});
|
|
54
|
+
outcome = true;
|
|
55
|
+
} else {
|
|
56
|
+
const table = createTable(['Name'['brightCyan'], 'Description'['brightCyan'], 'Status'['brightCyan'], 'Trusted Providers'['brightCyan']]);
|
|
57
|
+
cotList.forEach(cot => {
|
|
58
|
+
table.push([cot._id, cot.description, cot.status, cot.trustedProviders.map(provider => provider.split('|')[0]).join('\n')]);
|
|
59
|
+
});
|
|
60
|
+
printMessage(table.toString());
|
|
61
|
+
outcome = true;
|
|
62
|
+
}
|
|
63
|
+
return outcome;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Export a single circle of trust to file
|
|
68
|
+
* @param {String} cotId circle of trust id/name
|
|
69
|
+
* @param {String} file Optional filename
|
|
70
|
+
*/
|
|
71
|
+
export async function exportCircleOfTrustToFile(cotId, file = null) {
|
|
72
|
+
let outcome = false;
|
|
73
|
+
debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);
|
|
74
|
+
showSpinner(`Exporting ${cotId}...`);
|
|
75
|
+
try {
|
|
76
|
+
let fileName = getTypedFilename(cotId, 'cot.saml');
|
|
77
|
+
if (file) {
|
|
78
|
+
fileName = file;
|
|
79
|
+
}
|
|
80
|
+
const exportData = await frodo.saml2.circlesOfTrust.exportCircleOfTrust(cotId);
|
|
81
|
+
saveJsonToFile(exportData, fileName);
|
|
82
|
+
succeedSpinner(`Exported ${cotId} to ${fileName}.`);
|
|
83
|
+
outcome = true;
|
|
84
|
+
} catch (error) {
|
|
85
|
+
failSpinner(`Error exporting ${cotId}: ${error.message}`);
|
|
86
|
+
}
|
|
87
|
+
debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);
|
|
88
|
+
return outcome;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Export all circles of trust to one file
|
|
93
|
+
* @param {String} file Optional filename
|
|
94
|
+
*/
|
|
95
|
+
export async function exportCirclesOfTrustToFile(file = null) {
|
|
96
|
+
let outcome = false;
|
|
97
|
+
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);
|
|
98
|
+
showSpinner(`Exporting all circles of trust...`);
|
|
99
|
+
try {
|
|
100
|
+
let fileName = getTypedFilename(`all${titleCase(frodo.helper.utils.getRealmName(state.getRealm()))}CirclesOfTrust`, 'cot.saml');
|
|
101
|
+
if (file) {
|
|
102
|
+
fileName = file;
|
|
103
|
+
}
|
|
104
|
+
const exportData = await frodo.saml2.circlesOfTrust.exportCirclesOfTrust();
|
|
105
|
+
saveJsonToFile(exportData, fileName);
|
|
106
|
+
succeedSpinner(`Exported all circles of trust to ${fileName}.`);
|
|
107
|
+
outcome = true;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
failSpinner(`Error exporting circles of trust: ${error.message}`);
|
|
110
|
+
}
|
|
111
|
+
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);
|
|
112
|
+
return outcome;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Export all circles of trust to individual files
|
|
117
|
+
*/
|
|
118
|
+
export async function exportCirclesOfTrustToFiles() {
|
|
119
|
+
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);
|
|
120
|
+
const errors = [];
|
|
121
|
+
try {
|
|
122
|
+
const cots = await frodo.saml2.circlesOfTrust.getCirclesOfTrust();
|
|
123
|
+
createProgressBar(cots.length, 'Exporting circles of trust...');
|
|
124
|
+
for (const cot of cots) {
|
|
125
|
+
const file = getTypedFilename(cot._id, 'cot.saml');
|
|
126
|
+
try {
|
|
127
|
+
const exportData = await frodo.saml2.circlesOfTrust.exportCircleOfTrust(cot._id);
|
|
128
|
+
saveJsonToFile(exportData, file);
|
|
129
|
+
updateProgressBar(`Exported ${cot.name}.`);
|
|
130
|
+
} catch (error) {
|
|
131
|
+
errors.push(error);
|
|
132
|
+
updateProgressBar(`Error exporting ${cot.name}.`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
stopProgressBar(`Export complete.`);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
errors.push(error);
|
|
138
|
+
stopProgressBar(`Error exporting circles of trust to files`);
|
|
139
|
+
}
|
|
140
|
+
debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);
|
|
141
|
+
return 0 === errors.length;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Import a SAML circle of trust by id/name from file
|
|
146
|
+
* @param {String} cotId Circle of trust id/name
|
|
147
|
+
* @param {String} file Import file name
|
|
148
|
+
*/
|
|
149
|
+
export async function importCircleOfTrustFromFile(cotId, file) {
|
|
150
|
+
let outcome = false;
|
|
151
|
+
showSpinner(`Importing circle of trust ${cotId} from ${file}...`);
|
|
152
|
+
fs.readFile(file, 'utf8', async (err, data) => {
|
|
153
|
+
if (err) throw err;
|
|
154
|
+
try {
|
|
155
|
+
const fileData = JSON.parse(data);
|
|
156
|
+
await frodo.saml2.circlesOfTrust.importCircleOfTrust(cotId, fileData);
|
|
157
|
+
outcome = true;
|
|
158
|
+
succeedSpinner(`Imported circle of trust ${cotId} from ${file}.`);
|
|
159
|
+
} catch (error) {
|
|
160
|
+
var _error$response;
|
|
161
|
+
failSpinner(`Error importing circle of trust ${cotId} from ${file}.`);
|
|
162
|
+
printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return outcome;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Import first SAML circle of trust from file
|
|
170
|
+
* @param {String} file Import file name
|
|
171
|
+
*/
|
|
172
|
+
export async function importFirstCircleOfTrustFromFile(file) {
|
|
173
|
+
let outcome = false;
|
|
174
|
+
showSpinner(`Importing first circle of trust from ${file}...`);
|
|
175
|
+
fs.readFile(file, 'utf8', async (err, data) => {
|
|
176
|
+
if (err) throw err;
|
|
177
|
+
try {
|
|
178
|
+
const fileData = JSON.parse(data);
|
|
179
|
+
await frodo.saml2.circlesOfTrust.importFirstCircleOfTrust(fileData);
|
|
180
|
+
outcome = true;
|
|
181
|
+
succeedSpinner(`Imported first circle of trust from ${file}.`);
|
|
182
|
+
} catch (error) {
|
|
183
|
+
var _error$response2;
|
|
184
|
+
failSpinner(`Error importing first circle of trust from ${file}.`);
|
|
185
|
+
printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return outcome;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Import all SAML circles of trust from file
|
|
193
|
+
* @param {String} file Import file name
|
|
194
|
+
*/
|
|
195
|
+
export async function importCirclesOfTrustFromFile(file) {
|
|
196
|
+
let outcome = false;
|
|
197
|
+
showSpinner(`Importing circles of trust from ${file}...`);
|
|
198
|
+
fs.readFile(file, 'utf8', async (err, data) => {
|
|
199
|
+
if (err) throw err;
|
|
200
|
+
try {
|
|
201
|
+
const fileData = JSON.parse(data);
|
|
202
|
+
await frodo.saml2.circlesOfTrust.importCirclesOfTrust(fileData);
|
|
203
|
+
outcome = true;
|
|
204
|
+
succeedSpinner(`Imported circles of trust from ${file}.`);
|
|
205
|
+
} catch (error) {
|
|
206
|
+
var _error$response3;
|
|
207
|
+
failSpinner(`Error importing circles of trust from ${file}.`);
|
|
208
|
+
printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
return outcome;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Import all SAML circles of trust from all *.cot.saml.json files in the current directory
|
|
216
|
+
*/
|
|
217
|
+
export async function importCirclesOfTrustFromFiles() {
|
|
218
|
+
const errors = [];
|
|
219
|
+
try {
|
|
220
|
+
debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);
|
|
221
|
+
const names = fs.readdirSync('.');
|
|
222
|
+
const files = names.filter(name => name.toLowerCase().endsWith('.policy.authz.json'));
|
|
223
|
+
createProgressBar(files.length, 'Importing circles of trust...');
|
|
224
|
+
let total = 0;
|
|
225
|
+
for (const file of files) {
|
|
226
|
+
try {
|
|
227
|
+
const data = fs.readFileSync(file, 'utf8');
|
|
228
|
+
const fileData = JSON.parse(data);
|
|
229
|
+
const count = Object.keys(fileData.saml.cot).length;
|
|
230
|
+
total += count;
|
|
231
|
+
await frodo.saml2.circlesOfTrust.importCirclesOfTrust(fileData);
|
|
232
|
+
updateProgressBar(`Imported ${count} circles of trust from ${file}`);
|
|
233
|
+
} catch (error) {
|
|
234
|
+
errors.push(error);
|
|
235
|
+
updateProgressBar(`Error importing circles of trust from ${file}`);
|
|
236
|
+
printMessage(error, 'error');
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
stopProgressBar(`Imported ${total} circles of trust from ${files.length} files.`);
|
|
240
|
+
} catch (error) {
|
|
241
|
+
errors.push(error);
|
|
242
|
+
stopProgressBar(`Error importing circles of trust from files.`);
|
|
243
|
+
printMessage(error, 'error');
|
|
244
|
+
}
|
|
245
|
+
debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);
|
|
246
|
+
return 0 === errors.length;
|
|
247
|
+
}
|
|
33
248
|
//# sourceMappingURL=CirclesOfTrustOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CirclesOfTrustOps.js","names":["getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["// import { CircleOfTrustSkeleton } from \"@rockcarver/frodo-lib/types/api/ApiTypes\";\nimport { TypesRaw } from '@rockcarver/frodo-lib';\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n cotObj: TypesRaw.CircleOfTrustSkeleton\n): string {\n const description = `[${cotObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: TypesRaw.CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n"],"mappings":"AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqBA,CACnCC,MAAsC,EAC9B;EACR,MAAMC,WAAW,GAAI,IAAGD,MAAM,CAACE,GAAG,CAAC,YAAY,CAAE,GAAE;EACnD,OAAOD,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASE,gBAAgBA,CAAA,EAAW;EACzC,IAAIC,QAAQ,GAAG,EAAE;EACjBA,QAAQ,IAAI,4CAA4C;EACxDA,QAAQ,IAAI,0CAA0C;EACtD,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACL,MAAsC,EAAU;EAC5E,MAAMM,GAAG,GAAI,KAAIN,MAAM,CAACE,GAAI,MAC1BF,MAAM,CAACO,MAAM,KAAK,QAAQ,GACtB,6BAA6B,GAC7B,gBACL,MAAKP,MAAM,CAACQ,gBAAgB,CAC1BC,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACzCC,IAAI,CAAC,MAAM,CAAE,IAAG;EACnB,OAAON,GAAG;AACZ"}
|
|
1
|
+
{"version":3,"file":"CirclesOfTrustOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join","listCirclesOfTrust","long","outcome","cotList","saml2","circlesOfTrust","getCirclesOfTrust","error","sort","a","b","localeCompare","forEach","cot","table","push","toString","exportCircleOfTrustToFile","cotId","file","fileName","exportData","exportCircleOfTrust","message","exportCirclesOfTrustToFile","helper","utils","getRealmName","getRealm","exportCirclesOfTrust","exportCirclesOfTrustToFiles","errors","cots","length","name","importCircleOfTrustFromFile","readFile","err","data","fileData","JSON","parse","importCircleOfTrust","_error$response","response","importFirstCircleOfTrustFromFile","importFirstCircleOfTrust","_error$response2","importCirclesOfTrustFromFile","importCirclesOfTrust","_error$response3","importCirclesOfTrustFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","readFileSync","count","Object","keys","saml"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport type { CircleOfTrustSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport type { CirclesOfTrustExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(cotObj: CircleOfTrustSkeleton): string {\n const description = `[${cotObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false): Promise<boolean> {\n let outcome = false;\n let cotList = [];\n try {\n cotList = await frodo.saml2.circlesOfTrust.getCirclesOfTrust();\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n outcome = true;\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n outcome = true;\n }\n return outcome;\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrustToFile(\n cotId: string,\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);\n showSpinner(`Exporting ${cotId}...`);\n try {\n let fileName = getTypedFilename(cotId, 'cot.saml');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.saml2.circlesOfTrust.exportCircleOfTrust(\n cotId\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${cotId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${cotId}: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(\n file: string = null\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);\n showSpinner(`Exporting all circles of trust...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}CirclesOfTrust`,\n 'cot.saml'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.saml2.circlesOfTrust.exportCirclesOfTrust();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all circles of trust to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting circles of trust: ${error.message}`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);\n return outcome;\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles(): Promise<boolean> {\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: begin`);\n const errors = [];\n try {\n const cots: CircleOfTrustSkeleton[] =\n await frodo.saml2.circlesOfTrust.getCirclesOfTrust();\n createProgressBar(cots.length, 'Exporting circles of trust...');\n for (const cot of cots) {\n const file = getTypedFilename(cot._id, 'cot.saml');\n try {\n const exportData: CirclesOfTrustExportInterface =\n await frodo.saml2.circlesOfTrust.exportCircleOfTrust(cot._id);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${cot.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${cot.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting circles of trust to files`);\n }\n debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrustFromFile(\n cotId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing circle of trust ${cotId} from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await frodo.saml2.circlesOfTrust.importCircleOfTrust(cotId, fileData);\n outcome = true;\n succeedSpinner(`Imported circle of trust ${cotId} from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing circle of trust ${cotId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing first circle of trust from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await frodo.saml2.circlesOfTrust.importFirstCircleOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported first circle of trust from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing first circle of trust from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing circles of trust from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n await frodo.saml2.circlesOfTrust.importCirclesOfTrust(fileData);\n outcome = true;\n succeedSpinner(`Imported circles of trust from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing circles of trust from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing circles of trust...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: CirclesOfTrustExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.saml.cot).length;\n total += count;\n await frodo.saml2.circlesOfTrust.importCirclesOfTrust(fileData);\n updateProgressBar(`Imported ${count} circles of trust from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing circles of trust from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Imported ${total} circles of trust from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing circles of trust from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -1,16 +1,105 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
-
import {
|
|
3
|
-
import { failSpinner, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
3
|
+
import { createObjectTable, createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* List connection profiles
|
|
7
|
+
* @param {boolean} long Long list format with details
|
|
8
|
+
* @param {State} state library state
|
|
9
|
+
*/
|
|
10
|
+
export function listConnectionProfiles(long = false) {
|
|
11
|
+
const filename = frodo.conn.getConnectionProfilesPath();
|
|
12
|
+
try {
|
|
13
|
+
const data = fs.readFileSync(filename, 'utf8');
|
|
14
|
+
const connectionsData = JSON.parse(data);
|
|
15
|
+
if (Object.keys(connectionsData).length < 1) {
|
|
16
|
+
printMessage(`No connections defined yet in ${filename}`, 'info');
|
|
17
|
+
} else {
|
|
18
|
+
if (long) {
|
|
19
|
+
const table = createTable(['Host', 'Service Account', 'Username', 'Log API Key']);
|
|
20
|
+
Object.keys(connectionsData).forEach(c => {
|
|
21
|
+
table.push([c, connectionsData[c].svcacctName || connectionsData[c].svcacctId, connectionsData[c].username, connectionsData[c].logApiKey]);
|
|
22
|
+
});
|
|
23
|
+
printMessage(table.toString(), 'data');
|
|
24
|
+
} else {
|
|
25
|
+
Object.keys(connectionsData).forEach(c => {
|
|
26
|
+
printMessage(`${c}`, 'data');
|
|
27
|
+
});
|
|
28
|
+
// getUniqueNames(5, Object.keys(connectionsData));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
printMessage('Any unique substring of a saved host can be used as the value for host parameter in all commands', 'info');
|
|
32
|
+
}
|
|
33
|
+
} catch (e) {
|
|
34
|
+
printMessage(`No connections found in ${filename} (${e.message})`, 'error');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Describe connection profile
|
|
40
|
+
* @param {string} host Host URL or unique substring
|
|
41
|
+
* @param {boolean} showSecrets Whether secrets should be shown in clear text or not
|
|
42
|
+
*/
|
|
43
|
+
export async function describeConnectionProfile(host, showSecrets) {
|
|
44
|
+
debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);
|
|
45
|
+
const profile = await frodo.conn.getConnectionProfileByHost(host);
|
|
46
|
+
if (profile) {
|
|
47
|
+
debugMessage(profile);
|
|
48
|
+
const present = '[present]';
|
|
49
|
+
const jwk = profile.svcacctJwk;
|
|
50
|
+
if (!showSecrets) {
|
|
51
|
+
if (profile.password) profile.password = present;
|
|
52
|
+
if (profile.logApiSecret) profile.logApiSecret = present;
|
|
53
|
+
if (profile.svcacctJwk) profile['svcacctJwk'] = present;
|
|
54
|
+
}
|
|
55
|
+
if (!profile.username) {
|
|
56
|
+
delete profile.username;
|
|
57
|
+
delete profile.password;
|
|
58
|
+
}
|
|
59
|
+
if (!profile.logApiKey) {
|
|
60
|
+
delete profile.logApiKey;
|
|
61
|
+
delete profile.logApiSecret;
|
|
62
|
+
}
|
|
63
|
+
if (!profile.svcacctId) {
|
|
64
|
+
delete profile.svcacctId;
|
|
65
|
+
delete profile.svcacctJwk;
|
|
66
|
+
delete profile.svcacctName;
|
|
67
|
+
}
|
|
68
|
+
if (showSecrets && jwk) {
|
|
69
|
+
profile['svcacctJwk'] = 'see below';
|
|
70
|
+
}
|
|
71
|
+
if (!profile.authenticationService) {
|
|
72
|
+
delete profile.authenticationService;
|
|
73
|
+
}
|
|
74
|
+
const keyMap = {
|
|
75
|
+
tenant: 'Host',
|
|
76
|
+
username: 'Username',
|
|
77
|
+
password: 'Password',
|
|
78
|
+
logApiKey: 'Log API Key',
|
|
79
|
+
logApiSecret: 'Log API Secret',
|
|
80
|
+
authenticationService: 'Authentication Service',
|
|
81
|
+
authenticationHeaderOverrides: 'Authentication Header Overrides',
|
|
82
|
+
svcacctName: 'Service Account Name',
|
|
83
|
+
svcacctId: 'Service Account Id',
|
|
84
|
+
svcacctJwk: 'Service Account JWK'
|
|
85
|
+
};
|
|
86
|
+
const table = createObjectTable(profile, keyMap);
|
|
87
|
+
printMessage(table.toString(), 'data');
|
|
88
|
+
if (showSecrets && jwk) {
|
|
89
|
+
printMessage(jwk, 'data');
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
printMessage(`No connection profile ${host} found`);
|
|
93
|
+
}
|
|
94
|
+
debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);
|
|
95
|
+
}
|
|
7
96
|
export async function addExistingServiceAccount(serviceAccountId, privateKeyFile, validate) {
|
|
8
97
|
try {
|
|
9
98
|
const data = fs.readFileSync(privateKeyFile);
|
|
10
99
|
const jwk = JSON.parse(data.toString());
|
|
11
100
|
if (validate) {
|
|
12
101
|
showSpinner(`Validating service account ${serviceAccountId}...`);
|
|
13
|
-
const token = await getAccessTokenForServiceAccount(serviceAccountId, jwk);
|
|
102
|
+
const token = await frodo.login.getAccessTokenForServiceAccount(serviceAccountId, jwk);
|
|
14
103
|
if (token === null) {
|
|
15
104
|
failSpinner(`Failed to validate service account ${serviceAccountId}.`);
|
|
16
105
|
return false;
|
|
@@ -18,8 +107,8 @@ export async function addExistingServiceAccount(serviceAccountId, privateKeyFile
|
|
|
18
107
|
succeedSpinner(`Successfully validated service account ${serviceAccountId}.`);
|
|
19
108
|
}
|
|
20
109
|
}
|
|
21
|
-
state.
|
|
22
|
-
state.
|
|
110
|
+
state.setServiceAccountId(serviceAccountId);
|
|
111
|
+
state.setServiceAccountJwk(jwk);
|
|
23
112
|
return true;
|
|
24
113
|
} catch (err) {
|
|
25
114
|
failSpinner(`Failed to validate service account ${serviceAccountId}: ${err}.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.js","names":["fs","
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.js","names":["fs","frodo","state","createObjectTable","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","listConnectionProfiles","long","filename","conn","getConnectionProfilesPath","data","readFileSync","connectionsData","JSON","parse","Object","keys","length","table","forEach","c","push","svcacctName","svcacctId","username","logApiKey","toString","e","message","describeConnectionProfile","host","showSecrets","profile","getConnectionProfileByHost","present","jwk","svcacctJwk","password","logApiSecret","authenticationService","keyMap","tenant","authenticationHeaderOverrides","addExistingServiceAccount","serviceAccountId","privateKeyFile","validate","token","login","getAccessTokenForServiceAccount","setServiceAccountId","setServiceAccountJwk","err"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n * @param {State} state library state\n */\nexport function listConnectionProfiles(long = false) {\n const filename = frodo.conn.getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await frodo.conn.getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\nexport async function addExistingServiceAccount(\n serviceAccountId: string,\n privateKeyFile: string,\n validate: boolean\n): Promise<boolean> {\n try {\n const data = fs.readFileSync(privateKeyFile);\n const jwk = JSON.parse(data.toString());\n if (validate) {\n showSpinner(`Validating service account ${serviceAccountId}...`);\n const token = await frodo.login.getAccessTokenForServiceAccount(\n serviceAccountId,\n jwk\n );\n if (token === null) {\n failSpinner(`Failed to validate service account ${serviceAccountId}.`);\n return false;\n } else {\n succeedSpinner(\n `Successfully validated service account ${serviceAccountId}.`\n );\n }\n }\n state.setServiceAccountId(serviceAccountId);\n state.setServiceAccountJwk(jwk);\n return true;\n } catch (err) {\n failSpinner(\n `Failed to validate service account ${serviceAccountId}: ${err}.`\n );\n }\n return false;\n}\n"],"mappings":"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"}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
|
+
import { frodo } from '@rockcarver/frodo-lib';
|
|
1
2
|
import fs from 'fs';
|
|
2
|
-
import { EmailTemplate, ExportImportUtils } from '@rockcarver/frodo-lib';
|
|
3
3
|
import { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';
|
|
4
4
|
import { createProgressIndicator, updateProgressIndicator, stopProgressIndicator, printMessage, createTable, showSpinner, succeedSpinner, failSpinner, debugMessage } from '../utils/Console';
|
|
5
5
|
import wordwrap from './utils/Wordwrap';
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { cloneDeep } from './utils/OpsUtils';
|
|
8
|
+
const EMAIL_TEMPLATE_TYPE = frodo.email.template.EMAIL_TEMPLATE_TYPE;
|
|
8
9
|
const EMAIL_TEMPLATE_FILE_TYPE = 'template.email';
|
|
9
|
-
const {
|
|
10
|
-
EMAIL_TEMPLATE_TYPE,
|
|
11
|
-
getEmailTemplate,
|
|
12
|
-
getEmailTemplates,
|
|
13
|
-
putEmailTemplate
|
|
14
|
-
} = EmailTemplate;
|
|
15
|
-
const {
|
|
16
|
-
validateImport
|
|
17
|
-
} = ExportImportUtils;
|
|
18
10
|
const regexEmailTemplateType = new RegExp(`${EMAIL_TEMPLATE_TYPE}/`, 'g');
|
|
19
11
|
|
|
20
12
|
// use a function vs a template variable to avoid problems in loops
|
|
@@ -66,7 +58,7 @@ export function getTableRowMd(templateObj) {
|
|
|
66
58
|
export async function listEmailTemplates(long = false) {
|
|
67
59
|
let emailTemplates = [];
|
|
68
60
|
try {
|
|
69
|
-
emailTemplates = (await getEmailTemplates()).result;
|
|
61
|
+
emailTemplates = (await frodo.email.template.getEmailTemplates()).result;
|
|
70
62
|
} catch (error) {
|
|
71
63
|
printMessage(`Error retrieving email templates: ${error.message}`, 'error');
|
|
72
64
|
}
|
|
@@ -109,7 +101,7 @@ export async function exportEmailTemplateToFile(templateId, file) {
|
|
|
109
101
|
}
|
|
110
102
|
createProgressIndicator('determinate', 1, `Exporting ${templateId}`);
|
|
111
103
|
try {
|
|
112
|
-
const templateData = await getEmailTemplate(templateId);
|
|
104
|
+
const templateData = await frodo.email.template.getEmailTemplate(templateId);
|
|
113
105
|
updateProgressIndicator(`Writing file ${fileName}`);
|
|
114
106
|
const fileData = getFileDataTemplate();
|
|
115
107
|
fileData.emailTemplate[templateId] = templateData;
|
|
@@ -132,7 +124,7 @@ export async function exportEmailTemplatesToFile(file) {
|
|
|
132
124
|
}
|
|
133
125
|
try {
|
|
134
126
|
const fileData = getFileDataTemplate();
|
|
135
|
-
const response = await getEmailTemplates();
|
|
127
|
+
const response = await frodo.email.template.getEmailTemplates();
|
|
136
128
|
const templates = response.result;
|
|
137
129
|
createProgressIndicator('determinate', response.resultCount, 'Exporting email templates');
|
|
138
130
|
for (const template of templates) {
|
|
@@ -153,7 +145,7 @@ export async function exportEmailTemplatesToFile(file) {
|
|
|
153
145
|
*/
|
|
154
146
|
export async function exportEmailTemplatesToFiles() {
|
|
155
147
|
try {
|
|
156
|
-
const response = await getEmailTemplates();
|
|
148
|
+
const response = await frodo.email.template.getEmailTemplates();
|
|
157
149
|
const templates = response.result;
|
|
158
150
|
createProgressIndicator('determinate', response.resultCount, 'Exporting email templates');
|
|
159
151
|
for (const template of templates) {
|
|
@@ -183,12 +175,12 @@ export async function importEmailTemplateFromFile(templateId, file, raw = false)
|
|
|
183
175
|
fs.readFile(file, 'utf8', async (err, data) => {
|
|
184
176
|
if (err) throw err;
|
|
185
177
|
const fileData = JSON.parse(data);
|
|
186
|
-
if (raw || validateImport(fileData.meta)) {
|
|
178
|
+
if (raw || frodo.utils.impex.validateImport(fileData.meta)) {
|
|
187
179
|
createProgressIndicator('determinate', 1, `Importing ${templateId}`);
|
|
188
180
|
if (fileData.emailTemplate[templateId] || raw && fileData._id === templateId) {
|
|
189
181
|
try {
|
|
190
182
|
const emailTemplateData = raw ? s2sConvert(fileData) : fileData.emailTemplate[templateId];
|
|
191
|
-
await putEmailTemplate(templateId, emailTemplateData);
|
|
183
|
+
await frodo.email.template.putEmailTemplate(templateId, emailTemplateData);
|
|
192
184
|
updateProgressIndicator(`Importing ${templateId}`);
|
|
193
185
|
stopProgressIndicator(`Imported ${templateId}`);
|
|
194
186
|
} catch (putEmailTemplateError) {
|
|
@@ -213,14 +205,13 @@ export async function importEmailTemplatesFromFile(file) {
|
|
|
213
205
|
fs.readFile(file, 'utf8', async (err, data) => {
|
|
214
206
|
if (err) throw err;
|
|
215
207
|
const fileData = JSON.parse(data);
|
|
216
|
-
if (validateImport(fileData.meta)) {
|
|
208
|
+
if (frodo.utils.impex.validateImport(fileData.meta)) {
|
|
217
209
|
createProgressIndicator('determinate', Object.keys(fileData.emailTemplate).length, `Importing email templates`);
|
|
218
210
|
for (const id in fileData.emailTemplate) {
|
|
219
211
|
if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
|
|
220
212
|
const templateId = id.replace(regexEmailTemplateType, '');
|
|
221
213
|
try {
|
|
222
|
-
|
|
223
|
-
await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
214
|
+
await frodo.email.template.putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
224
215
|
updateProgressIndicator(`Imported ${templateId}`);
|
|
225
216
|
} catch (putEmailTemplateError) {
|
|
226
217
|
printMessage(`\nError importing ${templateId}`, 'error');
|
|
@@ -279,14 +270,14 @@ export async function importEmailTemplatesFromFiles(raw = false) {
|
|
|
279
270
|
for (const file of jsonFiles) {
|
|
280
271
|
const data = fs.readFileSync(file, 'utf8');
|
|
281
272
|
const fileData = JSON.parse(data);
|
|
282
|
-
if (raw && file.startsWith('emailTemplate-') || validateImport(fileData.meta)) {
|
|
273
|
+
if (raw && file.startsWith('emailTemplate-') || frodo.utils.impex.validateImport(fileData.meta)) {
|
|
283
274
|
let errors = 0;
|
|
284
275
|
if (raw) {
|
|
285
276
|
total++;
|
|
286
277
|
const templateId = getEmailTemplateIdFromFile(file);
|
|
287
278
|
try {
|
|
288
279
|
const templateData = s2sConvert(fileData);
|
|
289
|
-
await putEmailTemplate(templateId, templateData);
|
|
280
|
+
await frodo.email.template.putEmailTemplate(templateId, templateData);
|
|
290
281
|
} catch (putEmailTemplateError) {
|
|
291
282
|
var _putEmailTemplateErro;
|
|
292
283
|
errors += 1;
|
|
@@ -300,7 +291,7 @@ export async function importEmailTemplatesFromFiles(raw = false) {
|
|
|
300
291
|
if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
|
|
301
292
|
const templateId = id.replace(regexEmailTemplateType, '');
|
|
302
293
|
try {
|
|
303
|
-
await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
294
|
+
await frodo.email.template.putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
|
|
304
295
|
} catch (putEmailTemplateError) {
|
|
305
296
|
errors += 1;
|
|
306
297
|
printMessage(`\nError importing ${templateId}`, 'error');
|
|
@@ -326,13 +317,13 @@ export async function importFirstEmailTemplateFromFile(file, raw = false) {
|
|
|
326
317
|
fs.readFile(file, 'utf8', async (err, data) => {
|
|
327
318
|
if (err) throw err;
|
|
328
319
|
const fileData = JSON.parse(data);
|
|
329
|
-
if (raw && file.startsWith('emailTemplate-') || validateImport(fileData.meta)) {
|
|
320
|
+
if (raw && file.startsWith('emailTemplate-') || frodo.utils.impex.validateImport(fileData.meta)) {
|
|
330
321
|
showSpinner(`Importing first email template`);
|
|
331
322
|
if (raw) {
|
|
332
323
|
const templateId = getEmailTemplateIdFromFile(file);
|
|
333
324
|
try {
|
|
334
325
|
const templateData = s2sConvert(fileData);
|
|
335
|
-
await putEmailTemplate(templateId, templateData);
|
|
326
|
+
await frodo.email.template.putEmailTemplate(templateId, templateData);
|
|
336
327
|
succeedSpinner(`Imported ${templateId}`);
|
|
337
328
|
} catch (putEmailTemplateError) {
|
|
338
329
|
var _putEmailTemplateErro2;
|
|
@@ -343,7 +334,7 @@ export async function importFirstEmailTemplateFromFile(file, raw = false) {
|
|
|
343
334
|
for (const id in fileData.emailTemplate) {
|
|
344
335
|
if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
|
|
345
336
|
try {
|
|
346
|
-
await putEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
|
|
337
|
+
await frodo.email.template.putEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
|
|
347
338
|
succeedSpinner(`Imported ${id}`);
|
|
348
339
|
} catch (putEmailTemplateError) {
|
|
349
340
|
var _putEmailTemplateErro3;
|