@openziti/ziti-console-lib 0.3.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/README.md +24 -0
- package/assets/animations/ConstructionZiggy.json +15233 -0
- package/assets/animations/HelloZiggy.json +10008 -0
- package/assets/animations/SmartZiggy.json +9488 -0
- package/assets/components/add.html +1 -0
- package/assets/components/api.html +12 -0
- package/assets/components/customtags.html +4 -0
- package/assets/components/line.html +1 -0
- package/assets/components/noitems.html +1 -0
- package/assets/components/save.html +4 -0
- package/assets/components/search.html +8 -0
- package/assets/components/tabIdentities.html +6 -0
- package/assets/components/tabPolicies.html +7 -0
- package/assets/components/tabRouters.html +5 -0
- package/assets/components/tabServers.html +4 -0
- package/assets/components/tabServices.html +5 -0
- package/assets/components/tabSessions.html +4 -0
- package/assets/data/mail.json +0 -0
- package/assets/data/services.json +6 -0
- package/assets/data/settings.json +25 -0
- package/assets/data/site.json +31 -0
- package/assets/data/tags.json +7 -0
- package/assets/data/templates.json +1 -0
- package/assets/fonts/OpenSans-Regular.ttf +0 -0
- package/assets/fonts/OpenSans-Regular.woff +0 -0
- package/assets/fonts/OpenSans-Regular.woff2 +0 -0
- package/assets/fonts/RussoOne-Regular.ttf +0 -0
- package/assets/fonts/RussoOne-Regular.woff +0 -0
- package/assets/fonts/RussoOne-Regular.woff2 +0 -0
- package/assets/fonts/zac.eot +0 -0
- package/assets/fonts/zac.svg +55 -0
- package/assets/fonts/zac.ttf +0 -0
- package/assets/fonts/zac.woff +0 -0
- package/assets/fonts/zac.woff2 +0 -0
- package/assets/html/api-sessions.htm +153 -0
- package/assets/html/attributes.htm +260 -0
- package/assets/html/auth-policies.htm +410 -0
- package/assets/html/cas.htm +445 -0
- package/assets/html/config-types.htm +168 -0
- package/assets/html/configs.htm +238 -0
- package/assets/html/deprecated/fabric-links.htm +336 -0
- package/assets/html/deprecated/fabric-routers.htm +72 -0
- package/assets/html/deprecated/fabric-services.htm +494 -0
- package/assets/html/identities.htm +934 -0
- package/assets/html/index.htm +161 -0
- package/assets/html/jwt-signers.htm +260 -0
- package/assets/html/known.htm +115 -0
- package/assets/html/login.htm +131 -0
- package/assets/html/organization.htm +223 -0
- package/assets/html/posture-checks.htm +393 -0
- package/assets/html/profile.htm +52 -0
- package/assets/html/recipes.htm +455 -0
- package/assets/html/router-policies.htm +168 -0
- package/assets/html/routers.htm +323 -0
- package/assets/html/servers.htm +236 -0
- package/assets/html/service-policies.htm +197 -0
- package/assets/html/service-router-policies.htm +170 -0
- package/assets/html/services.htm +634 -0
- package/assets/html/sessions.htm +157 -0
- package/assets/html/settings.htm +146 -0
- package/assets/html/terminators.htm +244 -0
- package/assets/html/transit-routers.htm +173 -0
- package/assets/icons/android-icon-192x192.png +0 -0
- package/assets/icons/apple-icon-114x114.png +0 -0
- package/assets/icons/apple-icon-120x120.png +0 -0
- package/assets/icons/apple-icon-144x144.png +0 -0
- package/assets/icons/apple-icon-152x152.png +0 -0
- package/assets/icons/apple-icon-180x180.png +0 -0
- package/assets/icons/apple-icon-57x57.png +0 -0
- package/assets/icons/apple-icon-60x60.png +0 -0
- package/assets/icons/apple-icon-72x72.png +0 -0
- package/assets/icons/apple-icon-76x76.png +0 -0
- package/assets/icons/apple-icon-precomposed.png +0 -0
- package/assets/icons/favicon-16x16.png +0 -0
- package/assets/icons/favicon-32x32.png +0 -0
- package/assets/icons/favicon-96x96.png +0 -0
- package/assets/icons/favicon.ico +0 -0
- package/assets/icons/ms-icon-144x144.png +0 -0
- package/assets/images/Filter.png +0 -0
- package/assets/images/Login.jpg +0 -0
- package/assets/images/SortDown.png +0 -0
- package/assets/images/SortUp.png +0 -0
- package/assets/images/android.png +0 -0
- package/assets/images/anywhere.png +0 -0
- package/assets/images/apple.png +0 -0
- package/assets/images/bug.png +0 -0
- package/assets/images/check.png +0 -0
- package/assets/images/error.png +0 -0
- package/assets/images/info.png +0 -0
- package/assets/images/linux.png +0 -0
- package/assets/images/other.png +0 -0
- package/assets/images/scrollbar.png +0 -0
- package/assets/images/select.png +0 -0
- package/assets/images/success.png +0 -0
- package/assets/images/visualizer/ER.png +0 -0
- package/assets/images/visualizer/Routers.png +0 -0
- package/assets/images/visualizer/er_error.png +0 -0
- package/assets/images/visualizer/error_er.png +0 -0
- package/assets/images/visualizer/host-error.png +0 -0
- package/assets/images/visualizer/host.png +0 -0
- package/assets/images/visualizer/host_unregistered.png +0 -0
- package/assets/images/visualizer/link-cut.png +0 -0
- package/assets/images/visualizer/service.png +0 -0
- package/assets/images/visualizer/unregistered.png +0 -0
- package/assets/images/warning.png +0 -0
- package/assets/images/windows.png +0 -0
- package/assets/languages/en-us.json +330 -0
- package/assets/resources/avatar/man.svg +78 -0
- package/assets/resources/avatar/woman.svg +96 -0
- package/assets/resources/icon/analysis.svg +104 -0
- package/assets/resources/icon/appwans.svg +20 -0
- package/assets/resources/icon/architecture.svg +1 -0
- package/assets/resources/icon/bike.svg +94 -0
- package/assets/resources/icon/bus.svg +64 -0
- package/assets/resources/icon/cas.svg +46 -0
- package/assets/resources/icon/clusters.svg +28 -0
- package/assets/resources/icon/computer.svg +1 -0
- package/assets/resources/icon/data.svg +1 -0
- package/assets/resources/icon/delivery-truck.svg +1 -0
- package/assets/resources/icon/explosion.svg +81 -0
- package/assets/resources/icon/fabricServices.svg +31 -0
- package/assets/resources/icon/fabrics.svg +136 -0
- package/assets/resources/icon/front.svg +83 -0
- package/assets/resources/icon/gateway.svg +49 -0
- package/assets/resources/icon/gear.svg +122 -0
- package/assets/resources/icon/house.svg +72 -0
- package/assets/resources/icon/language.svg +1 -0
- package/assets/resources/icon/objective.svg +55 -0
- package/assets/resources/icon/route.svg +97 -0
- package/assets/resources/icon/routers.svg +27 -0
- package/assets/resources/icon/startup.svg +112 -0
- package/assets/resources/icon/switch.svg +101 -0
- package/assets/scripts/chart.min.js +7 -0
- package/assets/scripts/commands.js +112 -0
- package/assets/scripts/components/codemirror/codemirror.css +356 -0
- package/assets/scripts/components/codemirror/codemirror.js +9741 -0
- package/assets/scripts/components/codemirror/modes/addons/closetags.js +200 -0
- package/assets/scripts/components/codemirror/modes/addons/colorize.js +40 -0
- package/assets/scripts/components/codemirror/modes/addons/css-hint.js +66 -0
- package/assets/scripts/components/codemirror/modes/addons/formatting.js +124 -0
- package/assets/scripts/components/codemirror/modes/addons/html-hint.js +366 -0
- package/assets/scripts/components/codemirror/modes/addons/javascript-hint.js +159 -0
- package/assets/scripts/components/codemirror/modes/addons/show-hint.css +36 -0
- package/assets/scripts/components/codemirror/modes/addons/show-hint.js +482 -0
- package/assets/scripts/components/codemirror/modes/css.js +831 -0
- package/assets/scripts/components/codemirror/modes/htmlmixed.js +152 -0
- package/assets/scripts/components/codemirror/modes/javascript.js +930 -0
- package/assets/scripts/components/codemirror/modes/xml.js +413 -0
- package/assets/scripts/components/column.css +184 -0
- package/assets/scripts/components/column.js +165 -0
- package/assets/scripts/components/flows.css +0 -0
- package/assets/scripts/components/flows.js +48 -0
- package/assets/scripts/components/leaflet/images/layers-2x.png +0 -0
- package/assets/scripts/components/leaflet/images/layers.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-icon-2x.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-icon.png +0 -0
- package/assets/scripts/components/leaflet/images/marker-shadow.png +0 -0
- package/assets/scripts/components/leaflet/leaflet-src.esm.js +13926 -0
- package/assets/scripts/components/leaflet/leaflet-src.esm.js.map +1 -0
- package/assets/scripts/components/leaflet/leaflet-src.js +14020 -0
- package/assets/scripts/components/leaflet/leaflet-src.js.map +1 -0
- package/assets/scripts/components/leaflet/leaflet.css +640 -0
- package/assets/scripts/components/leaflet/leaflet.js +5 -0
- package/assets/scripts/components/leaflet/leaflet.js.map +1 -0
- package/assets/scripts/components/moment.js +4602 -0
- package/assets/scripts/components/multiselect.js +333 -0
- package/assets/scripts/components/network/img/network/acceptDeleteIcon.png +0 -0
- package/assets/scripts/components/network/img/network/addNodeIcon.png +0 -0
- package/assets/scripts/components/network/img/network/backIcon.png +0 -0
- package/assets/scripts/components/network/img/network/connectIcon.png +0 -0
- package/assets/scripts/components/network/img/network/cross.png +0 -0
- package/assets/scripts/components/network/img/network/cross2.png +0 -0
- package/assets/scripts/components/network/img/network/deleteIcon.png +0 -0
- package/assets/scripts/components/network/img/network/downArrow.png +0 -0
- package/assets/scripts/components/network/img/network/editIcon.png +0 -0
- package/assets/scripts/components/network/img/network/leftArrow.png +0 -0
- package/assets/scripts/components/network/img/network/minus.png +0 -0
- package/assets/scripts/components/network/img/network/plus.png +0 -0
- package/assets/scripts/components/network/img/network/rightArrow.png +0 -0
- package/assets/scripts/components/network/img/network/upArrow.png +0 -0
- package/assets/scripts/components/network/img/network/zoomExtends.png +0 -0
- package/assets/scripts/components/network/types/DOMutil.d.ts +99 -0
- package/assets/scripts/components/network/types/index-legacy-bundle.d.ts +4 -0
- package/assets/scripts/components/network/types/index-legacy-bundle.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-legacy.d.ts +24 -0
- package/assets/scripts/components/network/types/index-legacy.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-peer.d.ts +11 -0
- package/assets/scripts/components/network/types/index-peer.d.ts.map +1 -0
- package/assets/scripts/components/network/types/index-standalone.d.ts +7 -0
- package/assets/scripts/components/network/types/index-standalone.d.ts.map +1 -0
- package/assets/scripts/components/network/types/module/hammer.d.ts +2 -0
- package/assets/scripts/components/network/types/module/moment.d.ts +2 -0
- package/assets/scripts/components/network/types/network/Images.d.ts +2 -0
- package/assets/scripts/components/network/types/network/Network.d.ts +1030 -0
- package/assets/scripts/components/network/types/network/dotparser.d.ts +2 -0
- package/assets/scripts/components/network/types/network/gephiParser.d.ts +80 -0
- package/assets/scripts/components/network/types/network/gephiParser.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-dynamic.d.ts +55 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-dynamic.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-static.d.ts +37 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/bezier-edge-static.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/cubic-bezier-edge.d.ts +32 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/cubic-bezier-edge.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/index.d.ts +10 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/index.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/straight-edge.d.ts +26 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/straight-edge.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/bezier-edge-base.d.ts +68 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/bezier-edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/cubic-bezier-edge-base.d.ts +38 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/cubic-bezier-edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/edge-base.d.ts +248 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/edge-base.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/end-points.d.ts +58 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/end-points.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/types.d.ts +196 -0
- package/assets/scripts/components/network/types/network/modules/components/edges/util/types.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/modules/layout-engine/index.d.ts +32 -0
- package/assets/scripts/components/network/types/network/modules/layout-engine/index.d.ts.map +1 -0
- package/assets/scripts/components/network/types/network/options.d.ts +2 -0
- package/assets/scripts/components/network/types/network/shapes.d.ts +122 -0
- package/assets/scripts/components/network/types/network/shapes.d.ts.map +1 -0
- package/assets/scripts/components/network/vis-network.css +716 -0
- package/assets/scripts/components/network/vis-network.esm.js +58974 -0
- package/assets/scripts/components/network/vis-network.esm.js.map +1 -0
- package/assets/scripts/components/network/vis-network.esm.min.js +53 -0
- package/assets/scripts/components/network/vis-network.esm.min.js.map +1 -0
- package/assets/scripts/components/network/vis-network.js +58994 -0
- package/assets/scripts/components/network/vis-network.js.map +1 -0
- package/assets/scripts/components/network/vis-network.min.css +1 -0
- package/assets/scripts/components/network/vis-network.min.js +53 -0
- package/assets/scripts/components/network/vis-network.min.js.map +1 -0
- package/assets/scripts/components/qrcode.min.js +1 -0
- package/assets/scripts/components/resources.js +26 -0
- package/assets/scripts/components/selector-new.js +300 -0
- package/assets/scripts/components/selector.js +300 -0
- package/assets/scripts/components/spectrum.js +2323 -0
- package/assets/scripts/components/timezone.js +1545 -0
- package/assets/scripts/components/uploader.js +74 -0
- package/assets/scripts/context.js +177 -0
- package/assets/scripts/dragging.js +58 -0
- package/assets/scripts/forms/forms.js +74 -0
- package/assets/scripts/forms/host.v1.htm +43 -0
- package/assets/scripts/forms/intercept.v1.htm +0 -0
- package/assets/scripts/forms/schema.js +693 -0
- package/assets/scripts/growler.js +133 -0
- package/assets/scripts/header.js +163 -0
- package/assets/scripts/jquery-3.6.3.min.js +2 -0
- package/assets/scripts/jquery.datetimepicker.js +2930 -0
- package/assets/scripts/locale.js +47 -0
- package/assets/scripts/modal.js +65 -0
- package/assets/scripts/model/data.js +558 -0
- package/assets/scripts/model/fabric.js +55 -0
- package/assets/scripts/model/fabricServices.js +45 -0
- package/assets/scripts/model/known.js +43 -0
- package/assets/scripts/model/links.js +44 -0
- package/assets/scripts/model/routers.js +51 -0
- package/assets/scripts/model/series.js +70 -0
- package/assets/scripts/model/sessions.js +61 -0
- package/assets/scripts/model/settings.js +60 -0
- package/assets/scripts/model/summary.js +49 -0
- package/assets/scripts/model/tags.js +330 -0
- package/assets/scripts/model/templates.js +42 -0
- package/assets/scripts/model/user.js +40 -0
- package/assets/scripts/restrictions.js +34 -0
- package/assets/scripts/service.js +76 -0
- package/assets/scripts/validation-tools.js +5119 -0
- package/assets/scripts/ziti.js +372 -0
- package/assets/styles/chart.min.css +1 -0
- package/assets/styles/dark.css +52 -0
- package/assets/styles/datetimepicker.css +1 -0
- package/assets/styles/forms.css +521 -0
- package/assets/styles/global.scss +890 -0
- package/assets/styles/growler.css +190 -0
- package/assets/styles/header.css +232 -0
- package/assets/styles/icons.css +160 -0
- package/assets/styles/navigation.css +183 -0
- package/assets/styles/select2.css +481 -0
- package/assets/styles/spectrum.css +507 -0
- package/assets/styles/tables.css +424 -0
- package/assets/styles/tooltip.css +134 -0
- package/assets/styles/ziti.css +3216 -0
- package/assets/svgs/Advanced.svg +89 -0
- package/assets/svgs/ArrowDown.svg +15 -0
- package/assets/svgs/ArrowDownDark.svg +15 -0
- package/assets/svgs/Confirm_Trash.svg +42 -0
- package/assets/svgs/DownloadKey.svg +50 -0
- package/assets/svgs/Filter.svg +13 -0
- package/assets/svgs/Growl_Bug.svg +47 -0
- package/assets/svgs/Growl_Error.svg +41 -0
- package/assets/svgs/Growl_Info.svg +45 -0
- package/assets/svgs/Growl_Success.svg +34 -0
- package/assets/svgs/Growl_Warning.svg +44 -0
- package/assets/svgs/MainMenuBlankUser.svg +14 -0
- package/assets/svgs/MainMenuNetworks.svg +37 -0
- package/assets/svgs/MainMenuNotifications.svg +32 -0
- package/assets/svgs/MainMenuOrg.svg +68 -0
- package/assets/svgs/MainMenuPlus.svg +13 -0
- package/assets/svgs/MainMenuSearch.svg +22 -0
- package/assets/svgs/MainMenuSupport.svg +417 -0
- package/assets/svgs/No_Clients.svg +94 -0
- package/assets/svgs/No_Plus.svg +30 -0
- package/assets/svgs/No_Routers.svg +56 -0
- package/assets/svgs/Resize.svg +33 -0
- package/assets/svgs/Simple.svg +62 -0
- package/assets/svgs/appwans.svg +20 -0
- package/assets/svgs/cas.svg +46 -0
- package/assets/svgs/cert.svg +69 -0
- package/assets/svgs/clear.svg +13 -0
- package/assets/svgs/close.svg +14 -0
- package/assets/svgs/clusters.svg +28 -0
- package/assets/svgs/copy.svg +64 -0
- package/assets/svgs/dashboard.svg +32 -0
- package/assets/svgs/dial.svg +83 -0
- package/assets/svgs/docs.svg +95 -0
- package/assets/svgs/downloads.svg +74 -0
- package/assets/svgs/fabricServices.svg +31 -0
- package/assets/svgs/fabrics.svg +134 -0
- package/assets/svgs/gateways.svg +49 -0
- package/assets/svgs/heart.svg +1 -0
- package/assets/svgs/ids.svg +20 -0
- package/assets/svgs/infoicon.svg +14 -0
- package/assets/svgs/lock.svg +12 -0
- package/assets/svgs/minus.svg +11 -0
- package/assets/svgs/nodata.svg +27 -0
- package/assets/svgs/qr.svg +56 -0
- package/assets/svgs/refresh.svg +24 -0
- package/assets/svgs/routers.svg +31 -0
- package/assets/svgs/select.svg +18 -0
- package/assets/svgs/services.svg +19 -0
- package/assets/svgs/settings.svg +1 -0
- package/assets/svgs/upload.svg +55 -0
- package/assets/templates/footer.htm +183 -0
- package/assets/templates/header.htm +298 -0
- package/assets/vectors/certificates.svg +1 -0
- package/assets/vectors/change.svg +1 -0
- package/assets/vectors/configuration.svg +2 -0
- package/assets/vectors/customize.svg +1 -0
- package/assets/vectors/dashboard.svg +1 -0
- package/assets/vectors/edgepolicies.svg +2 -0
- package/assets/vectors/globe.svg +63 -0
- package/assets/vectors/help.svg +48 -0
- package/assets/vectors/identity.svg +1 -0
- package/assets/vectors/notify.svg +1 -0
- package/assets/vectors/plus.svg +1 -0
- package/assets/vectors/posture.svg +1 -0
- package/assets/vectors/profile.svg +1 -0
- package/assets/vectors/router.svg +1 -0
- package/assets/vectors/routerpolicies.svg +1 -0
- package/assets/vectors/schema.svg +1 -0
- package/assets/vectors/server (1).svg +293 -0
- package/assets/vectors/servers.svg +103 -0
- package/assets/vectors/servicepolicy.svg +1 -0
- package/assets/vectors/services.svg +126 -0
- package/assets/vectors/settings.svg +130 -0
- package/assets/vectors/terminators.svg +1 -0
- package/assets/vectors/transitrouter.svg +1 -0
- package/esm2022/lib/app.initializer.mjs +24 -0
- package/esm2022/lib/features/card/card.component.mjs +29 -0
- package/esm2022/lib/features/card-list/card-list.component.mjs +50 -0
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +239 -0
- package/esm2022/lib/features/confirm/confirm.component.mjs +59 -0
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +92 -0
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +77 -0
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +47 -0
- package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +46 -0
- package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +124 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +269 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +94 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +38 -0
- package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +34 -0
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +66 -0
- package/esm2022/lib/features/data-table/data-table.component.mjs +848 -0
- package/esm2022/lib/features/data-table/data-table.service.mjs +99 -0
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +95 -0
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +27 -0
- package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +30 -0
- package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +35 -0
- package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +73 -0
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +131 -0
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +169 -0
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +51 -0
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +74 -0
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +122 -0
- package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +72 -0
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +98 -0
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +180 -0
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +104 -0
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +72 -0
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +119 -0
- package/esm2022/lib/features/extendable/extendable.component.mjs +56 -0
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +50 -0
- package/esm2022/lib/features/json-view/json-view.component.mjs +197 -0
- package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +139 -0
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +48 -0
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +21 -0
- package/esm2022/lib/features/messaging/growler.component.mjs +63 -0
- package/esm2022/lib/features/messaging/growler.model.mjs +24 -0
- package/esm2022/lib/features/messaging/growler.module.mjs +35 -0
- package/esm2022/lib/features/messaging/growler.service.mjs +72 -0
- package/esm2022/lib/features/messaging/logger.service.mjs +175 -0
- package/esm2022/lib/features/no-items/no-items.component.mjs +47 -0
- package/esm2022/lib/features/overrides/overrides.component.mjs +119 -0
- package/esm2022/lib/features/overrides/overrides.service.mjs +115 -0
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +91 -0
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +223 -0
- package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +150 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +188 -0
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +131 -0
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +72 -0
- package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +55 -0
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +96 -0
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +322 -0
- package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +144 -0
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +172 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +240 -0
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +453 -0
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +680 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +252 -0
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +214 -0
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +143 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +87 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +62 -0
- package/esm2022/lib/features/side-modal/side-modal.component.mjs +46 -0
- package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +17 -0
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +55 -0
- package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +128 -0
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +292 -0
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +588 -0
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +370 -0
- package/esm2022/lib/features/wrappers/node-wrapper.service.mjs +51 -0
- package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +92 -0
- package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +147 -0
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +937 -0
- package/esm2022/lib/models/config.mjs +9 -0
- package/esm2022/lib/models/edge-router.mjs +13 -0
- package/esm2022/lib/models/identity.mjs +34 -0
- package/esm2022/lib/models/service-policy.mjs +12 -0
- package/esm2022/lib/models/service.mjs +12 -0
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +102 -0
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +246 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +149 -0
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +361 -0
- package/esm2022/lib/pages/identities/identities-page.component.mjs +233 -0
- package/esm2022/lib/pages/identities/identities-page.service.mjs +498 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +132 -0
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +457 -0
- package/esm2022/lib/pages/services/services-page.component.mjs +141 -0
- package/esm2022/lib/pages/services/services-page.service.mjs +215 -0
- package/esm2022/lib/safe.pipe.mjs +19 -0
- package/esm2022/lib/services/console-events.service.mjs +32 -0
- package/esm2022/lib/services/csv-download.service.mjs +92 -0
- package/esm2022/lib/services/deactivate-guard.service.mjs +18 -0
- package/esm2022/lib/services/login-service.class.mjs +28 -0
- package/esm2022/lib/services/node-data.service.mjs +292 -0
- package/esm2022/lib/services/noop-login.service.mjs +45 -0
- package/esm2022/lib/services/schema.service.mjs +808 -0
- package/esm2022/lib/services/settings-service.class.mjs +131 -0
- package/esm2022/lib/services/settings.service.mjs +193 -0
- package/esm2022/lib/services/tab-name.service.mjs +65 -0
- package/esm2022/lib/services/validation.service.mjs +124 -0
- package/esm2022/lib/services/ziti-controller-data.service.mjs +260 -0
- package/esm2022/lib/services/ziti-data.service.mjs +54 -0
- package/esm2022/lib/services/ziti-domain-controller.service.mjs +3 -0
- package/esm2022/lib/shared/list-page-component.class.mjs +145 -0
- package/esm2022/lib/shared/list-page-service.class.mjs +151 -0
- package/esm2022/lib/version.mjs +4 -0
- package/esm2022/lib/zac-routing.module.mjs +41 -0
- package/esm2022/lib/ziti-console-lib.module.mjs +364 -0
- package/esm2022/lib/ziti-console.constants.mjs +19 -0
- package/esm2022/openziti-ziti-console-lib.mjs +5 -0
- package/esm2022/public-api.mjs +71 -0
- package/fesm2022/openziti-ziti-console-lib.mjs +15813 -0
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/app.initializer.d.ts +3 -0
- package/lib/app.initializer.d.ts.map +1 -0
- package/lib/features/card/card.component.d.ts +11 -0
- package/lib/features/card/card.component.d.ts.map +1 -0
- package/lib/features/card-list/card-list.component.d.ts +23 -0
- package/lib/features/card-list/card-list.component.d.ts.map +1 -0
- package/lib/features/config-editor/config-editor.component.d.ts +39 -0
- package/lib/features/config-editor/config-editor.component.d.ts.map +1 -0
- package/lib/features/confirm/confirm.component.d.ts +23 -0
- package/lib/features/confirm/confirm.component.d.ts.map +1 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +31 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +1 -0
- package/lib/features/custom-tags/custom-tags.component.d.ts +20 -0
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts +16 -0
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +19 -0
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +1 -0
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts +22 -0
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts +52 -0
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts +27 -0
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts +19 -0
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts.map +1 -0
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts +15 -0
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts.map +1 -0
- package/lib/features/data-table/data-table-filter.service.d.ts +24 -0
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -0
- package/lib/features/data-table/data-table.component.d.ts +154 -0
- package/lib/features/data-table/data-table.component.d.ts.map +1 -0
- package/lib/features/data-table/data-table.service.d.ts +20 -0
- package/lib/features/data-table/data-table.service.d.ts.map +1 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +22 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -0
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts +10 -0
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts.map +1 -0
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts +15 -0
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts.map +1 -0
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts +15 -0
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts +19 -0
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +26 -0
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +45 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts +14 -0
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/object/object.component.d.ts +26 -0
- package/lib/features/dynamic-widgets/object/object.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +21 -0
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +58 -0
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +23 -0
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +20 -0
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +23 -0
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -0
- package/lib/features/extendable/extendable.component.d.ts +15 -0
- package/lib/features/extendable/extendable.component.d.ts.map +1 -0
- package/lib/features/extendable/extensions-noop.service.d.ts +31 -0
- package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -0
- package/lib/features/json-view/json-view.component.d.ts +37 -0
- package/lib/features/json-view/json-view.component.d.ts.map +1 -0
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts +35 -0
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts.map +1 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +13 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -0
- package/lib/features/loading-indicator/loading-indicator.component.d.ts +9 -0
- package/lib/features/loading-indicator/loading-indicator.component.d.ts.map +1 -0
- package/lib/features/messaging/growler.component.d.ts +19 -0
- package/lib/features/messaging/growler.component.d.ts.map +1 -0
- package/lib/features/messaging/growler.model.d.ts +8 -0
- package/lib/features/messaging/growler.model.d.ts.map +1 -0
- package/lib/features/messaging/growler.module.d.ts +10 -0
- package/lib/features/messaging/growler.module.d.ts.map +1 -0
- package/lib/features/messaging/growler.service.d.ts +18 -0
- package/lib/features/messaging/growler.service.d.ts.map +1 -0
- package/lib/features/messaging/logger.service.d.ts +27 -0
- package/lib/features/messaging/logger.service.d.ts.map +1 -0
- package/lib/features/no-items/no-items.component.d.ts +19 -0
- package/lib/features/no-items/no-items.component.d.ts.map +1 -0
- package/lib/features/overrides/overrides.component.d.ts +33 -0
- package/lib/features/overrides/overrides.component.d.ts.map +1 -0
- package/lib/features/overrides/overrides.service.d.ts +18 -0
- package/lib/features/overrides/overrides.service.d.ts.map +1 -0
- package/lib/features/preview-list/preview-list.component.d.ts +24 -0
- package/lib/features/preview-list/preview-list.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +52 -0
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts +33 -0
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +45 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts +29 -0
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +22 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts +15 -0
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts +23 -0
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +70 -0
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts +20 -0
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts +39 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/service-form.component.d.ts +62 -0
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/service-form.service.d.ts +96 -0
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +140 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +58 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +37 -0
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -0
- package/lib/features/qr-code/qr-code.component.d.ts +40 -0
- package/lib/features/qr-code/qr-code.component.d.ts.map +1 -0
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts +27 -0
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts.map +1 -0
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts +13 -0
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts.map +1 -0
- package/lib/features/side-modal/side-modal.component.d.ts +15 -0
- package/lib/features/side-modal/side-modal.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts +7 -0
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts +16 -0
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts.map +1 -0
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts +34 -0
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +1 -0
- package/lib/features/tag-selector/tag-selector.component.d.ts +59 -0
- package/lib/features/tag-selector/tag-selector.component.d.ts.map +1 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +53 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +1 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts +21 -0
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +1 -0
- package/lib/features/wrappers/node-wrapper.service.d.ts +24 -0
- package/lib/features/wrappers/node-wrapper.service.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts +38 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper.component.d.ts +31 -0
- package/lib/features/wrappers/zac-wrapper.component.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts +56 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -0
- package/lib/models/config.d.ts +6 -0
- package/lib/models/config.d.ts.map +1 -0
- package/lib/models/edge-router.d.ts +10 -0
- package/lib/models/edge-router.d.ts.map +1 -0
- package/lib/models/identity.d.ts +16 -0
- package/lib/models/identity.d.ts.map +1 -0
- package/lib/models/service-policy.d.ts +9 -0
- package/lib/models/service-policy.d.ts.map +1 -0
- package/lib/models/service.d.ts +9 -0
- package/lib/models/service.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.component.d.ts +29 -0
- package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -0
- package/lib/pages/configurations/configurations-page.service.d.ts +78 -0
- package/lib/pages/configurations/configurations-page.service.d.ts.map +1 -0
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts +38 -0
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -0
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +47 -0
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.component.d.ts +44 -0
- package/lib/pages/identities/identities-page.component.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.service.d.ts +54 -0
- package/lib/pages/identities/identities-page.service.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.component.d.ts +36 -0
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts +63 -0
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +1 -0
- package/lib/pages/services/services-page.component.d.ts +37 -0
- package/lib/pages/services/services-page.component.d.ts.map +1 -0
- package/lib/pages/services/services-page.service.d.ts +46 -0
- package/lib/pages/services/services-page.service.d.ts.map +1 -0
- package/lib/safe.pipe.d.ts +11 -0
- package/lib/safe.pipe.d.ts.map +1 -0
- package/lib/services/console-events.service.d.ts +12 -0
- package/lib/services/console-events.service.d.ts.map +1 -0
- package/lib/services/csv-download.service.d.ts +11 -0
- package/lib/services/csv-download.service.d.ts.map +1 -0
- package/lib/services/deactivate-guard.service.d.ts +14 -0
- package/lib/services/deactivate-guard.service.d.ts.map +1 -0
- package/lib/services/login-service.class.d.ts +22 -0
- package/lib/services/login-service.class.d.ts.map +1 -0
- package/lib/services/node-data.service.d.ts +32 -0
- package/lib/services/node-data.service.d.ts.map +1 -0
- package/lib/services/noop-login.service.d.ts +23 -0
- package/lib/services/noop-login.service.d.ts.map +1 -0
- package/lib/services/schema.service.d.ts +63 -0
- package/lib/services/schema.service.d.ts.map +1 -0
- package/lib/services/settings-service.class.d.ts +35 -0
- package/lib/services/settings-service.class.d.ts.map +1 -0
- package/lib/services/settings.service.d.ts +18 -0
- package/lib/services/settings.service.d.ts.map +1 -0
- package/lib/services/tab-name.service.d.ts +20 -0
- package/lib/services/tab-name.service.d.ts.map +1 -0
- package/lib/services/validation.service.d.ts +13 -0
- package/lib/services/validation.service.d.ts.map +1 -0
- package/lib/services/ziti-controller-data.service.d.ts +32 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -0
- package/lib/services/ziti-data.service.d.ts +40 -0
- package/lib/services/ziti-data.service.d.ts.map +1 -0
- package/lib/services/ziti-domain-controller.service.d.ts +13 -0
- package/lib/services/ziti-domain-controller.service.d.ts.map +1 -0
- package/lib/shared/list-page-component.class.d.ts +52 -0
- package/lib/shared/list-page-component.class.d.ts.map +1 -0
- package/lib/shared/list-page-service.class.d.ts +47 -0
- package/lib/shared/list-page-service.class.d.ts.map +1 -0
- package/lib/version.d.ts +4 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/zac-routing.module.d.ts +8 -0
- package/lib/zac-routing.module.d.ts.map +1 -0
- package/lib/ziti-console-lib.module.d.ts +85 -0
- package/lib/ziti-console-lib.module.d.ts.map +1 -0
- package/lib/ziti-console.constants.d.ts +4 -0
- package/lib/ziti-console.constants.d.ts.map +1 -0
- package/openziti-ziti-console-lib.d.ts.map +1 -0
- package/package.json +48 -0
- package/public-api.d.ts +68 -0
- package/public-api.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openziti-ziti-console-lib.mjs","sources":["../../../projects/ziti-console-lib/src/lib/services/ziti-domain-controller.service.ts","../../../projects/ziti-console-lib/src/lib/ziti-console.constants.ts","../../../projects/ziti-console-lib/src/lib/features/messaging/logger.service.ts","../../../projects/ziti-console-lib/src/lib/features/messaging/growler.service.ts","../../../projects/ziti-console-lib/src/lib/services/settings-service.class.ts","../../../projects/ziti-console-lib/src/lib/features/messaging/growler.model.ts","../../../projects/ziti-console-lib/src/lib/services/settings.service.ts","../../../projects/ziti-console-lib/src/lib/services/validation.service.ts","../../../projects/ziti-console-lib/src/lib/features/wrappers/zac-wrapper-service.class.ts","../../../projects/ziti-console-lib/src/lib/services/login-service.class.ts","../../../projects/ziti-console-lib/src/lib/features/loading-indicator/loading-indicator.component.ts","../../../projects/ziti-console-lib/src/lib/features/loading-indicator/loading-indicator.component.html","../../../projects/ziti-console-lib/src/lib/safe.pipe.ts","../../../projects/ziti-console-lib/src/lib/features/wrappers/zac-wrapper.component.ts","../../../projects/ziti-console-lib/src/lib/features/wrappers/zac-wrapper.component.html","../../../projects/ziti-console-lib/src/lib/zac-routing.module.ts","../../../projects/ziti-console-lib/src/lib/features/extendable/extensions-noop.service.ts","../../../projects/ziti-console-lib/src/lib/features/extendable/extendable.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/string/string-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/number/number-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/object/object.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/selector/selector-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/text-list/text-list-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.html","../../../projects/ziti-console-lib/src/lib/services/console-events.service.ts","../../../projects/ziti-console-lib/src/lib/features/sidebars/side-toolbar/side-toolbar.component.ts","../../../projects/ziti-console-lib/src/lib/features/sidebars/side-toolbar/side-toolbar.component.html","../../../projects/ziti-console-lib/src/lib/features/sidebars/side-navbar/side-navbar.component.ts","../../../projects/ziti-console-lib/src/lib/features/sidebars/side-navbar/side-navbar.component.html","../../../projects/ziti-console-lib/src/lib/features/sidebars/side-banner/side-banner.component.ts","../../../projects/ziti-console-lib/src/lib/features/sidebars/side-banner/side-banner.component.html","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/password/password-input.component.ts","../../../projects/ziti-console-lib/src/lib/features/confirm/confirm.component.ts","../../../projects/ziti-console-lib/src/lib/features/confirm/confirm.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/data-table-filter.service.ts","../../../projects/ziti-console-lib/src/lib/services/ziti-data.service.ts","../../../projects/ziti-console-lib/src/lib/shared/list-page-service.class.ts","../../../projects/ziti-console-lib/src/lib/shared/list-page-component.class.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-default/table-column-default.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-default/table-column-default.component.html","../../../projects/ziti-console-lib/src/lib/models/service.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/port-ranges/port-ranges.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/port-ranges/port-ranges.component.html","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.ts","../../../projects/ziti-console-lib/src/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.html","../../../projects/ziti-console-lib/src/lib/services/schema.service.ts","../../../projects/ziti-console-lib/src/lib/services/csv-download.service.ts","../../../projects/ziti-console-lib/src/lib/pages/configurations/configurations-page.service.ts","../../../projects/ziti-console-lib/src/lib/services/tab-name.service.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/projectable-form.class.ts","../../../projects/ziti-console-lib/src/lib/features/json-view/json-view.component.ts","../../../projects/ziti-console-lib/src/lib/features/json-view/json-view.component.html","../../../projects/ziti-console-lib/src/lib/features/config-editor/config-editor.component.ts","../../../projects/ziti-console-lib/src/lib/features/config-editor/config-editor.component.html","../../../projects/ziti-console-lib/src/lib/models/config.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/configuration/configuration.service.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/form-header/form-header.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/form-header/form-header.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/form-field-container/form-field-container.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/form-field-container/form-field-container.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/configuration/configuration-form.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/configuration/configuration-form.component.html","../../../projects/ziti-console-lib/src/lib/features/list-page-features/list-page-header/list-page-header.component.ts","../../../projects/ziti-console-lib/src/lib/features/list-page-features/list-page-header/list-page-header.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-select/table-column-select.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-select/table-column-select.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-select/table-cell-select.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-select/table-cell-select.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.html","../../../projects/ziti-console-lib/src/lib/models/identity.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/tooltips/os-tooltip.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/tooltips/sdk-tooltip.component.ts","../../../projects/ziti-console-lib/src/lib/features/reset-enrollment/reset-enrollment.service.ts","../../../projects/ziti-console-lib/src/lib/features/reset-enrollment/reset-enrollment.component.ts","../../../projects/ziti-console-lib/src/lib/features/reset-enrollment/reset-enrollment.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/identity/identity-form.service.ts","../../../projects/ziti-console-lib/src/lib/pages/identities/identities-page.service.ts","../../../projects/ziti-console-lib/src/lib/models/edge-router.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/edge-router/edge-router-form.service.ts","../../../projects/ziti-console-lib/src/lib/pages/edge-routers/edge-routers-page.service.ts","../../../projects/ziti-console-lib/src/lib/features/qr-code/qr-code.component.ts","../../../projects/ziti-console-lib/src/lib/features/qr-code/qr-code.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-token/table-cell-token.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/cells/table-cell-token/table-cell-token.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/data-table.service.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/table-filter-bar/filter-bar.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/table-filter-bar/filter-bar.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.html","../../../projects/ziti-console-lib/src/lib/features/no-items/no-items.component.ts","../../../projects/ziti-console-lib/src/lib/features/no-items/no-items.component.html","../../../projects/ziti-console-lib/src/lib/features/tag-selector/tag-selector.component.ts","../../../projects/ziti-console-lib/src/lib/features/tag-selector/tag-selector.component.html","../../../projects/ziti-console-lib/src/lib/features/data-table/data-table.component.ts","../../../projects/ziti-console-lib/src/lib/features/data-table/data-table.component.html","../../../projects/ziti-console-lib/src/lib/features/side-modal/side-modal.component.ts","../../../projects/ziti-console-lib/src/lib/features/side-modal/side-modal.component.html","../../../projects/ziti-console-lib/src/lib/pages/configurations/configurations-page.component.ts","../../../projects/ziti-console-lib/src/lib/pages/configurations/configurations-page.component.html","../../../projects/ziti-console-lib/src/lib/features/list-page-features/list-page-form/list-page-form.component.ts","../../../projects/ziti-console-lib/src/lib/features/visualizer/identity-service-path/identity-service-path.helper.ts","../../../projects/ziti-console-lib/src/lib/features/visualizer/identity-service-path/identity-service-path.component.ts","../../../projects/ziti-console-lib/src/lib/features/visualizer/identity-service-path/identity-service-path.component.html","../../../projects/ziti-console-lib/src/lib/features/preview-list/preview-list.component.ts","../../../projects/ziti-console-lib/src/lib/features/preview-list/preview-list.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.html","../../../projects/ziti-console-lib/src/lib/features/custom-tags/custom-tags.component.ts","../../../projects/ziti-console-lib/src/lib/features/custom-tags/custom-tags.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/identity/identity-form.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/identity/identity-form.component.html","../../../projects/ziti-console-lib/src/lib/features/overrides/overrides.service.ts","../../../projects/ziti-console-lib/src/lib/features/overrides/overrides.component.ts","../../../projects/ziti-console-lib/src/lib/features/overrides/overrides.component.html","../../../projects/ziti-console-lib/src/lib/pages/identities/identities-page.component.ts","../../../projects/ziti-console-lib/src/lib/pages/identities/identities-page.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/edge-router/edge-router-form.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/edge-router/edge-router-form.component.html","../../../projects/ziti-console-lib/src/lib/pages/edge-routers/edge-routers-page.component.ts","../../../projects/ziti-console-lib/src/lib/pages/edge-routers/edge-routers-page.component.html","../../../projects/ziti-console-lib/src/lib/pages/services/services-page.service.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service/service-form.service.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service/service-form.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service/service-form.component.html","../../../projects/ziti-console-lib/src/lib/features/card/card.component.ts","../../../projects/ziti-console-lib/src/lib/features/card/card.component.html","../../../projects/ziti-console-lib/src/lib/features/card-list/card-list.component.ts","../../../projects/ziti-console-lib/src/lib/features/card-list/card-list.component.html","../../../projects/ziti-console-lib/src/lib/features/creation-summary-dialog/creation-summary-dialog.component.ts","../../../projects/ziti-console-lib/src/lib/features/creation-summary-dialog/creation-summary-dialog.component.html","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service/simple-service/simple-service.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service/simple-service/simple-service.component.html","../../../projects/ziti-console-lib/src/lib/pages/services/services-page.component.ts","../../../projects/ziti-console-lib/src/lib/pages/services/services-page.component.html","../../../projects/ziti-console-lib/src/lib/app.initializer.ts","../../../projects/ziti-console-lib/src/lib/features/messaging/growler.component.ts","../../../projects/ziti-console-lib/src/lib/features/messaging/growler.module.ts","../../../projects/ziti-console-lib/src/lib/pages/service-policies/service-policies-page.service.ts","../../../projects/ziti-console-lib/src/lib/models/service-policy.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service-policy/service-policy-form.service.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service-policy/service-policy-form.component.ts","../../../projects/ziti-console-lib/src/lib/features/projectable-forms/service-policy/service-policy-form.component.html","../../../projects/ziti-console-lib/src/lib/pages/service-policies/service-policies-page.component.ts","../../../projects/ziti-console-lib/src/lib/pages/service-policies/service-policies-page.component.html","../../../projects/ziti-console-lib/src/lib/ziti-console-lib.module.ts","../../../projects/ziti-console-lib/src/lib/version.ts","../../../projects/ziti-console-lib/src/lib/features/wrappers/zac-wrapper.service.ts","../../../projects/ziti-console-lib/src/lib/features/wrappers/node-wrapper.service.ts","../../../projects/ziti-console-lib/src/lib/services/noop-login.service.ts","../../../projects/ziti-console-lib/src/lib/services/node-data.service.ts","../../../projects/ziti-console-lib/src/lib/services/ziti-controller-data.service.ts","../../../projects/ziti-console-lib/src/lib/services/deactivate-guard.service.ts","../../../projects/ziti-console-lib/src/public-api.ts","../../../projects/ziti-console-lib/src/openziti-ziti-console-lib.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\nimport {BehaviorSubject} from \"rxjs\";\nexport const ZITI_DOMAIN_CONTROLLER = new InjectionToken<any>('ZITI_DOMAIN_CONTROLLER');\n\nexport type ZitiSessionData = {\n zitiDomain: any,\n zitiSessionId: any,\n expiresAt: any\n}\nexport interface ZitiDomainControllerService {\n zitiSettings: BehaviorSubject<ZitiSessionData>;\n handleUnauthorized();\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {InjectionToken} from \"@angular/core\";\n\nexport const ZITI_URLS = new InjectionToken<string>('ZITI_URLS');\nexport const ZITI_NAVIGATOR = new InjectionToken<string>('ZITI_NAVIGATOR');\n","import {Injectable} from '@angular/core';\nimport {NGXLogger, NgxLoggerLevel} from 'ngx-logger';\n\n// base for the json log\nconst logJsonBase = {\n userId: '',\n authenticated: false,\n orgId: '',\n azureSubscriptionId: '',\n networkId: '',\n route: '',\n message: '',\n data: '',\n};\n\n@Injectable({providedIn: 'root'})\nexport class LoggerService {\n // the logging level for the client side. Keeping a reference as it is requried when updating the config\n private clientLevel = NgxLoggerLevel.DEBUG;\n // the json to log\n private logJson = {...logJsonBase};\n\n constructor(public logger: NGXLogger) {\n }\n\n // function for setting the user information\n public setUser(userId: string, authenticated: boolean) {\n this.logJson.userId = userId;\n this.logJson.authenticated = authenticated;\n }\n\n // function for setting the org id\n public setOrg(orgId: string) {\n this.logJson.orgId = orgId;\n }\n\n // function for setting the azureSubscription id\n public setAzureSubscriptionId(azureSubscriptionId: string) {\n this.logJson.azureSubscriptionId = azureSubscriptionId;\n }\n\n // function for setting the network id\n public setNetworkId(networkId: string) {\n this.logJson.networkId = networkId;\n }\n\n // function for setting the route\n public setRoute(route: string) {\n this.logJson.route = route;\n }\n\n public setServerLoggingUrl(url: string) {\n this.logger.updateConfig({level: this.clientLevel, serverLoggingUrl: url});\n }\n\n // function for setting the client level for logging\n setClientLevel(level: string) {\n switch (level.toUpperCase()) {\n case 'DEBUG': {\n this.clientLevel = NgxLoggerLevel.DEBUG;\n break;\n }\n\n case 'ERROR': {\n this.clientLevel = NgxLoggerLevel.ERROR;\n break;\n }\n\n case 'INFO': {\n this.clientLevel = NgxLoggerLevel.INFO;\n break;\n }\n\n case 'OFF': {\n this.clientLevel = NgxLoggerLevel.OFF;\n break;\n }\n\n case 'WARN': {\n this.clientLevel = NgxLoggerLevel.WARN;\n break;\n }\n\n case 'LOG': {\n this.clientLevel = NgxLoggerLevel.LOG;\n break;\n }\n\n case 'TRACE': {\n this.clientLevel = NgxLoggerLevel.TRACE;\n break;\n }\n }\n\n this.logger.updateConfig({level: this.clientLevel});\n }\n\n // function for setting the server level for logging\n public setServerLevel(level: string) {\n switch (level.toUpperCase()) {\n case 'DEBUG': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.DEBUG});\n break;\n }\n\n case 'ERROR': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.ERROR});\n break;\n }\n\n case 'INFO': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.INFO});\n break;\n }\n\n case 'OFF': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.OFF});\n break;\n }\n\n case 'WARN': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.WARN});\n break;\n }\n\n case 'LOG': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.LOG});\n break;\n }\n\n case 'TRACE': {\n this.logger.updateConfig({level: this.clientLevel, serverLogLevel: NgxLoggerLevel.TRACE});\n break;\n }\n }\n }\n\n // wrapper function for ngx-logger debug\n public debug(message: string, data?: any) {\n // creating a copy of the json log\n const json = {...this.logJson};\n\n this.setMessageAndData(json, message, data);\n this.logger.debug(message, json);\n }\n\n // wrapper function for ngx-logger error\n public error(message: string, data?: any) {\n // creating a copy of the json log\n const json = {...this.logJson};\n\n this.setMessageAndData(json, message, data);\n this.logger.error(message, json);\n }\n\n // wrapper function for ngx-logger warn\n public warn(message: string, data?: any) {\n // creating a copy of the json log\n const json = {...this.logJson};\n\n this.setMessageAndData(json, message, data);\n this.logger.warn(message, json);\n }\n\n // wrapper function for ngx-logger debug\n public info(message: string, data?: any) {\n // creating a copy of the json log\n const json = {...this.logJson};\n\n this.setMessageAndData(json, message, data);\n this.logger.info(message, json);\n }\n\n // wrapper function for ngx-logger debug\n public log(message: string, data?: any) {\n // creating a copy of the json log\n const json = {...this.logJson};\n\n this.setMessageAndData(json, message, data);\n this.logger.info(message, json);\n }\n\n // wrapper function for ngx-logger debug\n public trace(message: string, data?: any) {\n // creating a copy of the json log\n const json = {...this.logJson};\n\n this.setMessageAndData(json, message, data);\n this.logger.trace(message, json);\n }\n\n private resetLogJson() {\n this.logJson = logJsonBase;\n }\n\n // function for setting the message and data. also takes in an object representing the json that will be logged\n private setMessageAndData(json: any, message: string, data?: any) {\n json.message = message;\n if (data) {\n json.data = data;\n }\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {GrowlerModel} from \"./growler.model\";\nimport {LoggerService} from \"./logger.service\";\n\nconst errorString = 'error';\n\nconst sessionStorageString = 'growlerErrors';\n\n@Injectable({providedIn: 'root'})\nexport class GrowlerService {\n\n constructor(private logger: LoggerService) {}\n\n updateGrowlerEmitter = false;\n private data = new Subject<GrowlerModel>();\n data$ = this.data.asObservable();\n\n private updateGrowlerSource = new Subject<boolean>();\n updateGrowler = this.updateGrowlerSource.asObservable();\n\n private sessionGrowlerObject = {\n growlerMessages: [],\n };\n private loginGrowlerPaths = ['/signup', '/app-login', '/app-invitation', '/page-not-found', '/callback'];\n\n show(data: GrowlerModel) {\n // if the messaging message is an error message\n if (data.level !== null && data.level !== undefined && data.level.toLowerCase() === errorString) {\n // if the user is on the login page, use a special location in session storage to hold onto any messaging errors\n if (this.loginGrowlerPaths.indexOf(window.location.pathname) === -1) {\n // otherwise, using the normal location to store the messaging errors\n const growlerErrorsString = sessionStorage.getItem(sessionStorageString);\n\n let growlerErrors;\n\n if (growlerErrorsString === undefined || growlerErrorsString === null || growlerErrorsString === '') {\n growlerErrors = this.sessionGrowlerObject;\n } else {\n growlerErrors = JSON.parse(growlerErrorsString);\n }\n const growlerMessage = {\n level: data.level,\n title: data.title,\n subtitle: data.subtitle,\n content: data.content,\n timestamp: Date.now(),\n };\n growlerErrors.growlerMessages.push(growlerMessage);\n sessionStorage.setItem(sessionStorageString, JSON.stringify(growlerErrors));\n }\n }\n this.data.next(data);\n this.logger.info(`Growler Msg: ${data.level} ${data.title} ${data.subtitle} ${data.content} `);\n this.updateGrowlerSource.next(!this.updateGrowlerEmitter);\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable} from '@angular/core';\nimport {isEmpty, defer} from \"lodash\";\nimport {HttpBackend, HttpClient} from \"@angular/common/http\";\nimport {BehaviorSubject, firstValueFrom, map, tap} from \"rxjs\";\nimport {catchError} from \"rxjs/operators\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\n\n// @ts-ignore\nconst {service, growler, context, page, settings} = window;\nconst DEFAULTS = {\n \"session\": {},\n \"edgeControllers\": [],\n \"editable\": true,\n \"update\": false,\n \"location\": \"../ziti\",\n \"protocol\": \"http\",\n \"host\": \"localhost\",\n \"port\": 1408,\n \"portTLS\": 8443,\n \"rejectUnauthorized\": false,\n \"mail\": {\n \"host\": \"\",\n \"port\": 25,\n \"secure\": false,\n \"auth\": {\n \"user\": \"\",\n \"pass\": \"\"\n }\n },\n \"from\": \"\",\n \"to\": \"\",\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class SettingsServiceClass {\n\n name = \"settings\";\n settings: any = {};\n versionData: any = {};\n settingsChange = new BehaviorSubject<any>({})\n rejectUnauthorized = false;\n port = DEFAULTS.port;\n portTLS = DEFAULTS.portTLS;\n apiVersions: any[] = [];\n protocol = DEFAULTS.protocol;\n host = DEFAULTS.host;\n httpClient: HttpClient;\n\n public supportedFeatures: any = {\n organization: false,\n tags: false,\n customFields: false,\n mailer: false,\n recipes: false\n }\n\n constructor(protected httpBackend: HttpBackend, protected growlerService: GrowlerService) {\n this.httpClient = new HttpClient(httpBackend);\n }\n\n public abstract init();\n public abstract controllerSave(name: string, url: string);\n public abstract initApiVersions(url);\n public abstract loadSettings();\n\n public get() {\n const tmp = localStorage.getItem('ziti.settings');\n if (tmp) {\n this.settings = JSON.parse(tmp);\n } else {\n this.settings = {...DEFAULTS};\n localStorage.setItem('ziti.settings', JSON.stringify(this.settings));\n }\n settings.data = this.settings;\n context.set(this.name, this.settings);\n this.settingsChange.next(this.settings)\n }\n\n public set(data: any) {\n this.settings = data;\n localStorage.setItem('ziti.settings', JSON.stringify(data));\n context.set(this.name, this.settings);\n this.settingsChange.next(this.settings);\n }\n\n public version() {\n this.versionData = localStorage.getItem('ziti.version');\n context.set(\"version\", this.versionData);\n this.settings = {...this.settings, version: this.versionData};\n this.settingsChange.next(this.settings)\n }\n\n public delete(url: string) {\n service.call(\"server\", {url: url}, this.deleted, \"DELETE\");\n }\n\n public deleted(e: any) {\n if (page != null && page.deleting != null && page.deleting == this.versionData.baseUrl) {\n window.location.href = \"/login\";\n }\n }\n\n public getHttpOptions() {\n const options: any = {\n headers: {\n accept: '*',\n },\n params: {},\n responseType: 'text' as const,\n };\n return options;\n }\n\n public addContoller(name: string, url: string) {\n if (name.trim().length == 0 || url.trim().length == 0) {\n growler.error(\"Name and URL required\");\n } else {\n this.controllerSave(name, url);\n }\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nexport class GrowlerModel {\n public title: string;\n public subtitle: string;\n public level: string;\n public content: string;\n\n constructor(level = '', title = '', subtitle = '', content = '') {\n this.level = level;\n this.title = title;\n this.subtitle = subtitle;\n this.content = content;\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, Inject, InjectionToken} from '@angular/core';\nimport {firstValueFrom, map, tap} from \"rxjs\";\nimport {catchError} from \"rxjs/operators\";\nimport {isEmpty, defer} from \"lodash\";\nimport {HttpBackend, HttpClient} from \"@angular/common/http\";\nimport {SettingsServiceClass} from \"./settings-service.class\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\nimport {GrowlerModel} from \"../features/messaging/growler.model\";\n\nexport const SETTINGS_SERVICE = new InjectionToken<SettingsServiceClass>('SETTINGS_SERVICE');\n\n// @ts-ignore\nconst {service, growler, context, page, settings} = window;\nconst DEFAULTS = {\n \"session\": {},\n \"edgeControllers\": [],\n \"editable\": true,\n \"update\": false,\n \"location\": \"../ziti\",\n \"protocol\": \"http\",\n \"host\": \"localhost\",\n \"port\": 1408,\n \"portTLS\": 8443,\n \"rejectUnauthorized\": false,\n \"mail\": {\n \"host\": \"\",\n \"port\": 25,\n \"secure\": false,\n \"auth\": {\n \"user\": \"\",\n \"pass\": \"\"\n }\n },\n \"from\": \"\",\n \"to\": \"\",\n}\n\nconst DEFAULT_API_VERSIONS: any = {\n \"edge\": {\n \"v1\": {\n \"apiBaseUrls\": [\n `${window.origin}/edge/client/v1`\n ],\n \"path\": \"/edge/client/v1\"\n }\n },\n \"edge-client\": {\n \"v1\": {\n \"apiBaseUrls\": [\n `${window.origin}/edge/client/v1`\n ],\n \"path\": \"/edge/client/v1\"\n }\n },\n \"edge-management\": {\n \"v1\": {\n \"apiBaseUrls\": [\n `${window.origin}/edge/management/v1`\n ],\n \"path\": \"/edge/management/v1\"\n }\n }\n };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SettingsService extends SettingsServiceClass {\n\n constructor(override httpBackend: HttpBackend, override growlerService: GrowlerService) {\n super(httpBackend, growlerService);\n }\n\n init() {\n this.get();\n this.version();\n\n if (this.settings.port && !isNaN(this.settings.port)) this.port = this.settings.port;\n if (this.settings.portTLS && !isNaN(this.settings.portTLS)) this.portTLS = this.settings.portTLS;\n if (this.settings.rejectUnauthorized && !isNaN(this.settings.rejectUnauthorized)) this.rejectUnauthorized = this.settings.rejectUnauthorized;\n if (this.settings.selectedEdgeController) return this.initApiVersions(this.settings.selectedEdgeController);\n else return Promise.resolve();\n }\n\n override loadSettings() {\n //this is a no-op for the default settings service\n }\n\n override controllerSave(name: string, url: string) {\n url = url.split('#').join('').split('?').join('');\n if (url.endsWith('/')) url = url.substr(0, url.length - 1);\n if (!url.startsWith('https://') && !url.startsWith('http://')) url = 'https://' + url;\n const callUrl = url + \"/edge/management/v1/version?rejectUnauthorized=\" + this.rejectUnauthorized;\n firstValueFrom(this.httpClient.get(callUrl).pipe(catchError((err: any) => {\n throw \"Edge Controller not Online: \" + err?.message;\n }))).then((body: any) => {\n try {\n if (body.error) {\n growler.error(\"Invalid Edge Controller: \" + body.error);\n } else {\n if (body?.data?.apiVersions?.edge?.v1 != null) {\n this.apiVersions = body.data.apiVersions;\n let found = false;\n if (this.settings.edgeControllers?.length > 0) {\n for (let i = 0; i < this.settings.edgeControllers.length; i++) {\n if (this.settings.edgeControllers[i].url == url) {\n found = true;\n this.settings.edgeControllers[i].name = name;\n this.settings.edgeControllers[i].url = url;\n break;\n }\n }\n }\n if (!found) {\n let isDefault = false;\n if (!this.settings.edgeControllers) this.settings.edgeControllers = [];\n if (this.settings.edgeControllers?.length === 0) isDefault = true;\n this.settings.edgeControllers.push({\n name: name,\n url: url,\n default: isDefault\n });\n }\n this.settings.selectedEdgeController = url;\n this.set(this.settings);\n\n } else {\n growler.error(\"Invalid Edge Controller: \" + JSON.stringify(body));\n }\n }\n } catch (e) {\n growler.error(\"Invalid Edge Controller: \" + e);\n }\n }).catch(err => {\n growler.error(err);\n });\n }\n\n public initApiVersions(url: string) {\n url = url.split('#').join('').split('?').join('');\n if (url.endsWith('/')) url = url.substr(0, url.length - 1);\n if (!url.startsWith('https://') && !url.startsWith('http://')) url = 'https://' + url;\n const callUrl = url + \"/edge/management/v1/version?rejectUnauthorized=false\";\n return firstValueFrom(this.httpClient.get(callUrl)\n .pipe(\n tap((body: any) => {\n try {\n if (body.error) {\n growler.error(\"Invalid Edge Controller: \" + body.error);\n } else {\n this.apiVersions = body.data.apiVersions;\n }\n } catch (e) {\n growler.error(\"Invalid Edge Controller: \" + body);\n }\n }),\n catchError((err: any) => {\n this.apiVersions = DEFAULT_API_VERSIONS;\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Edge Controller`,\n `Failed to connect to Edge Controller: ${err?.message}`,\n );\n const res: any = {data: this.apiVersions};\n return Promise.resolve(res);\n }),\n map((body: any) => {\n return body?.data?.apiVersions\n })));\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {includes, isEmpty, isNil, isNumber} from \"lodash\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidationService {\n\n getPortRanges(allowedPortRanges) {\n if (!allowedPortRanges) {\n return undefined;\n }\n const ranges = [];\n allowedPortRanges.forEach((val: string) => {\n const vals = val.split('-');\n if (vals.length === 1) {\n const port = parseInt(val);\n ranges.push({high: port, low: port});\n } else if (vals.length === 2) {\n const port1 = parseInt(vals[0]);\n const port2 = parseInt(vals[1]);\n ranges.push({low: port1, high: port2});\n } else {\n // do nothing, invalid range\n }\n });\n return ranges;\n }\n\n combinePortRanges(allowedPortRanges) {\n const val = [];\n if (!allowedPortRanges) {\n return val;\n }\n allowedPortRanges.forEach((range: any) => {\n if (range.low === range.high) {\n val.push(range.low + '');\n } else {\n val.push(range.low + '-' + range.high);\n }\n });\n return val;\n }\n\n parsePortRanges(portRanges) {\n const parsedPortRanges = [];\n if (!portRanges) {\n return parsedPortRanges;\n }\n portRanges.forEach((val: string) => {\n const vals = val.split('-');\n if (vals.length === 1) {\n const port = parseInt(val);\n parsedPortRanges.push({\n low: port,\n high: port\n });\n } else if (vals.length === 2) {\n const port1 = parseInt(vals[0]);\n const port2 = parseInt(vals[1]);\n parsedPortRanges.push({\n low: port1,\n high: port2\n });\n }\n });\n return parsedPortRanges;\n }\n\n validatePortRanges(portRanges) {\n let invalid = false;\n if (!portRanges) {\n return invalid;\n }\n portRanges.forEach((range: any) => {\n if (!this.isValidPort(range.low) || !this.isValidPort(range.high)) {\n invalid = true;\n return;\n } else if (range.low > range.high) {\n invalid = true;\n return;\n }\n });\n return invalid;\n }\n\n isValidPort(port) {\n return !isNaN(port) && isNumber(port) && port >= 1 && port <= 65535;\n }\n\n isValidInterceptHost(address) {\n return includes(address, '.');\n }\n\n redefineObject(obj) {\n for (let prop in obj) {\n if (Array.isArray(obj[prop]) && obj[prop].length==0) {\n delete obj[prop];\n } else {\n if (typeof obj[prop] === \"string\" && obj[prop].trim().length==0) {\n delete obj[prop];\n } else if (isNil(obj[prop])) {\n delete obj[prop];\n } else {\n if (typeof obj[prop] === \"object\") {\n obj[prop] = this.redefineObject(obj[prop]);\n if (Object.keys(obj[prop]).length==0) {\n delete obj[prop];\n }\n }\n }\n }\n }\n return obj;\n }\n}","import {EventEmitter, Inject, Injectable, InjectionToken} from \"@angular/core\";\nimport {Router} from \"@angular/router\";\nimport {ZITI_DOMAIN_CONTROLLER, ZitiDomainControllerService} from \"../../services/ziti-domain-controller.service\";\nimport {ZITI_URLS} from \"../../ziti-console.constants\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {Subscription} from \"rxjs\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {LoggerService} from \"../messaging/logger.service\";\nimport {ValidationService} from \"../../services/validation.service\";\n\nexport const ZAC_WRAPPER_SERVICE = new InjectionToken<ZacWrapperServiceClass>('ZAC_WRAPPER_SERVICE');\n\n// @ts-ignore\nconst {$, tags} = window;\n\n@Injectable({providedIn: 'root'})\nexport abstract class ZacWrapperServiceClass {\n\n rootResourceAddress: string;\n zitiUpdated = new EventEmitter<void>();\n pageChanged = new EventEmitter<void>();\n subscription: Subscription = new Subscription();\n page = '';\n scriptsAdded = false;\n zacInit = false;\n\n constructor(\n @Inject(ZITI_DOMAIN_CONTROLLER) protected zitiDomainController: ZitiDomainControllerService,\n @Inject(ZITI_URLS) protected URLS: any,\n @Inject(SETTINGS_SERVICE) protected settingsService: SettingsService,\n protected http: HttpClient,\n protected router: Router,\n protected growlerService: GrowlerService,\n protected loggerService: LoggerService,\n protected validationService: ValidationService\n ) {}\n\n public abstract initZac();\n public abstract loadCurrentPage()\n public abstract initZACButtonListener();\n protected abstract initZacListeners();\n\n initZACPersonalSettings() {\n if (!this.settingsService?.supportedFeatures?.tags) {\n localStorage.setItem(\"hideTags\", \"yes\");\n }\n if (localStorage.getItem(\"primaryColor\")!=null) {\n document.documentElement.style.setProperty(\"--primary\", localStorage.getItem(\"primaryColor\"));\n }\n if (localStorage.getItem(\"secondaryColor\")!=null) {\n document.documentElement.style.setProperty(\"--secondary\", localStorage.getItem(\"secondaryColor\"));\n }\n var mode = localStorage.getItem(\"Transitions\");\n if (mode==\"off\") {\n document.documentElement.style.setProperty(\"--transition\", \"0s\");\n } else {\n document.documentElement.style.setProperty(\"--transition\", \"0.5s\");\n }\n $(document).ready((e) => {\n $(\".personal\").show();\n if (!this.settingsService?.supportedFeatures?.tags) {\n $(\"#HideTags\").parent().hide();\n $('<div></div>').insertBefore($(\"#HideTags\").parent().siblings()[3]);\n }\n });\n }\n\n resetZacEvents() {\n $(\"input\").off(\"keyup\");\n $(\"select\").off(\"keyup\");\n $(\".toggle\").off(\"click\");\n $(\"body\").off(\"keyup\");\n $(\"#SServiceName\").off('keyup');\n $(\"#SServiceHost\").off('keyup');\n $(\"#CreateButton\").off('click');\n $(\"#CreateIdButton\").off('click');\n $(\"#IdentityDownload\").off('click');\n $(\"#DoneIdButton\").off('click');\n $(\"#DoneServiceButton\").off('click');\n $(\"#InlineAddIdentityButton\").off('click');\n $(\"#InlineAddServiceButton\").off('click');\n $(\"#AlertButton\").off('click');\n tags.tagData = [];\n }\n}","import { Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Router } from \"@angular/router\";\nimport {InjectionToken} from '@angular/core';\nimport { SETTINGS_SERVICE } from \"./settings.service\";\nimport { SettingsServiceClass } from \"./settings-service.class\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\n\nexport const ZAC_LOGIN_SERVICE = new InjectionToken<any>('ZAC_LOGIN_SERVICE');\n\n\nexport abstract class LoginServiceClass {\n\n abstract init();\n abstract login(prefix: string, url: string, username: string, password: string);\n abstract observeLogin(serviceUrl: string, username: string, password: string);\n abstract hasSession(): boolean;\n abstract clearSession();\n abstract checkOriginForController(): Promise<any>;\n abstract logout();\n\n constructor(\n protected httpClient: HttpClient,\n @Inject(SETTINGS_SERVICE) protected settingsService: SettingsServiceClass,\n protected router: Router,\n protected growlerService: GrowlerService\n ) { }\n\n public getHttpOptions() {\n const options: any = {\n headers: {\n accept: '*',\n },\n params: {},\n responseType: 'text' as const,\n };\n return options;\n }\n}\n","import {Component, Input} from \"@angular/core\";\nimport {AnimationOptions} from 'ngx-lottie';\n\n@Component({\n selector: 'lib-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n})\nexport class LoadingIndicatorComponent {\n @Input() isLoading = false;\n lottieOptions: AnimationOptions = {\n path: 'assets/animations/Loader.json',\n };\n}\n","<div [hidden]=\"!isLoading\" id=\"Loading\">\n <div class=\"grid-row\">\n <div class=\"col\">\n <div class=\"loader\">\n <div class=\"nfloader\">\n <ng-lottie [options]=\"lottieOptions\"></ng-lottie>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: \"safe\" })\nexport class SafePipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) {}\n\n transform(value: string) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Router, NavigationEnd} from '@angular/router';\nimport {ZAC_WRAPPER_SERVICE, ZacWrapperServiceClass} from \"./zac-wrapper-service.class\";\nimport {delay, invoke, isEmpty, defer, set, get} from 'lodash';\nimport {Subscription} from \"rxjs\";\nimport {SettingsService, SETTINGS_SERVICE} from \"../../services/settings.service\";\nimport {LoggerService} from \"../messaging/logger.service\";\n\nimport $ from 'jquery';\nimport {LoginServiceClass, ZAC_LOGIN_SERVICE} from \"../../services/login-service.class\";\nconst context = window['context'];\n\n@Component({\n selector: 'app-zac-wrapper',\n templateUrl: './zac-wrapper.component.html',\n styleUrls: ['./zac-wrapper.component.scss'],\n})\nexport class ZacWrapperComponent implements OnInit, OnDestroy {\n\n loading = false;\n pageHtml: any = '';\n subscription = new Subscription();\n title = 'Ziti Console';\n waitingForSession = true;\n pageLoading = false;\n settings: any = {};\n @ViewChild('zacContainer') zacContainer: any;\n\n constructor(\n @Inject(ZAC_WRAPPER_SERVICE) private wrapperService: ZacWrapperServiceClass,\n @Inject(SETTINGS_SERVICE) private settingsService: SettingsService,\n private loggerService: LoggerService,\n @Inject(ZAC_LOGIN_SERVICE) private loginService: LoginServiceClass,\n private router: Router,\n ) {\n }\n\n ngOnInit(): void {\n this.wrapperService.initZac();\n this.subscription.add(\n this.wrapperService.pageChanged.subscribe(() => {\n if (this.waitingForSession) {\n return;\n }\n this.loadPage();\n })\n );\n this.subscription.add(\n this.wrapperService.zitiUpdated.subscribe(() => {\n if (this.waitingForSession) {\n return;\n }\n this.loadPage();\n })\n );\n this.subscription.add(\n this.settingsService.settingsChange.subscribe(async (results:any) => {\n const controllerChanged = this.settings?.session?.controllerDomain !== results?.session?.controllerDomain;\n if ((this.waitingForSession && !this.pageLoading) || controllerChanged) {\n this.pageLoading = true;\n this.pageHtml = undefined;\n defer(async () => {\n await this.loadPage();\n this.waitingForSession = false;\n this.pageLoading = false;\n });\n }\n this.settings = results;\n })\n );\n this.subscription.add(\n this.router.events.subscribe((event: any) => {\n if (event instanceof NavigationEnd) {\n this.loadPage();\n }\n })\n );\n defer(() => {\n this.wrapperService.initZACButtonListener();\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.pageHtml = undefined;\n }\n\n async loadPage() {\n this.pageHtml = await this.wrapperService.loadCurrentPage();\n defer(() => {\n this.wrapperService.resetZacEvents();\n this.executePageScripts();\n });\n }\n\n executePageScripts() {\n const scripts = this.zacContainer.nativeElement.getElementsByTagName('script');\n for (const script of scripts) {\n const scriptCopy = <HTMLScriptElement>document.createElement('script');\n scriptCopy.type = script.type ? script.type : 'text/javascript';\n if (script.innerHTML) {\n scriptCopy.innerHTML = script.innerHTML;\n } else if (script.src) {\n scriptCopy.src = script.src;\n }\n scriptCopy.async = false;\n script.parentNode.replaceChild(scriptCopy, script);\n }\n defer(() => {\n try{\n set(window, 'context.items', []);\n set(window, 'context.watchers', []);\n set(window, 'context.eventWatchers', []);\n invoke(window, 'app.init');\n context.addListener(get(window, 'page.filterObject.name', 'identities'), this.wrapperService.initZACButtonListener);\n this.wrapperService.initZACPersonalSettings();\n }catch(err) {\n this.loggerService.error('error initializing page scripts');\n } finally {\n this.loading = false;\n }\n });\n }\n}\n","<div class=\"zac-wrapper-container\" [innerHTML]=\"pageHtml | safe\" #zacContainer [ngClass]=\"{'hidden': pageLoading}\"></div>\n<!-- Operational Wizard UI -->\n<div id=\"WizardModal\" class=\"modal box\">\n <div class=\"close icon-close\"></div>\n <div class=\"title\" data-i18n=\"ZitiWizard\"></div>\n <div class=\"subtitle\" data-i18n=\"WizardService\"></div>\n <div class=\"wizard area open\">\n <label for=\"WServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"WServiceName\" type=\"text\" maxlength=\"100\" />\n <label for=\"WServiceRoles\"></label>\n </div>\n <div></div>\n</div>\n\n\n<!-- Add Any Modal UI -->\n<div id=\"AddAnyModal\" class=\"modal box\" style=\"height: fit-content; width: 600px; transition: var(--transition);\" [ngClass]=\"{'hidden': pageLoading}\">\n <div class=\"close icon-close\"></div>\n <div id=\"Select1\">\n <div class=\"title\" data-i18n=\"AddTitle\"></div>\n <div id=\"Selector\" class=\"grid dual\">\n <div id=\"InlineAddIdentityButton\" class=\"iconButton\">\n <div class=\"image icon-identity\"></div>\n <div class=\"label\" data-i18n=\"AddIdentity\"></div>\n </div>\n <div id=\"InlineAddServiceButton\" class=\"iconButton\">\n <div class=\"image icon-services\"></div>\n <div class=\"label\" data-i18n=\"AddService\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineIdentityArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleIdentity\"></div>\n <div id=\"IdentityLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Identity1\" class=\"anyid\">\n <label for=\"IdName\" data-i18n=\"Name\"></label>\n <input id=\"IdName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"IdRoles\" data-i18n=\"RoleAttributes\"></label>\n <div id=\"IdRoles\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"CreateIdButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Identity2\" style=\"display: none;\" class=\"anyid\">\n <div class=\"center\">\n <div id=\"IdentityQrCode\"></div>\n </div>\n <div id=\"IdentityDownload\" class=\"linkButton\" data-i18n=\"DownloadJWT\"></div>\n <div class=\"center\">\n <div id=\"DoneIdButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineServiceArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleService\"></div>\n <div id=\"SServiceLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Service1\" class=\"anyservice\">\n <label for=\"SServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"SServiceName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"WhereHosted\" data-i18n=\"WhereHosted\"></label>\n <div id=\"WhereHosted\"></div>\n <label for=\"WhatIsIt\" data-i18n=\"WhatShare\"></label>\n <div class=\"grid addressFull\">\n <select id=\"HostedProtocol\">\n <option value=\"tcp\">tcp</option>\n <option value=\"udp\">udp</option>\n </select>\n <input id=\"HostedHost\" type=\"text\" maxlength=\"100\" value=\"localhost\" data-i18n=\"EgHost\" />\n <input id=\"HostedPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <label for=\"WhoAccesses\" data-i18n=\"WhoAccesses\"></label>\n <div id=\"WhoAccesses\"></div>\n <div id=\"IsEncryptionRequired\" class=\"forminfo\" style=\"display: none\"></div>\n <div class=\"grid checkLabel\">\n <div id=\"SimpleEncryptionRequired\" class=\"toggle\">\n <div class=\"switch\"></div>\n <div class=\"label\"></div>\n </div>\n <div class=\"toggleLabel\" data-i18n=\"RequireEncryption\"></div>\n </div>\n <label for=\"HowTo\" data-i18n=\"HowShare\"></label>\n <div class=\"grid addressPort\">\n <input id=\"HowTo\" type=\"text\" maxlength=\"100\" data-i18n=\"EgHost\" />\n <input id=\"HowToPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <div class=\"buttons\">\n <div>\n <div class=\"linkButton closer\" data-i18n=\"Cancel\" style=\"width: fit-content;\"></div>\n </div>\n <div id=\"CreateButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Service2\" class=\"anyservice\" style=\"display: none;\">\n <label for=\"ServiceHappen\" data-i18n=\"ServiceHappen\"></label>\n <div id=\"ServiceHappen\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"DoneServiceButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"OperationCommands\" class=\"commands\" style=\"display: none\">\n <div class=\"title\" data-i18n=\"ExecutionOperations\"></div>\n <div id=\"ExecutionSteps\"></div>\n <div id=\"IconDownload\" class=\"icon icon-download\"></div>\n <label data-i18n=\"CLICommands\"></label>\n <div class=\"related\">\n <input id=\"CLICommands\" type=\"text\" readonly/>\n <div class=\"icon-copy copy\" data-copy=\"CLICommands\"></div>\n </div>\n <label data-i18n=\"APICalls\"></label>\n <div class=\"related\">\n <input id=\"ApiCall\" type=\"text\" readonly />\n <div class=\"icon-copy copy\" data-copy=\"ApiCall\"></div>\n </div>\n <div class=\"related\">\n <textarea id=\"ApiJson\"></textarea>\n <div class=\"icon-copy copy swap\" data-copy=\"ApiJson\"></div>\n </div>\n </div>\n\n</div>\n<lib-loading-indicator *ngIf=\"loading\" [isLoading]=\"loading\"></lib-loading-indicator>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ZacWrapperComponent} from \"./features/wrappers/zac-wrapper.component\";\n\nconst routes: Routes = [\n {\n path: '',\n component: ZacWrapperComponent,\n },\n];\n\n@NgModule({\n declarations: [],\n exports: [RouterModule],\n imports: [RouterModule.forChild(routes)],\n})\nexport class ZacRoutingModule {\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, InjectionToken, ViewContainerRef, EventEmitter} from '@angular/core';\nimport {BehaviorSubject, Subject} from \"rxjs\";\n\nexport const SHAREDZ_EXTENSION = new InjectionToken<any>('SHAREDZ_EXTENSION');\n\nexport interface ExtensionService {\n formDataChanged: BehaviorSubject<any>;\n closed: EventEmitter<any>;\n closeAfterSave: boolean;\n moreActions?: any[];\n listActions?: any[];\n extendAfterViewInits(extentionPoints: any): void;\n updateFormData(data: any): void;\n validateData(): Promise<any>;\n formDataSaved(data: any): Promise<any>;\n processTableColumns(tableColumns: any): any[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExtensionsNoopService implements ExtensionService {\n\n formDataChanged = new BehaviorSubject<any>({isEmpty: true});\n closed: EventEmitter<any> = new EventEmitter<any>();\n closeAfterSave = true;\n moreActions = [];\n\n constructor() { }\n\n extendAfterViewInits(extentionPoints: any): void {\n }\n\n updateFormData(data: any): void {\n }\n\n formDataSaved(data: any): Promise<any> {\n return Promise.resolve(data);\n }\n\n validateData(): Promise<any> {\n return Promise.resolve(true);\n }\n\n processTableColumns(tableColumns: any): any[] {\n return tableColumns;\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, inject, ViewChild, ViewContainerRef} from \"@angular/core\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"./extensions-noop.service\";\n\n@Component({\n template: ` `\n})\nexport class ExtendableComponent {\n @ViewChild(\"beforetitleext\", {read: ViewContainerRef}) beforeTitleVC: ViewContainerRef | undefined;\n @ViewChild(\"aftertitleext\", {read: ViewContainerRef}) afterTitleVC: ViewContainerRef | undefined;\n @ViewChild(\"beforebuttonsext\", {read: ViewContainerRef}) beforeButtonsVC: ViewContainerRef | undefined;\n @ViewChild(\"afterbuttonsext\", {read: ViewContainerRef}) afterButtonsVC: ViewContainerRef | undefined;\n\n extSvc: ExtensionService | undefined;\n\n constructor() {\n this.extSvc = inject(SHAREDZ_EXTENSION);\n }\n\n ngAfterViewInit() {\n const vcrs = {\n beforeTitleVC: this.beforeTitleVC,\n afterTitleVC: this.afterTitleVC,\n beforeButtonsVC: this.beforeButtonsVC,\n afterButtonsVC: this.afterButtonsVC\n }\n if (this.extSvc) {\n this.extSvc.extendAfterViewInits(vcrs);\n }\n }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {debounce} from \"lodash\";\n\n@Component({\n selector: 'lib-string-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label for=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <input id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\"\n type=\"text\" class=\"jsonEntry\"\n [ngClass]=\"{'error': error}\"\n [placeholder]=\"placeholder\" [(ngModel)]=\"fieldValue\" (paste)=\"onKeyup()\" (keyup)=\"onKeyup()\"/>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n `,\n styles:['input.error {border-color:red;}','div.error {color:red}']\n})\nexport class StringInputComponent {\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n @Input() fieldValue = '';\n @Input() placeholder = '';\n @Input() parentage: string[] = [];\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<string>();\n valueChange = new Subject<string> ();\n\n onKeyup() {\n debounce(() => {\n this.fieldValueChange.emit(this.fieldValue);\n this.valueChange.next(this.fieldValue);\n }, 500)();\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {debounce} from \"lodash\";\n\n@Component({\n selector: 'lib-number-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label for=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <input id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\"\n type=\"number\" class=\"jsonEntry\"\n [ngClass]=\"{'error': error}\"\n [placeholder]=\"placeholder\" [(ngModel)]=\"fieldValue\" (paste)=\"onKeyup()\" (keyup)=\"onKeyup()\"/>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n`\n})\nexport class NumberInputComponent {\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n @Input() fieldValue: number | undefined;\n @Input() placeholder = '';\n @Input() parentage: string[] = [];\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<number| undefined>();\n valueChange = new Subject<number| undefined> ();\n\n onKeyup() {\n debounce(() => {\n this.fieldValueChange.emit(this.fieldValue);\n this.valueChange.next(this.fieldValue);\n }, 500)();\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {debounce} from \"lodash\";\n\n@Component({\n selector: 'lib-boolean-toggle-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label for=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <div id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" (click)=\"toggle()\" \n [ngClass]=\"{ on: fieldValue, error: error }\" class=\"toggle\">\n <span class=\"no\" [hidden]=\"fieldValue\">NO</span >\n <span class=\"yes\" [hidden]=\"!fieldValue\">YES</span >\n <div class=\"switch\"></div>\n </div>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n `,\n styleUrls:['./boolean-toggle-input.component.scss' ]\n})\nexport class BooleanToggleInputComponent {\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n @Input() fieldValue = false;\n @Input() parentage: string[] = [];\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<boolean>();\n valueChange = new Subject<boolean> ();\n\n toggle() {\n this.fieldValue = !this.fieldValue\n debounce(() => {\n this.fieldValueChange.emit(this.fieldValue);\n this.valueChange.next(this.fieldValue);\n }, 500)();\n }\n\n}\n","import {Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef} from '@angular/core';\n\n@Component({\n selector: 'lib-object',\n template: `\n <div id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" class=\"wrapper\" [ngStyle]=\"{'background-color': bcolor}\" [ngClass]=\"{closed: !open}\" (click)=\"toggleOpen($event, 'wrapper')\">\n <div class=\"object-header-container\">\n <div class=\"object-header-title\" (click)=\"toggleOpen($event, 'header')\">\n <label class=\"object-label\" for=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <div class=\"expand-toggle\" [ngClass]=\"{open: open}\"></div>\n </div>\n <div class=\"added-items-list\" [hidden]=\"!open || !showAdd\">\n <div class=\"object-list-items-container\">\n <span class=\"none-added-label\" *ngIf=\"!addedItems || addedItems.length <= 0\">NONE ADDED...</span>\n <div (click)=\"itemClicked(item, i)\" *ngFor=\"let item of addedItems; index as i\" class=\"object-list-item clickable\">\n <div class=\"icon-clear\" (click)=\"removeItemClicked(item, i)\"></div>\n <span class=\"preview-name\" matTooltip=\"\" matTooltipPosition=\"below\">{{ _fieldName + '_item_' + i }}</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"object-main-content\" [hidden]=\"!open\">\n <ng-container #wrappercontents></ng-container>\n <div *ngIf=\"showAdd\" class=\"save-button button\" (click)=\"addClicked()\">Add</div>\n </div>\n </div>\n `,\n styleUrls: ['./object.component.scss']\n})\nexport class ObjectComponent {\n @ViewChild(\"wrappercontents\", {read: ViewContainerRef, static: true}) public wrapperContents!: ViewContainerRef;\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n @Input() itemData: any;\n @Input() parentage: string[] = [];\n @Input() bcolor = '#33aaff'\n @Input() labelColor = '#000000';\n @Input() showAdd = false;\n @Input() addedItems = [];\n @Input() open = false;\n @Output() itemAdded: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() itemSelected: EventEmitter<any> = new EventEmitter<any>();\n @Output() itemRemoved: EventEmitter<any> = new EventEmitter<any>();\n\n constructor() {\n }\n addClicked() {\n this.itemAdded.emit(true);\n }\n\n itemClicked(item, index) {\n this.itemSelected.emit(item);\n }\n\n toggleOpen(event, source) {\n if (this.open && source === 'wrapper') {\n return;\n } else if (!this.open && source === 'header') {\n return;\n }\n this.open = !this.open;\n event.stopPropagation();\n }\n\n removeItemClicked(item, index) {\n this.addedItems = this.addedItems.filter((addedItem, itemIndex) => {\n return index !== itemIndex;\n });\n this.itemRemoved.emit(item);\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {debounce} from \"lodash\";\n\n@Component({\n selector: 'lib-selector-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <select id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\"\n class=\"jsonEntry\"\n [ngClass]=\"{'error': error}\"\n [(ngModel)]=\"fieldValue\" (change)=\"selected()\">\n <option value=\"\" *ngIf=\"placeholder\">{{placeholder}}</option>\n <ng-container *ngIf=\"!listIsObject\">\n <option *ngFor=\"let name of _valueList\" [value]=\"name\">{{name}}</option>\n </ng-container>\n <ng-container *ngIf=\"listIsObject\">\n <option *ngFor=\"let data of _valueList\" [value]=\"data.value\">{{data.name}}</option>\n </ng-container>\n </select>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n`\n})\nexport class SelectorInputComponent {\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n _valueList: any[] = [];\n listIsObject = false;\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n @Input() fieldValue:any = '';\n @Input() placeholder = '';\n @Input() parentage: string[] = [];\n @Input() set valueList(list: any[]) {\n this.listIsObject = list?.length > 0 && typeof list[0] !== 'string';\n this._valueList = list;\n list.forEach(val => {\n if(val.default) this.fieldValue = val;\n });\n };\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<string>();\n valueChange = new Subject<string> ();\n\n selected() {\n debounce(() => {\n this.fieldValueChange.emit(this.fieldValue);\n this.valueChange.next(this.fieldValue);\n }, 500)();\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {defer, isEmpty} from \"lodash\";\n\n@Component({\n selector: 'lib-checkbox-list-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <div *ngFor=\"let item of items\">\n <input type=\"checkbox\"\n class=\"jsonEntry checkbox\"\n [ngClass]=\"{'error': error}\"\n [checked]=\"item.checked\" (click)=\"item.checked=!item.checked;updateFieldVal();\"/>\n <span class=\"boxlabel\">{{item.name}}</span>\n </div>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n `,\n styleUrls: ['./checkbox-list.component.scss'],\n})\nexport class CheckboxListInputComponent {\n items: any[] = [];\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n _fieldValue: string[] = [];\n @Input() set fieldValue(vals) {\n this._fieldValue = vals;\n this.updateCheckedItems();\n }\n get fieldValue():string [] {\n return this._fieldValue;\n }\n @Input() placeholder = '';\n @Input() parentage: string[] = [];\n @Input() set valueList(list: string[]) {\n this.updateCheckboxItems(list);\n }\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<string[]>();\n valueChange = new Subject<string[]> ();\n\n updateCheckedItems() {\n if (isEmpty(this._fieldValue)) {\n return;\n }\n this.items?.forEach((item) => {\n let checked = false;\n this._fieldValue?.forEach((val) => {\n if (item.name === val) {\n checked = true;\n }\n });\n item.checked = checked;\n });\n }\n\n updateCheckboxItems(list: string[]) {\n const items: any[] = [];\n list.forEach(v => {\n items.push ({name: v, checked: false});\n });\n this.items = items;\n }\n\n updateFieldVal() {\n defer(() => {\n this._fieldValue = [];\n this.items.forEach(item => {\n if(item.checked) this._fieldValue.push(item.name);\n });\n this.fieldValueChange.emit(this._fieldValue);\n this.valueChange.next(this._fieldValue);\n });\n }\n}\n\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {debounce, isEmpty} from \"lodash\";\n\n@Component({\n selector: 'lib-text-list-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label for=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <p-chips id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\"\n (keyup)=\"onKeyup($event)\"\n [(ngModel)]=\"fieldValue\"\n [allowDuplicate]=\"false\"\n [placeholder]=\"placeholder\"\n [addOnBlur]=\"true\"\n [ngClass]=\"fieldClass\" \n (onBlur)=\"emitEvents()\"\n separator=\",\">\n </p-chips>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n `,\n styleUrls:['./text-list-input.component.scss' ]\n})\nexport class TextListInputComponent {\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n\n _fieldValue: any = '';\n @Input('fieldValue')\n set fieldValue(val) {\n this._fieldValue = val;\n }\n\n get fieldValue() {\n const val = isEmpty(this._fieldValue) ? undefined : this._fieldValue;\n return val;\n }\n\n @Input() placeholder = '';\n @Input() parentage: string[] = [];\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<string>();\n valueChange = new Subject<string> ();\n\n onKeyup(event: any) {\n const key = event.key?.toLowerCase();\n if (key === \" \" || key === 'enter') {\n event.preventDefault();\n event.stopPropagation();\n const element = event.target as HTMLElement;\n element.blur();\n element.focus();\n }\n this.emitEvents();\n }\n\n emitEvents() {\n debounce(() => {\n this.fieldValueChange.emit(this.fieldValue);\n this.valueChange.next(this.fieldValue);\n }, 500)();\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, DoCheck, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport _, {debounce, isEmpty, isNumber, isNil, isNaN} from \"lodash\";\nimport {ValidationService} from \"../../../services/validation.service\";\n\n@Component({\n selector: 'lib-protocol-address-port-input',\n templateUrl: './protocol-address-port-input.component.html',\n styleUrls: ['./protocol-address-port-input.component.scss']\n})\nexport class ProtocolAddressPortInputComponent implements OnInit, DoCheck {\n @Input() protocolList: any;\n @Input() showProtocol = true;\n @Input() showAddress = true;\n @Input() showHostName = true;\n @Input() showPort = true;\n @Input() disableProtocol = false;\n @Input() disableAddress = false;\n @Input() disableHostName = false;\n @Input() disablePort = false;\n @Input() protocol: string;\n @Input() address: string;\n @Input() hostname: string;\n @Input() port: number;\n @Input() parentage: string[] = [];\n @Input() labelColor = '#000000';\n @Input() labelPrefix = '';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() portChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() addressChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() hostnameChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() protocolChange: EventEmitter<string> = new EventEmitter<string>();\n valueChange = new Subject<any> ();\n\n protocolFieldName = 'Protocol';\n addressFieldName = 'Address';\n hostnameFieldName = 'Host Name';\n portFieldName = 'Port';\n\n checkAddressDebounced = debounce(this.checkAddress, 100, {maxWait: 100, leading: true});\n\n errors = {};\n\n constructor(private validationService: ValidationService) {\n }\n ngOnInit() {\n\n }\n\n ngDoCheck() {\n this.checkAddressDebounced();\n }\n\n _addressChanged = false;\n _prevAddress;\n checkAddress() {\n this._addressChanged = !_.isEqual(this._prevAddress, this.address);\n this.addressChange.emit(this.address);\n }\n\n update() {\n this.portChange.emit(this.port);\n this.addressChange.emit(this.address);\n this.hostnameChange.emit(this.hostname);\n this.protocolChange.emit(this.protocol);\n }\n\n get className() {\n let className = 'addressFull'\n if (!this.showProtocol && (this.showHostName || this.showAddress) && (this.showPort)) {\n className = 'host-name-port';\n } else if (!this.showProtocol && !this.showPort && (this.showHostName || this.showAddress)) {\n className = 'address-only';\n }\n return className;\n }\n\n getProperties() {\n const protocol = isEmpty(this.protocol) ? undefined : this.protocol;\n const address = isEmpty(this.address) ? undefined : this.address;\n const hostname = isEmpty(this.hostname) ? undefined : this.hostname;\n const port = !isNumber(this.port) ? undefined : this.port;\n\n const props = [\n {key: 'protocol', value: protocol},\n {key: 'address', value: address},\n {key: 'hostname', value: hostname},\n {key: 'port', value: port}\n ];\n return props;\n }\n\n isValid() {\n this.errors = {};\n if (!isEmpty(this.parentage)) {\n return true;\n }\n if (this.showProtocol && !this.disableProtocol) {\n if(isEmpty(this.protocol)) {\n this.errors['protocol'] = true;\n }\n }\n if (this.showAddress && !this.disableAddress) {\n if(isEmpty(this.address)) {\n this.errors['address'] = true;\n }\n }\n if (this.showHostName && !this.disableHostName) {\n if(isEmpty(this.hostname)) {\n this.errors['hostname'] = true;\n }\n }\n if (this.showPort && !this.disablePort) {\n if(isNil(this.port) || isNaN(this.port)) {\n this.errors['port'] = true;\n }\n }\n return isEmpty(this.errors);\n }\n\n setProperties(data: any) {\n this.protocol = data.protocol;\n this.address = data.address;\n this.port = data.port;\n this.hostname = data.hostname;\n }\n}\n","<div class=\"grid {{className}}\">\n <div *ngIf=\"showProtocol\" [ngClass]=\"{disabled: disableProtocol, invalid: errors['protocol']}\">\n <lib-selector-input [fieldName]=\"protocolFieldName\"\n [(fieldValue)]=\"protocol\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"undefined\"\n [valueList]=\"['tcp', 'udp']\"\n (fieldValueChange)=\"update()\"\n ></lib-selector-input>\n </div>\n <div *ngIf=\"showAddress\" [ngClass]=\"{disabled: disableAddress, invalid: errors['address']}\">\n <lib-string-input [fieldName]=\"addressFieldName\"\n [(fieldValue)]=\"address\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showHostName\" [ngClass]=\"{disabled: disableHostName, invalid: errors['hostname']}\">\n <lib-string-input [fieldName]=\"hostnameFieldName\"\n [(fieldValue)]=\"hostname\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showPort\" [ngClass]=\"{disabled: disablePort, invalid: errors['port']}\">\n <lib-number-input [fieldName]=\"portFieldName\"\n [(fieldValue)]=\"port\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'0'\"\n (fieldValueChange)=\"update()\"\n ></lib-number-input>\n </div>\n</div>\n","import {EventEmitter, Injectable} from \"@angular/core\";\n\n// @ts-ignore\nconst {app, growler, $} = window;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleEventsService {\n\n refreshData: EventEmitter<any> = new EventEmitter<any>();\n openSideModal: EventEmitter<any> = new EventEmitter<any>();\n closeSideModal: EventEmitter<any> = new EventEmitter<any>();\n\n constructor() {}\n\n enableZACEvents() {\n $(\"#IdentityDownload\").click(app.download);\n $(\"#AlertButton\").click(growler.toggle);\n $(\"#NotificationMenuClose\").click(() => {\n $(\"#NotificationsMenu\").removeClass(\"open\");\n });\n $(\"#DoneIdButton\").click(app.idReset);\n $(\"#DoneServiceButton\").click(app.idReset);\n $(\"#InlineAddIdentityButton\").click(app.showInlineId);\n $(\"#InlineAddServiceButton\").click(app.showInlineService);\n }\n}","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, ViewChild, ElementRef} from '@angular/core';\nimport {SettingsService, SETTINGS_SERVICE} from \"../../../services/settings.service\";\n\nimport {cloneDeep} from 'lodash';\nimport { Router } from '@angular/router';\nimport { ZacWrapperServiceClass } from '../../wrappers/zac-wrapper-service.class';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {ZAC_WRAPPER_SERVICE} from \"../../wrappers/zac-wrapper-service.class\";\nimport { ZAC_LOGIN_SERVICE, LoginServiceClass } from '../../../services/login-service.class';\n\nimport {defer} from \"lodash\";\nimport {ConsoleEventsService} from \"../../../services/console-events.service\";\n\n// @ts-ignore\nconst {header, app, commands, modal, $} = window;\n@Component({\n selector: 'lib-side-toolbar',\n templateUrl: './side-toolbar.component.html',\n styleUrls: ['./side-toolbar.component.scss']\n})\nexport class SideToolbarComponent {\n hideNav:boolean | undefined;\n menuOpen = false;\n sideBarInit = false;\n addAnyOpen = false;\n\n @ViewChild('apijson') apijson: ElementRef;\n @ViewChild('identityqr') identityqr: ElementRef;\n constructor(\n @Inject(SETTINGS_SERVICE) private settingsService: SettingsService,\n private router: Router,\n @Inject(ZAC_WRAPPER_SERVICE) private zacService: ZacWrapperServiceClass,\n @Inject(ZAC_LOGIN_SERVICE) private loginService: LoginServiceClass,\n private consoleEvents: ConsoleEventsService,\n ) {}\n\n ngOnInit() {\n this.zacService.initZac();\n app.init();\n this.zacService.initZACButtonListener();\n this.settingsService.settingsChange.subscribe((results:any) => {\n this.hideNav = results.hideNav;\n this.initSideBar();\n });\n }\n\n initSideBar() {\n if (this.sideBarInit) {\n return;\n }\n window['header'].init();\n window['locale'].init();\n window['modal'].init();\n this.sideBarInit = true;\n }\n\n toggleNav() {\n this.hideNav = !this.hideNav;\n const settings = {\n ...this.settingsService.settings, hideNav: this.hideNav\n }\n this.settingsService.set(settings);\n }\n\n toggleMenu() {\n this.menuOpen = !this.menuOpen;\n }\n\n closeMenu() {\n this.menuOpen = false;\n }\n\n doLogout() {\n this.loginService.logout();\n }\n\n closeAdd() {\n this.addAnyOpen = false;\n }\n\n showAdd() {\n modal?.close();\n this.addAnyOpen = true;\n this.consoleEvents.closeSideModal.emit(true);\n header.showAdd();\n this.apijson.nativeElement.innerHTML = `<textarea id=\"ApiJson\"></textarea>`;\n this.identityqr.nativeElement.innerHTML = '';\n $(\"#InlineAddIdentityButton\").off('click');\n $(\"#InlineAddServiceButton\").off('click');\n $(\"#CreateButton\").off('click');\n $(\"#CreateIdButton\").off('click');\n $(\"#CreateButton\").click(window['app'].createSService);\n $(\"#CreateIdButton\").click(window['app'].createId);\n $(\"#InlineAddIdentityButton\").click(window['app'].showInlineId);\n $(\"#InlineAddServiceButton\").click(window['app'].showInlineService);\n defer(() => {\n commands.init();\n });\n }\n\n get mailSupported() {\n return this.settingsService?.supportedFeatures?.mailer;\n }\n\n get orgSupported() {\n return this.settingsService?.supportedFeatures?.organization;\n }\n}\n","<div class=\"sideToolbar\">\n <div class=\"topButtons\">\n <div id=\"NavigationButton\" class=\"clickable main AreaNavigation selected\" (click)=\"toggleNav();\">\n <div class=\"circle\"></div>\n <div class=\"icon icon-globe\"></div>\n <div id=\"NetworkHover\" class=\"hover\" data-i18n=\"NetworkSettings\">Network Settings</div>\n </div>\n <div id=\"AddButton\" class=\"clickable\" data-hover=\"AddHover\" (click)=\"showAdd()\">\n <div class=\"circle\"></div>\n <div class=\"icon\"></div>\n <div id=\"AddHover\" class=\"hover\">Add New</div>\n </div>\n <a [routerLink]=\"'/attributes'\">\n <div id=\"AttributesButton\" class=\"clickable\" data-hover=\"AttributeHover\">\n <div class=\"circle\"></div>\n <div class=\"icon icon-hash\"></div>\n <div id=\"AttributeHover\" class=\"hover\">Attribute Explorer</div>\n </div>\n </a>\n <div id=\"SearchButton\" class=\"clickable\" data-hover=\"SearchHover\" style=\"display: none;\">\n <div class=\"clicked\"></div>\n <div class=\"circle\"></div>\n <div class=\"icon\"></div>\n <div id=\"SearchHover\" class=\"hover\" data-i18n=\"Search\">Search</div>\n </div>\n </div>\n <div class=\"bottomButtons\">\n <div id=\"AlertButton\" class=\"clickable\">\n <div class=\"circle\"></div>\n <div class=\"icon\"></div>\n <div id=\"AlarmCount\" class=\"count\"></div>\n </div>\n <div id=\"HelpButton\" class=\"clickable AreaSupport\" data-modal=\"AddMessageModal\" *ngIf=\"mailSupported\">\n <div class=\"clicked\"></div>\n <div class=\"circle\"></div>\n <div class=\"icon\"></div>\n </div>\n <div id=\"OrgButton\" class=\"clickable AreaOrganization\" data-open=\"AreaOrganization\" [routerLink]=\"'/servers'\" *ngIf=\"orgSupported\">\n <div class=\"clicked\"></div>\n <div class=\"circle\"></div>\n <div class=\"icon\"></div>\n </div>\n <div id=\"ProfileButton\" class=\"clickable main\" (click)=\"toggleMenu()\" (clickOutside)=\"closeMenu()\">\n <div class=\"main\"></div>\n <div class=\"circle\"></div>\n <div class=\"icon\"></div>\n <div id=\"ProfileMenu\" class=\"menu\" [ngClass]=\"{open: menuOpen}\">\n <div class=\"menutitle\"></div>\n <div id=\"ProfileButton\" class=\"link\" data-go=\"/profile\" data-i18n=\"EditProfile\">Edit Profile</div>\n <div id=\"SettingsButton\" class=\"link\" data-go=\"/settings\" data-i18n=\"PersonalSettings\">Personal\n Settings\n </div>\n <div id=\"LogoutButton\" class=\"link\" (click)=\"doLogout()\">Logout</div>\n </div>\n </div>\n </div>\n</div>\n\n<!-- Submit Bug UI -->\n<div id=\"AddMessageModal\" class=\"modal box full\">\n <div class=\"sized\">\n <div class=\"close icon-close\" (click)=\"closeAdd()\"></div>\n <div class=\"title\" data-i18n=\"MessageTitle\"></div>\n <div class=\"subtitle\" data-i18n=\"MessageSubTitle\"></div>\n <div class=\"split unsplit\">\n <div>\n <label for=\"SendName\" data-i18n=\"MessageName\"></label>\n <input id=\"SendName\" type=\"text\" maxlength=\"500\" data-i18n=\"EnterName\"/>\n </div>\n <div>\n <label for=\"SendEMail\" data-i18n=\"MessageEMail\"></label>\n <input id=\"SendEMail\" type=\"text\" maxlength=\"500\" data-i18n=\"EnterEMail\" />\n </div>\n </div>\n <label data-i18n=\"Message\"></label>\n <div>\n <textarea id=\"SendMessage\" data-i18n=\"MessagePlaceholder\"></textarea>\n </div>\n <label id=\"MessageType\" data-i18n=\"MessageType\"></label>\n <div class=\"grid quad\">\n <div class=\"card option\" data-type=\"bug\">\n <div class=\"icon icon-bug\"></div>\n <div class=\"contents\" data-i18n=\"Bug\"></div>\n <div class=\"checkbox icon-check\"></div>\n </div>\n <div class=\"card option\" data-type=\"feature\">\n <div class=\"icon icon-bulb\"></div>\n <div class=\"contents\" data-i18n=\"FeatureRequest\"></div>\n <div class=\"checkbox icon-check\"></div>\n </div>\n <div class=\"card option\" data-type=\"love\">\n <div class=\"icon icon-hearts\"></div>\n <div class=\"contents\" data-i18n=\"LoveLetter\"></div>\n <div class=\"checkbox icon-check\"></div>\n </div>\n <div class=\"card option\" data-type=\"message\">\n <div class=\"icon icon-question-sign\"></div>\n <div class=\"contents\" data-i18n=\"Message\"></div>\n <div class=\"checkbox icon-check\"></div>\n </div>\n </div>\n <div class=\"loved\"></div>\n <div class=\"buttons\">\n <div class=\"linkButton closer\" data-i18n=\"Oops\"></div>\n <div id=\"SendMessageButton\" class=\"button\" data-i18n=\"Send\"></div>\n </div>\n </div>\n</div>\n<div id=\"NotificationsMenu\">\n <div id=\"NotificationMenuClose\" class=\"close icon-close\"></div>\n <div class=\"row\">\n <div class=\"header title\" data-i18n=\"RecentNotifications\"></div>\n <div id=\"ClearNotificationsButton\" class=\"subLink\" data-i18n=\"ClearNotifications\"></div>\n </div>\n <div class=\"hr\"></div>\n <div id=\"NotificationsList\"></div>\n</div>\n<div id=\"NotificationTemplate\" class=\"growler row template\">\n <div class=\"title\" >{{'{{level}}'}}</div>\n <div class=\"subtitle\">{{'{{subtitle}}'}}</div>\n <div class=\"time\">{{'{{time}}'}}</div>\n <div class=\"content\">{{'{{message}}'}}</div>\n <div class=\"icon\" style=\"background-image: url(assets/images/{{'{{type}}'}}.png)\"></div>\n</div>\n<div id=\"AddAnyModal\" class=\"modal box\" style=\"height: fit-content; width: 600px; transition: var(--transition);\">\n <div class=\"close icon-close\"></div>\n <div id=\"Select1\">\n <div class=\"title\" data-i18n=\"AddTitle\"></div>\n <div id=\"Selector\" class=\"grid dual\">\n <div id=\"InlineAddIdentityButton\" class=\"iconButton\">\n <div class=\"image icon-identity\"></div>\n <div class=\"label\" data-i18n=\"AddIdentity\"></div>\n </div>\n <div id=\"InlineAddServiceButton\" class=\"iconButton\">\n <div class=\"image icon-services\"></div>\n <div class=\"label\" data-i18n=\"AddService\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineIdentityArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleIdentity\"></div>\n <div id=\"IdentityLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Identity1\" class=\"anyid\">\n <label for=\"IdName\" data-i18n=\"Name\"></label>\n <input id=\"IdName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"IdRoles\" data-i18n=\"RoleAttributes\"></label>\n <div id=\"IdRoles\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"CreateIdButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Identity2\" style=\"display: none;\" class=\"anyid\">\n <div class=\"center\">\n <div id=\"IdentityQrCode\" #identityqr></div>\n </div>\n <div id=\"IdentityDownload\" class=\"linkButton\" data-i18n=\"DownloadJWT\"></div>\n <div class=\"center\">\n <div id=\"DoneIdButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"InlineServiceArea\" style=\"display: none;\" class=\"anyadd\">\n <div class=\"title\" data-i18n=\"AddSimpleService\"></div>\n <div id=\"SServiceLoader\" class=\"center\" style=\"display: none;\">\n <div class=\"lds-ripple\"><div></div><div></div></div>\n </div>\n <div id=\"Service1\" class=\"anyservice\">\n <label for=\"SServiceName\" data-i18n=\"ServiceName\"></label>\n <input id=\"SServiceName\" type=\"text\" maxlength=\"50\" data-i18n=\"EnterName\" />\n <label for=\"WhereHosted\" data-i18n=\"WhereHosted\"></label>\n <div id=\"WhereHosted\"></div>\n <label for=\"WhatIsIt\" data-i18n=\"WhatShare\"></label>\n <div class=\"grid addressFull\">\n <select id=\"HostedProtocol\">\n <option value=\"tcp\">tcp</option>\n <option value=\"udp\">udp</option>\n </select>\n <input id=\"HostedHost\" type=\"text\" maxlength=\"100\" value=\"localhost\" data-i18n=\"EgHost\" />\n <input id=\"HostedPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <label for=\"WhoAccesses\" data-i18n=\"WhoAccesses\"></label>\n <div id=\"WhoAccesses\"></div>\n <div id=\"IsEncryptionRequired\" class=\"forminfo\" style=\"display: none\"></div>\n <div class=\"grid checkLabel\">\n <div id=\"SimpleEncryptionRequired\" class=\"toggle\">\n <div class=\"switch\"></div>\n <div class=\"label\"></div>\n </div>\n <div class=\"toggleLabel\" data-i18n=\"RequireEncryption\"></div>\n </div>\n <label for=\"HowTo\" data-i18n=\"HowShare\"></label>\n <div class=\"grid addressPort\">\n <input id=\"HowTo\" type=\"text\" maxlength=\"100\" data-i18n=\"EgHost\" />\n <input id=\"HowToPort\" type=\"number\" maxlength=\"10\" value=\"80\" />\n </div>\n <div class=\"buttons\">\n <div>\n <div class=\"linkButton closer\" data-i18n=\"Cancel\" style=\"width: fit-content;\"></div>\n </div>\n <div id=\"CreateButton\" class=\"button\" data-i18n=\"Create\"></div>\n </div>\n </div>\n <div id=\"Service2\" class=\"anyservice\" style=\"display: none;\">\n <label for=\"ServiceHappen\" data-i18n=\"ServiceHappen\"></label>\n <div id=\"ServiceHappen\"></div>\n <div class=\"buttons\">\n <div></div>\n <div id=\"DoneServiceButton\" class=\"button\" data-i18n=\"Done\"></div>\n </div>\n </div>\n </div>\n\n <div id=\"OperationCommands\" class=\"commands\">\n <div class=\"title\" data-i18n=\"ExecutionOperations\"></div>\n <div id=\"ExecutionSteps\"></div>\n <div id=\"IconDownload\" class=\"icon icon-download\"></div>\n <label data-i18n=\"CLICommands\"></label>\n <div class=\"related\">\n <input id=\"CLICommands\" type=\"text\" readonly/>\n <div class=\"icon-copy copy\" data-copy=\"CLICommands\"></div>\n </div>\n <label data-i18n=\"APICalls\"></label>\n <div class=\"related\">\n <input id=\"ApiCall\" type=\"text\" readonly />\n <div class=\"icon-copy copy\" data-copy=\"ApiCall\"></div>\n </div>\n <div class=\"related\">\n <div #apijson><textarea id=\"ApiJson\"></textarea></div>\n <div class=\"icon-copy copy swap\" data-copy=\"ApiJson\"></div>\n </div>\n </div>\n\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, InjectionToken, Input} from '@angular/core';\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {ZITI_NAVIGATOR} from \"../../../ziti-console.constants\";\n\n@Component({\n selector: 'lib-side-navbar',\n templateUrl: './side-navbar.component.html',\n styleUrls: ['./side-navbar.component.scss']\n})\nexport class SideNavbarComponent {\n @Input() version = '';\n open = true;\n isOpened = false;\n url = '';\n\n constructor(\n private router: Router,\n @Inject(ZITI_NAVIGATOR) public currentNav: any\n ) {\n }\n\n ngOnInit(): void {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.url = event.url.split('?')[0];\n }\n });\n }\n\n toggleList(event: any) {\n event.stopPropagation();\n this.isOpened = !this.isOpened;\n }\n}\n\n","<div class=\"sideNavbar\">\n <div class=\"title\" data-i18n=\"AppName\">Ziti Console</div>\n <div id=\"Version\" class=\"version\">{{version}}</div>\n <div id=\"CustomLogo\"></div>\n <div class=\"side-navigator-menu-container\">\n <div *ngFor=\"let group of currentNav.groups\" class=\"side-navigator-menu-group\">\n <span class=\"side-navigator-menu-group-label\">{{ group.label }}</span>\n <div *ngFor=\"let item of group.menuItems\">\n <div class=\"side-navigator-menu-item {{item.className}}\" [routerLink]=\"item.route\" *ngIf=\"!item.hidden\"\n [ngClass]=\"{ selected: item.selectedRoutes?.includes(url) }\">\n <div class=\"side-navigator-menu-item-icon\">\n <div class=\"image\" [ngClass]=\"item.iconClass\"></div>\n <span *ngIf=\"item.badgeCount\" class=\"counterBadge\">{{ item.badgeCount }}</span>\n </div>\n <span class=\"side-navigator-menu-item-label\">{{ item.label }}\n <span class=\"side-navigator-menu-item-sublabel\">{{item.sublabel}}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'lib-side-banner',\n templateUrl: './side-banner.component.html',\n styleUrls: ['./side-banner.component.scss']\n})\nexport class SideBannerComponent {\n @Input() version = '';\n\n}\n","<div class=\"aside\">\n <div class=\"overlay\"></div>\n <div class=\"icon\"></div>\n <div class=\"title\">Administer your NetFoundry Ziti Virtual Network with Ziti Admin console</div>\n <div class=\"title\">{{version}}</div>\n</div>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {Subject} from \"rxjs\";\nimport {debounce} from \"lodash\";\n\n@Component({\n selector: 'lib-password-input',\n template: `\n <div [ngClass]=\"fieldClass\">\n <label for=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\" [ngStyle]=\"{'color': labelColor}\">{{_fieldName}}</label>\n <input id=\"schema_{{parentage?parentage+'_':''}}{{_idName}}\"\n type=\"password\" class=\"jsonEntry\"\n [ngClass]=\"{'error': error}\"\n [placeholder]=\"placeholder\" [(ngModel)]=\"fieldValue\" (paste)=\"onKeyup()\" (keyup)=\"onKeyup()\"/>\n <div *ngIf=\"error\" class=\"error\">{{error}}</div>\n </div>\n `,\n styles:['input.error {border-color:red;}','div.error {color:red}']\n})\nexport class PasswordInputComponent {\n _fieldName = 'Field Label';\n _idName = 'fieldname';\n @Input() set fieldName(name: string) {\n this._fieldName = name;\n this._idName = name.replace(/\\s/g, '').toLowerCase();\n }\n @Input() fieldValue = '';\n @Input() placeholder = '';\n @Input() parentage: string[] = [];\n @Input() labelColor = '#000000';\n @Input() fieldClass = '';\n @Input() error = '';\n @Output() fieldValueChange = new EventEmitter<string>();\n valueChange = new Subject<string> ();\n\n onKeyup() {\n debounce(() => {\n this.fieldValueChange.emit(this.fieldValue);\n this.valueChange.next(this.fieldValue);\n }, 500)();\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject} from '@angular/core';\nimport {DialogRef} from \"@angular/cdk/dialog\";\nimport {MAT_DIALOG_DATA, MatDialogRef} from \"@angular/material/dialog\";\n\nimport {isEmpty, isNil} from \"lodash\";\n\n@Component({\n selector: 'lib-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss']\n})\nexport class ConfirmComponent {\n\n dataObj = {\n appendId: '',\n title: '',\n subtitle: '',\n message: '',\n confirmLabel: '',\n cancelLabel: '',\n bulletList: [],\n showCancelButton: false,\n showCancelLink: false\n }\n\n constructor(private dialogRef: MatDialogRef<ConfirmComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\n this.dataObj = data;\n if (isNil(this.dataObj?.cancelLabel) || isEmpty(this.dataObj?.cancelLabel)) {\n this.dataObj.cancelLabel = 'Oops, no get me out of here';\n }\n }\n\n confirm() {\n this.dialogRef.close(true);\n }\n\n cancel() {\n this.dialogRef.close(false);\n }\n}\n","<div class=\"confirm-modal-container\">\n <div class=\"close icon-close\" (click)=\"cancel()\"></div>\n <div class=\"confirm-model-body\">\n <div class=\"confirm-modal-content\">\n <div class=\"confirm-title-container\">\n <span class=\"confirm-title\">{{dataObj.title}}</span>\n <span class=\"confirm-subtitle\">{{dataObj.subtitle}}</span>\n </div>\n <div class=\"confirm-modal-main\">\n <div class=\"confirm-modal-icon\"></div>\n <div>\n <div class=\"confirm-message-content\">\n <span [innerHTML]=\"dataObj.message\"></span>\n </div>\n <div class=\"confirm-message-bullet-list\">\n <ul>\n <li *ngFor=\"let item of dataObj.bulletList\" class=\"confirm-item-name\">{{item}}</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"confirm-buttons-container\">\n <div class=\"linkButton cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelLink\">{{dataObj.cancelLabel}}</div>\n <button class=\"button save cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelButton\">{{dataObj.cancelLabel}}</button>\n <button class=\"button save confirm\" (click)=\"confirm()\">{{dataObj.confirmLabel}}</button>\n </div>\n</div>\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from \"rxjs\";\nimport {isEmpty} from \"lodash\";\n\nexport type FilterObj = {\n filterName: string;\n columnId: string;\n value: any;\n label: string;\n type?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataTableFilterService {\n\n filters: FilterObj[] = [];\n currentPage = 1;\n filtersChanged\n = new BehaviorSubject<FilterObj[]>(this.filters)\n\n pageChanged = new BehaviorSubject<any>(this.currentPage);\n\n constructor() {\n }\n\n updateFilter(filterObj: FilterObj) {\n if(isEmpty(filterObj.value) && isNaN(filterObj.value)) this.removeFilter(filterObj);\n else {\n let isFound = false;\n for (let idx = 0; idx < this.filters.length; idx++) {\n if (this.filters[idx].columnId === filterObj.columnId) {\n this.filters[idx] = filterObj;\n isFound = true;\n break;\n }\n }\n if (!isFound) {\n this.filters.push(filterObj);\n }\n }\n this.filtersChanged.next(this.filters);\n }\n\n removeFilter(filterObj: FilterObj) {\n for (let idx = 0; idx < this.filters.length; idx++) {\n if (this.filters[idx].columnId === filterObj.columnId) {\n this.filters.splice(idx, 1);\n break;\n }\n }\n this.filtersChanged.next(this.filters);\n }\n\n getFilterString(key: string) {\n let value = '';\n for (let idx = 0; idx < this.filters.length; idx++) {\n if (this.filters[idx].columnId === key) {\n value = this.filters[idx].value;\n break;\n }\n }\n return value;\n }\n\n changePage(page: any) {\n this.pageChanged.next(page);\n }\n\n clearFilters() {\n this.filters = [];\n this.filtersChanged.next(this.filters);\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport { Injectable, Inject, InjectionToken } from '@angular/core';\nimport { Router } from \"@angular/router\";\nimport {LoggerService} from \"../features/messaging/logger.service\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\nimport {SETTINGS_SERVICE, SettingsService} from \"./settings.service\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {FilterObj} from \"../features/data-table/data-table-filter.service\";\nimport { LoginServiceClass } from './login-service.class';\n\nimport {cloneDeep} from \"lodash\";\n\nexport const ZITI_DATA_SERVICE = new InjectionToken<ZitiDataService>('ZITI_DATA_SERVICE');\n\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class ZitiDataService {\n\n public get DEFAULT_PAGING() {\n return cloneDeep({\n filter: \"\",\n noSearch: true,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 100\n })\n }\n\n constructor(protected logger: LoggerService,\n protected growler: GrowlerService,\n protected settingsService: SettingsService,\n protected httpClient: HttpClient,\n protected router: Router\n ) {}\n\n abstract post(type, model, chained?): Promise<any>;\n abstract patch(type, model, id, chained?): Promise<any>;\n abstract get(type: string, paging: any, filters: FilterObj[], url?): Promise<any>;\n abstract getSubdata(entityType: string, id: any, dataType: string): Promise<any>;\n abstract saveSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;\n abstract deleteSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any>;\n abstract delete(type: string, id: string): Promise<any>;\n abstract call(url: string): Promise<any>;\n abstract resetEnrollment(id: string, date: string): Promise<any>;\n abstract reissueEnrollment(id: string, date: string): Promise<any>;\n abstract schema(data: any): Promise<any>;\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, inject, OnInit} from '@angular/core';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../services/ziti-data.service\";\nimport {DataTableFilterService, FilterObj} from \"../features/data-table/data-table-filter.service\";\nimport {ValidatorCallback} from \"../features/list-page-features/list-page-form/list-page-form.component\";\nimport {DialogRef} from \"@angular/cdk/dialog\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {ConfirmComponent} from \"../features/confirm/confirm.component\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../services/settings.service\";\n\nimport {isEmpty} from \"lodash\";\nimport {CsvDownloadService} from \"../services/csv-download.service\";\nimport {SettingsServiceClass} from \"../services/settings-service.class\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../features/extendable/extensions-noop.service\";\nimport moment from \"moment/moment\";\n\nexport abstract class ListPageServiceClass {\n\n abstract initTableColumns(): any[];\n abstract getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any[]>\n abstract validate: ValidatorCallback;\n abstract resourceType: string;\n\n headerComponentParams = {\n filterType: 'TEXTINPUT',\n enableSorting: true\n };\n\n DEFAULT_PAGING: any = {\n filter: \"\",\n noSearch: false,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 50\n }\n totalCount = 0;\n dataService: ZitiDataService;\n refreshData: (sort?: {sortBy: string, ordering: string}) => void | undefined;\n\n menuItems: any = [];\n tableHeaderActions: any = [];\n currentSettings: any = {};\n dialogRef: any;\n sideModalOpen = false;\n currentSort = {\n sortBy: 'name',\n ordering: 'asc'\n };\n\n nameColumnRenderer = (row) => {\n return `<div class=\"col cell-name-renderer\" data-id=\"${row?.data?.id}\">\n <strong>${row?.data?.name}</strong>\n </div>`\n }\n\n rolesRenderer = (row) => {\n const colId = row.column.colId;\n let roles = '';\n if (row?.data?.[colId + 'Display']) {\n row?.data?.[colId + 'Display'].forEach((attr) => {\n const className = attr?.name?.indexOf('@') === 0 ? 'attag' : 'hashtag';\n roles += `<div class=\"${className}\">${attr.name}</div>`;\n });\n } else {\n row?.data?.[colId]?.forEach((attr) => {\n const className = attr.indexOf('@') === 0 ? 'attag' : 'hashtag';\n roles += `<div class=\"${className}\">${attr}</div>`;\n });\n }\n return roles;\n }\n\n createdAtFormatter = (row) => {\n return moment(row?.data?.createdAt).local().format('M/D/YYYY HH:mm A');\n }\n\n constructor(\n @Inject(SETTINGS_SERVICE) protected settings: SettingsServiceClass,\n protected filterService: DataTableFilterService,\n protected csvDownloadService: CsvDownloadService,\n @Inject(SHAREDZ_EXTENSION) protected extensionService: ExtensionService\n ) {\n this.dataService = inject(ZITI_DATA_SERVICE);\n this.settings.settingsChange.subscribe((settings) => {\n if (!isEmpty(this.settings?.settings?.session?.id)) {\n if (this.currentSettings?.session?.id !== settings?.session?.id && this.refreshData) {\n this.refreshData();\n this.currentSettings = settings\n }\n }\n });\n }\n\n initMenuActions() {\n if (this.extensionService.listActions) {\n this.menuItems = this.menuItems.map((item) => {\n this.extensionService.listActions.forEach((extItem) => {\n if (item.action === extItem.action) {\n item = extItem;\n }\n });\n return item;\n });\n let filteredActions = this.extensionService.listActions.filter((extItem) => {\n return !this.menuItems.some((item) => {\n return item.action === extItem.action;\n });\n });\n this.menuItems = [...this.menuItems, ...filteredActions];\n }\n }\n\n addListItemExtensionActions(row) {\n if (this.extensionService.listActions) {\n const keys = this.extensionService.listActions.map((action) => {\n return action.action;\n });\n row.actionList = [...row.actionList, ...keys];\n }\n }\n\n getTableData(resourceType: string, paging: any, filters?: FilterObj[], sort?: any): Promise<any> {\n paging = {...this.DEFAULT_PAGING};\n if(sort) {\n paging.sort = sort.sortBy;\n paging.order = sort.ordering;\n }\n for (let idx = 0; idx < filters.length; idx++) {\n paging.noSearch = false;\n paging.searchOn = filters[idx].columnId;\n paging.filter = filters[idx].value;\n }\n return this.dataService.get(resourceType, paging, filters);\n }\n\n removeItems(ids: string[]) {\n const promises = [];\n ids.forEach((id) => {\n const prom = this.dataService.delete(this.resourceType, id);\n promises.push(prom);\n });\n return Promise.all(promises);\n }\n\n sort(sortBy, ordering= 'asc') {\n this.currentSort = {sortBy, ordering};\n if(this.refreshData) this.refreshData({sortBy, ordering});\n }\n\n hasSelectedText() {\n let text = '';\n if (window.getSelection) {\n text = window.getSelection().toString();\n }\n return text?.length > 0;\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {DataTableFilterService} from \"../features/data-table/data-table-filter.service\";\nimport {ListPageServiceClass} from \"./list-page-service.class\";\nimport {Injectable} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {ConsoleEventsService} from \"../services/console-events.service\";\nimport {ConfirmComponent} from \"../features/confirm/confirm.component\";\nimport {MatDialog} from \"@angular/material/dialog\";\n\nimport {defer} from \"lodash\";\n\n@Injectable()\nexport abstract class ListPageComponent {\n abstract title;\n abstract tabs: { url: string, label: string }[] ;\n abstract headerActionClicked(action: string): void;\n abstract tableAction(event: {action: string, item: any}): void;\n abstract isLoading: boolean;\n abstract closeModal(event?: any): void;\n\n startCount = '-';\n endCount = '-';\n totalCount = '-';\n currentPage = 1;\n itemsSelected = false;\n selectedItems: any[] = [];\n columnDefs: any = [];\n rowData = [];\n filterApplied = false;\n dialogRef: any;\n modalOpen = false;\n gridObj: any = {};\n\n subscription: Subscription = new Subscription();\n\n constructor(\n protected filterService: DataTableFilterService,\n public svc: ListPageServiceClass,\n protected consoleEvents: ConsoleEventsService,\n protected dialogForm: MatDialog,\n ) {}\n\n ngOnInit() {\n this.svc.sideModalOpen = false;\n this.svc.refreshData = this.refreshData.bind(this);\n this.columnDefs = this.svc.initTableColumns();\n this.filterService.clearFilters();\n this.subscription.add(\n this.filterService.filtersChanged.subscribe(filters => {\n this.filterApplied = filters && filters.length > 0;\n this.refreshData();\n })\n );\n this.filterService.pageChanged.subscribe(page => {\n this.currentPage = page;\n this.refreshData();\n });\n this.subscription.add(\n this.consoleEvents.closeSideModal.subscribe((event: any) => {\n this.closeModal();\n })\n );\n this.subscription.add(\n this.consoleEvents.refreshData.subscribe((event: any) => {\n this.refreshData();\n })\n );\n this.consoleEvents.enableZACEvents();\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n itemToggled(item: any): void {\n this.updateSelectedItems(item);\n }\n\n updateSelectedItems(toggledItem?: any) {\n let itemSelected = false;\n this.selectedItems = [];\n this.rowData.forEach((item) => {\n if (toggledItem?.id && toggledItem?.id === item?.id) {\n item.selected = toggledItem.selected;\n }\n if (item.selected) {\n itemSelected = true;\n this.selectedItems.push(item);\n }\n });\n this.itemsSelected = itemSelected;\n }\n\n refreshData(sort?: { sortBy: string, ordering: string }, hardRefresh = false): void {\n this.isLoading = true;\n sort = sort ? sort : this.svc.currentSort;\n this.svc.getData(this.filterService.filters, sort, this.currentPage)\n .then((data: any) => {\n this.rowData = [];\n if (hardRefresh) {\n defer(() => {\n this.rowData = data.data;\n });\n } else {\n this.rowData = data.data;\n }\n\n this.totalCount = data.meta.pagination.totalCount;\n this.startCount = (data.meta.pagination.offset + 1);\n if (this.startCount + data.meta.pagination.limit > this.totalCount) {\n this.endCount = this.totalCount;\n } else {\n this.endCount = data.meta.pagination.limit;\n }\n this.updateSelectedItems();\n this.refreshCells();\n }).finally(() => {\n this.isLoading = false;\n });\n }\n\n protected openBulkDelete(selectedItems: any[], entityTypeLabel = 'item(s)') {\n const selectedIds = selectedItems.map((row) => {\n return row.id;\n });\n const selectedNames = selectedItems.map((item) => {\n return item.name;\n });\n const countLabel = selectedItems.length > 1 ? selectedItems.length : '';\n const data = {\n appendId: 'DeleteServices',\n title: 'Delete',\n message: `Are you sure you would like to delete the following ${countLabel} ${entityTypeLabel}?`,\n bulletList: selectedNames,\n confirmLabel: 'Yes',\n cancelLabel: 'Oops, no get me out of here',\n showCancelLink: true\n };\n this.dialogRef = this.dialogForm.open(ConfirmComponent, {\n data: data,\n autoFocus: false,\n });\n this.dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.svc.removeItems(selectedIds).then(() => {\n this.refreshData(this.svc.currentSort);\n });\n }\n });\n }\n\n gridReady(event) {\n this.gridObj = event;\n }\n\n refreshCells() {\n defer(() => {\n var params = {\n force: true,\n };\n this.gridObj?.api?.refreshCells(params);\n });\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {AfterViewInit, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport _ from 'lodash';\nimport {DataTableFilterService} from \"../../data-table-filter.service\";\nimport {Subscription} from \"rxjs\";\n\n@Component({\n selector: 'app-table-column-filter',\n templateUrl: './table-column-filter.component.html',\n styleUrls: ['./table-column-filter.component.scss'],\n})\nexport class TableColumnFilterComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() type = 'TEXTINPUT';\n @Input() filterString = '';\n @Input() filterName = '';\n @Input() columnDef;\n @Input() openStatusMenu;\n @Input() dateFilter: any = '24h';\n\n subscription = new Subscription();\n setFilterDebounced = _.debounce(this.setFilter, 500);\n\n @ViewChild('filterInput') filterInput: ElementRef;\n\n constructor(public filterService: DataTableFilterService) {\n }\n\n ngOnInit(): void {\n this.subscription.add(\n this.filterService.filtersChanged.subscribe((filters) => {\n let tmp = '';\n for (let idx = 0; idx < filters.length; idx++) {\n if (filters[idx].columnId === this.columnDef?.colId) {\n tmp = filters[idx].value;\n break;\n }\n }\n this.filterString = tmp;\n }));\n }\n\n setFilter(): void {\n const filterObj = {\n filterName: this.filterName,\n columnId: this.columnDef?.colId,\n value: this.filterString,\n label: this.filterString,\n type: this.type,\n };\n this.filterService.updateFilter(filterObj)\n }\n\n ngAfterViewInit() {\n this.filterInput?.nativeElement?.focus();\n }\n\n statusClicked(event) {\n if (event && this.openStatusMenu) {\n event.statusFilter = true;\n this.openStatusMenu(event);\n }\n }\n\n ngOnDestroy(): void {\n if(this.subscription) this.subscription.unsubscribe();\n }\n\n get availableRoleAttributes() {\n return this.columnDef?.headerComponentParams?.roleAttributes;\n }\n}\n","<div class=\"header-filter-container\">\n <div *ngIf=\"type === 'TEXTINPUT' || type === 'COMBO'\" class=\"text-input-filter\">\n <input\n #filterInput\n (keyup)=\"setFilterDebounced()\"\n [(ngModel)]=\"filterString\"\n class=\"search\"\n id=\"SearchFilter\"\n placeholder=\"Type to Filter\"\n type=\"text\"\n />\n </div>\n <div *ngIf=\"type === 'SELECT'\"></div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core';\nimport {IHeaderAngularComp} from 'ag-grid-angular';\nimport {IHeaderParams} from 'ag-grid-community';\nimport _ from 'lodash';\nimport {Subscription} from \"rxjs\";\nimport {DataTableFilterService} from \"../../data-table-filter.service\";\n\n@Component({\n selector: 'app-table-column-default',\n templateUrl: './table-column-default.component.html',\n styleUrls: ['./table-column-default.component.scss'],\n})\nexport class TableColumnDefaultComponent implements IHeaderAngularComp, AfterViewInit, OnInit {\n item: {\n selected: boolean;\n };\n headerParams: any = {\n api: {},\n };\n headerName;\n enableSorting;\n sortDir;\n sortCol;\n columnObj;\n columnDef: any = {\n sortDir: undefined,\n colId: undefined,\n pinColumn: undefined,\n sortColumn: undefined,\n };\n filterType = 'TEXTINPUT';\n filterOptions = [];\n columnFilters: any = {};\n filtering = false;\n pinned;\n showFilter = false;\n comboActive = false;\n showSecondaryFilter = false;\n _showColumnMenu;\n\n onlineStatusFilter;\n showBubble = false;\n showLoader = false;\n private subscription = new Subscription();\n @ViewChild('menuButton') menuButton: ElementRef;\n\n constructor(private filterService: DataTableFilterService) {\n if (!this) {\n return;\n }\n this.item = {\n selected: false,\n };\n }\n\n _statusClass = 'v7Offline';\n\n get statusClass(): string {\n if (!this.showBubble) {\n return '';\n }\n const status = _.get(\n this.columnObj,\n 'gridApi.columnFilters.hasApiSession',\n _.get(this.columnObj, 'gridApi.columnFilters.online')\n );\n switch (status) {\n case 'all':\n this._statusClass = 'v7OnlineOffline';\n break;\n case 'false':\n this._statusClass = 'v7Offline';\n break;\n case 'true':\n this._statusClass = 'v7Online';\n break;\n case 'provisioning':\n this._statusClass = '';\n this.showLoader = true;\n break;\n case 'error':\n this._statusClass = 'v7Error';\n break;\n default:\n this._statusClass = 'v7OnlineOffline';\n break;\n }\n return this._statusClass;\n }\n\n get filterApplied(): boolean {\n const columnId = _.get(this.columnDef, 'colId');\n const filterVal = _.get(this.headerParams, `api.columnFilters.${columnId}`);\n return !_.isEmpty(filterVal) || this.showFilter || this.filtering;\n }\n\n ngOnInit() {\n\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe()\n }\n\n agInit(headerParams: any = {}): void {\n if (!headerParams) {\n return;\n }\n this.headerParams = headerParams;\n this.enableSorting = headerParams.enableSorting;\n this.headerName = headerParams.displayName;\n this.columnObj = headerParams.column;\n this.filterType = headerParams.filterType || 'TEXTINPUT';\n this.columnFilters = headerParams.columnFilters;\n this.columnDef = this.columnObj.colDef;\n this.pinned = this.columnObj.pinned === 'left';\n this.sortDir = this.columnDef.sortDir || 'none';\n this.onlineStatusFilter = _.has(this.columnFilters, 'hasApiSession') ? 'hasApiSession' : 'online';\n this.showBubble =\n this.columnDef.colId === 'name' &&\n (_.has(this.columnFilters, 'hasApiSession') || _.has(this.columnFilters, 'online'));\n this._showColumnMenu = headerParams.showColumnMenu;\n this.updateFilterOptions();\n headerParams.api.addEventListener('sortChanged', (event) => {\n const colId = _.get(event, 'columnDef.colId', '');\n if (colId !== this.columnDef.colId) {\n this.sortDir = undefined;\n } else {\n this.sortDir = _.get(event, 'sortDir');\n }\n });\n headerParams.api.addEventListener('columnEverythingChanged', (event) => {\n _.forEach(event.columnApi.columnModel.columnDefs, colDef => {\n if (this.columnDef.colId === colDef.colId && colDef.headerComponentParams?.filterOptions) {\n this.updateFilterOptions();\n }\n });\n });\n }\n\n ngAfterViewInit() {\n if (this.showBubble) {\n // this.updateStatusClass();\n }\n }\n\n pin(): void {\n this.columnDef.pinColumn(this.columnObj, this.pinned ? false : 'left');\n this.pinned = !this.pinned;\n }\n\n hide(): void {\n this.headerParams.api.zitiHideColumn(this.columnObj, false);\n }\n\n sort(event): void {\n if (!this.columnDef.sortable) {\n return;\n }\n const targetId = _.get(event, 'target.id');\n if (\n _.includes(\n [`HeaderStatus_${this.columnDef.colId}`, 'SearchFilter', `HeaderFilterIcon_${this.columnDef.colId}`],\n targetId\n )\n ) {\n return;\n }\n if (_.isEmpty(this.sortDir)) {\n this.sortDir = 'asc';\n } else if (this.sortDir === 'asc') {\n this.sortDir = 'desc';\n } else {\n this.sortDir = 'asc';\n }\n _.set(this.headerParams, 'api.sortDir', this.sortDir);\n _.set(this.headerParams, 'api.sortDir', this.columnDef.colId);\n if (this.columnDef.sortColumn) {\n this.columnDef.sortColumn(this.columnDef.colId, this.sortDir, this.headerParams.api);\n this.headerParams.api.dispatchEvent({\n type: 'sortChanged',\n columnDef: this.columnDef,\n sortDir: this.sortDir,\n });\n }\n }\n\n toggleFilter(event) {\n this.showFilter = !this.showFilter;\n if (this.filterType === 'SELECT' || this.filterType === 'COMBO' || this.filterType === 'DATETIME'|| this.filterType === 'ATTRIBUTE') {\n if (this.showFilter) {\n this.updateFilterOptions();\n _.invoke(this.headerParams, 'api.openHeaderFilter', event, this.filterOptions, this.filterType, this.columnDef?.colId, this.headerName, this.columnDef?.headerComponentParams);\n } else {\n _.invoke(this.headerParams, 'api.closeHeaderFilter', event);\n }\n } else if (this.filterType === 'CUSTOM') {\n if (this.showFilter) {\n this.updateFilterOptions();\n _.invoke(this.headerParams, 'column.colDef.headerComponentParams.openHeaderFilter', event, this.filterOptions);\n } else {\n _.invoke(this.headerParams, 'column.colDef.headerComponentParams.closeHeaderFilter', event);\n }\n }\n }\n\n toggleSecondaryFilter(event) {\n this.showSecondaryFilter = !this.showSecondaryFilter;\n if (this.showSecondaryFilter) {\n const options = [\n {\n label: 'Any',\n columnId: this.onlineStatusFilter,\n filterName: 'Status',\n value: undefined,\n bubbleClass: 'v7OnlineOffline',\n },\n {\n label: 'Online',\n columnId: this.onlineStatusFilter,\n filterName: 'Status',\n value: 'true',\n bubbleClass: 'v7Online',\n },\n {\n label: 'Offline',\n columnId: this.onlineStatusFilter,\n filterName: 'Status',\n value: 'false',\n bubbleClass: 'v7Offline',\n },\n ];\n _.invoke(this.headerParams, 'api.openHeaderFilter', event, options);\n } else {\n _.invoke(this.headerParams, 'api.closeHeaderFilter', event);\n }\n }\n\n hideFilter(event) {\n const targetId = _.get(event, 'target.id');\n if (\n _.includes(\n [`HeaderFilterButton_${this.columnDef.colId}`, `HeaderFilterIcon_${this.columnDef.colId}`],\n targetId\n )\n ) {\n return;\n } else if (targetId === this.columnDef?.colId && this.filterType === 'COMBO') {\n return;\n }\n _.invoke(this.headerParams, 'api.closeHeaderFilter', event);\n\n this.comboActive = false;\n this.showFilter = false;\n this.showSecondaryFilter = false;\n }\n\n refresh(params: IHeaderParams): boolean {\n return true;\n }\n\n openGridMenu(): void {\n if (!this._showColumnMenu) {\n return;\n }\n this._showColumnMenu(this.menuButton.nativeElement);\n }\n\n updateFilterOptions() {\n let options = [];\n if (this.headerParams.getFilterOptions) {\n options = this.headerParams.getFilterOptions();\n } else {\n options = this.headerParams.filterOptions;\n }\n this.filterOptions = _.map(options, (option) => {\n option.columnId = this.columnDef.colId;\n option.filterName = this.headerName;\n option.type = this.filterType;\n return option;\n });\n }\n}\n","<div\n (click)=\"sort($event)\"\n [ngClass]=\"{ 'nf-can-sort': enableSorting }\"\n class=\"ag-cell-label-container ag-header-cell-sorted-none\"\n id=\"TableHeaderContainer_{{ columnDef.colId }}\"\n>\n <span\n #menuButton\n (click)=\"openGridMenu()\"\n *ngIf=\"false\"\n class=\"ag-header-icon ag-header-cell-menu-button\"\n id=\"HeaderMenu_{{ columnDef.colId }}\"\n ref=\"eMenu\"\n >\n <span class=\"ag-icon ag-icon-menu\" unselectable=\"on\"></span>\n </span>\n <span\n (click)=\"pin()\"\n class=\"ag-header-icon ag-header-col-pin-button\"\n id=\"HeaderPin_{{ columnDef.colId }}\"\n title=\"{{ pinned ? 'Unpin Column' : 'Pin Column' }}\"\n >\n <span class=\"ag-icon ag-icon-pin\"></span>\n </span>\n <span\n (click)=\"hide()\"\n class=\"ag-header-icon ag-header-col-hide-button\"\n id=\"HeaderHide_{{ columnDef.colId }}\"\n title=\"Hide Column\"\n >\n <span class=\"ag-icon ag-icon-eye-slash\"></span>\n </span>\n <div class=\"ag-header-cell-label\" ref=\"eLabel\" unselectable=\"on\">\n <span\n *ngIf=\"!headerParams.filterType\"\n [ngClass]=\"{ 'ag-filter-applied': filterApplied }\"\n class=\"ag-header-icon ag-header-col-filter-button\"\n id=\"HeaderFilterSpacer_{{ columnDef.colId }}\"\n >\n <span class=\"ag-icon ag-icon-filter\" id=\"HeaderFilterSpace_{{ columnDef.colId }}\" style=\"opacity: 0\"></span>\n </span>\n <span\n (click)=\"toggleFilter($event)\"\n *ngIf=\"headerParams.filterType\"\n [ngClass]=\"{ 'ag-filter-applied': filterApplied }\"\n class=\"ag-header-icon ag-header-col-filter-button\"\n id=\"HeaderFilterButton_{{ columnDef.colId }}\"\n >\n <span class=\"ag-icon ag-icon-filter\" id=\"HeaderFilterIcon_{{ columnDef.colId }}\"></span>\n </span>\n <div\n (clickOutside)=\"hideFilter($event)\"\n [ngClass]=\"{ 'show-input-filter': showFilter }\"\n class=\"header-text-container text-input-filter\"\n >\n <span\n (click)=\"toggleSecondaryFilter($event)\"\n *ngIf=\"showBubble\"\n [ngClass]=\"statusClass\"\n class=\"bubble\"\n id=\"HeaderStatus_{{ columnDef.colId }}\"\n >\n <svg *ngIf=\"showLoader\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle\n class=\"path\"\n cx=\"50\"\n cy=\"50\"\n fill=\"none\"\n r=\"20\"\n stroke-miterlimit=\"10\"\n stroke-width=\"3\"\n ></circle>\n </svg>\n </span>\n <app-table-column-filter\n *ngIf=\"((showFilter || comboActive) && !(filterType === 'COMBO' && !comboActive)) && filterType !== 'SELECT' && filterType !== 'CUSTOM'\"\n [columnDef]=\"columnDef\"\n [filterName]=\"headerName\"\n [filterString]=\"''\"\n [openStatusMenu]=\"toggleSecondaryFilter.bind(this)\"\n [type]=\"filterType\"\n ></app-table-column-filter>\n <span\n *ngIf=\"((!showFilter && !comboActive) || (filterType === 'COMBO' && !comboActive)) || filterType === 'SELECT' || filterType === 'CUSTOM'\"\n [title]=\"headerName\"\n class=\"ag-header-cell-text\"\n id=\"HeaderName_{{ columnDef.colId }}\"\n unselectable=\"on\"\n >{{ headerName }}</span\n >\n </div>\n <span\n *ngIf=\"enableSorting && !showFilter\"\n [ngClass]=\"{ 'ag-hidden': sortDir !== 'desc' }\"\n class=\"ag-header-icon ag-header-label-icon ag-sort-ascending-icon\"\n id=\"HeaderSortAsc_{{ columnDef.colId }}\"\n >\n <span class=\"ag-icon ag-icon-asc\" unselectable=\"on\"></span>\n </span>\n <span\n *ngIf=\"enableSorting && !showFilter\"\n [ngClass]=\"{ 'ag-hidden': sortDir !== 'asc' }\"\n class=\"ag-header-icon ag-header-label-icon ag-sort-descending-icon\"\n id=\"HeaderSortDesc_{{ columnDef.colId }}\"\n >\n <span class=\"ag-icon ag-icon-desc\" unselectable=\"on\"></span>\n </span>\n </div>\n</div>\n","export class Service {\n name = '';\n encryptionRequired = true;\n terminatorStrategy = '';\n roleAttributes: any[] = [];\n tags: any = {};\n configs: any[] = []\n};","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ValidationService} from \"../../../services/validation.service\";\n\n@Component({\n selector: 'lib-port-ranges',\n templateUrl: './port-ranges.component.html',\n styleUrls: ['./port-ranges.component.scss']\n})\nexport class PortRangesComponent {\n\n @Input() fieldValue: any = '';\n @Output() fieldValueChanged: EventEmitter<any> = new EventEmitter<any>();\n errors: any = {};\n invalid: boolean = false;\n\n constructor(private validationService: ValidationService) {}\n\n getProperties() {\n if (!this.fieldValue) {\n return [];\n }\n const ranges = this.validationService.getPortRanges(this.fieldValue);\n return [{key: 'portRanges', value: ranges}];\n }\n\n setProperties(ranges) {\n if (!ranges) {\n this.fieldValue = [];\n return;\n }\n this.fieldValue = this.validationService.combinePortRanges(ranges);\n }\n\n onKeyup(event: any) {\n const key = event.key?.toLowerCase();\n if (key === \" \" || key === 'enter') {\n event.preventDefault();\n const element = event.target as HTMLElement;\n element.blur();\n element.focus();\n }\n }\n\n validateConfig() {\n if (!this.fieldValue) {\n this.invalid = false;\n return;\n }\n let invalid = false;\n this.fieldValue.forEach((val: string) => {\n const vals = val.split('-');\n if (vals.length === 1) {\n const port = parseInt(val);\n if (isNaN(port)) {\n invalid = true;\n return;\n }\n } else if (vals.length === 2) {\n const port1 = parseInt(vals[0]);\n const port2 = parseInt(vals[1]);\n if (isNaN(port1) || isNaN(port2)) {\n invalid = true;\n return;\n } else if (port1 > port2) {\n invalid = true;\n return;\n }\n } else {\n invalid = true;\n }\n });\n this.invalid = invalid;\n }\n}\n","<label>PORT RANGES</label>\n<p-chips\n (onAdd)=\"validateConfig()\"\n (onRemove)=\"validateConfig()\"\n (keyup)=\"onKeyup($event)\"\n [(ngModel)]=\"fieldValue\"\n [allowDuplicate]=\"false\"\n [ngClass]=\"{ error: invalid }\"\n [placeholder]=\"'80 120-125 443 8080'\"\n [addOnBlur]=\"true\"\n separator=\",\"\n>\n</p-chips>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable} from \"@angular/core\";\nimport {ValidationService} from \"../../../services/validation.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ForwardingConfigService {\n\n constructor(private validationService: ValidationService) {}\n\n getProperties(protocol, address, port, forwardProtocol, forwardAddress, forwardPort, allowedProtocols, allowedAddresses, allowedPortRanges) {\n const props = [\n {key: 'protocol', value: protocol},\n {key: 'address', value: address},\n {key: 'port', value: port},\n {key: 'forwardProtocol', value: forwardProtocol ? forwardProtocol : undefined},\n {key: 'forwardAddress', value: forwardAddress ? forwardAddress : undefined},\n {key: 'forwardPort', value: forwardPort ? forwardPort : undefined},\n {key: 'allowedAddresses', value: allowedAddresses},\n {key: 'allowedPortRanges', value: this.validationService.getPortRanges(allowedPortRanges)},\n {key: 'allowedProtocols', value: allowedProtocols},\n ];\n return props;\n }\n\n validate(allowedPortRanges) {\n const errors: any = {};\n errors.allowedPortRanges = this.validationService.validatePortRanges(allowedPortRanges);\n }\n}","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef} from '@angular/core';\nimport {ForwardingConfigService} from \"./forwarding-config.service\";\nimport {ValidationService} from \"../../../services/validation.service\";\nimport {isEmpty, isNil, unset} from \"lodash\";\nimport {ProtocolAddressPortInputComponent} from \"../protocol-address-port/protocol-address-port-input.component\";\n\n@Component({\n selector: 'lib-forwarding-config',\n templateUrl: './forwarding-config.component.html',\n styleUrls: ['./forwarding-config.component.scss']\n})\nexport class ForwardingConfigComponent {\n\n @Input() protocol: string = 'tcp';\n @Input() address: string = undefined;\n @Input() port: number = undefined;\n @Input() forwardProtocol = false;\n @Input() forwardAddress = false;\n @Input() forwardPort = false;\n @Input() allowedAddresses: any = undefined;\n @Input() allowedPortRanges: any = undefined;\n @Input() allowedProtocols: any = undefined;\n @Output() protocolChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() addressChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() portChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() forwardProtocolChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() forwardAddressChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() forwardPortChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() allowedAddressesChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() allowedPortRangesChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() allowedProtocolsChange: EventEmitter<any> = new EventEmitter<any>();\n\n errors = {};\n\n @ViewChild(\"papComponent\") papComponent:ProtocolAddressPortInputComponent;\n constructor(private svc: ForwardingConfigService, private validationService: ValidationService) {}\n\n forwardProtocolToggled(event) {\n if (!this.forwardProtocol) {\n this.allowedProtocols = undefined;\n } else {\n this.protocol = undefined;\n }\n }\n\n forwardAddressToggled(event) {\n if (!this.forwardAddress) {\n this.allowedAddresses = undefined;\n } else {\n this.address = undefined;\n }\n }\n\n forwardPortToggled(event) {\n if (!this.forwardPort) {\n this.allowedPortRanges = undefined;\n } else {\n this.port = undefined;\n }\n }\n\n setProperties(data: any) {\n this.forwardPort = data.forwardPort;\n this.forwardProtocol = data.forwardProtocol;\n this.forwardAddress = data.forwardAddress;\n this.protocol = data.protocol ? data.protocol : 'tcp';\n this.address = data.address;\n this.port = data.port;\n this.allowedProtocols = data.allowedProtocols;\n this.allowedAddresses = data.allowedAddresses;\n this.setAllowedPortRanges(data.allowedPortRanges);\n this.svc.validate(this.allowedPortRanges);\n }\n\n getProperties() {\n return this.svc.getProperties(this.protocol, this.address, this.port, this.forwardProtocol, this.forwardAddress, this.forwardPort, this.allowedProtocols, this.allowedAddresses, this.allowedPortRanges);\n }\n\n validateAllowedAddresses() {\n unset(this.errors, 'allowedAddresses');\n if (isNil(this.allowedAddresses) || isEmpty(this.allowedAddresses)) {\n this.errors['allowedAddresses'] = true;\n }\n return this.errors['allowedAddresses'];\n }\n\n validatePortRanges() {\n unset(this.errors, 'allowedPortRanges');\n const parsedRanges = this.validationService.parsePortRanges(this.allowedPortRanges);\n if (isNil(this.allowedPortRanges) || isEmpty(this.allowedPortRanges) || this.validationService.validatePortRanges(parsedRanges)) {\n this.errors['allowedPortRanges'] = true;\n }\n return this.errors['allowedPortRanges'];\n }\n\n setAllowedPortRanges(ranges) {\n if (!ranges || isEmpty(ranges)) {\n this.allowedPortRanges = undefined;\n return;\n }\n this.allowedPortRanges = this.validationService.combinePortRanges(ranges);\n }\n\n isValid() {\n this.errors = {};\n const papIsValid = this.papComponent.isValid();\n if (this.forwardPort) {\n this.validatePortRanges();\n }\n if (this.forwardAddress) {\n this.validateAllowedAddresses();\n }\n return isEmpty(this.errors) && papIsValid;\n }\n}\n","<div class=\"forwarding-config-container\">\n <lib-protocol-address-port-input\n [showProtocol]=\"true\"\n [showAddress]=\"true\"\n [showHostName]=\"false\"\n [showPort]=\"true\"\n [disableProtocol]=\"forwardProtocol\"\n [disableAddress]=\"forwardAddress\"\n [disablePort]=\"forwardPort\"\n [(protocol)]=\"protocol\"\n [(address)]=\"address\"\n [(port)]=\"port\"\n #papComponent\n ></lib-protocol-address-port-input>\n <div class=\"forwarding-config-toggles\">\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PROTOCOL'\"\n [(fieldValue)]=\"forwardProtocol\"\n (fieldValueChange)=\"forwardProtocolToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD ADDRESS'\"\n [(fieldValue)]=\"forwardAddress\"\n (fieldValueChange)=\"forwardAddressToggled($event)\"\n >\n </lib-boolean-toggle-input>\n <lib-boolean-toggle-input\n [fieldName]=\"'FORWARD PORT'\"\n [(fieldValue)]=\"forwardPort\"\n (fieldValueChange)=\"forwardPortToggled($event)\"\n >\n </lib-boolean-toggle-input>\n </div>\n <div class=\"forwarding-config-allowed-inputs\">\n <lib-checkbox-list-input\n *ngIf=\"forwardProtocol\"\n [ngClass]=\"{invalid: errors['allowedProtocols']}\"\n [fieldName]=\"'ALLOWED PROTOCOLS'\"\n [valueList]=\"['tcp', 'udp']\"\n [(fieldValue)]=\"allowedProtocols\"\n >\n </lib-checkbox-list-input>\n <lib-text-list-input\n *ngIf=\"forwardAddress\"\n [ngClass]=\"{invalid: errors['allowedAddresses']}\"\n [fieldName]=\"'ALLOWED ADDRESSES'\"\n [placeholder]=\"'10.10.0.0/24 domain.com'\"\n [(fieldValue)]=\"allowedAddresses\"\n [labelColor]=\"'#000000'\"\n >\n </lib-text-list-input>\n <lib-text-list-input\n *ngIf=\"forwardPort\"\n [ngClass]=\"{invalid: errors['allowedPortRanges']}\"\n [fieldName]=\"'ALLOWED PORT RANGES'\"\n [placeholder]=\"'80 120-125 443 8080'\"\n [(fieldValue)]=\"allowedPortRanges\"\n [labelColor]=\"'#000000'\"\n [fieldClass]=\"errors['allowedPortRanges'] ? 'error' : ''\"\n (fieldValueChange)=\"validatePortRanges()\"\n >\n </lib-text-list-input>\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {ComponentRef, Injectable, ViewContainerRef} from '@angular/core';\nimport {ObjectComponent} from \"../features/dynamic-widgets/object/object.component\";\nimport {NumberInputComponent} from \"../features/dynamic-widgets/number/number-input.component\";\nimport {BooleanToggleInputComponent} from \"../features/dynamic-widgets/boolean/boolean-toggle-input.component\";\nimport {StringInputComponent} from \"../features/dynamic-widgets/string/string-input.component\";\nimport {SelectorInputComponent} from \"../features/dynamic-widgets/selector/selector-input.component\";\nimport _, {isNumber} from \"lodash\";\nimport {TextListInputComponent} from \"../features/dynamic-widgets/text-list/text-list-input.component\";\nimport {CheckboxListInputComponent} from \"../features/dynamic-widgets/checkbox-list/checkbox-list-input.component\";\nimport {\n ProtocolAddressPortInputComponent\n} from \"../features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component\";\nimport {PortRangesComponent} from \"../features/dynamic-widgets/port-ranges/port-ranges.component\";\nimport {ForwardingConfigComponent} from \"../features/dynamic-widgets/forwarding-config/forwarding-config.component\";\nimport {Subscription} from \"rxjs\";\nimport {GrowlerModel} from \"../features/messaging/growler.model\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\n\nexport type ProtocolAddressPort = {\n protocol: any;\n address: any;\n hostname: any;\n port: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SchemaService {\n data = {};\n formId = null;\n value = {};\n codeView = null;\n timeoutId = null;\n suggesting = null;\n suggestId: any = null;\n suggestingField = \"\";\n propertyExcludes = [];\n reservedProperties = [];\n reservedPropertiesMap: any = {\n protocolAddressPort: undefined,\n forwardProtocalAddressPort: undefined,\n allowedAddresses: undefined,\n forwardAddress: undefined\n };\n requiredProperties: any[] = ['allowedAddresses', 'allowedProtocols', 'allowedPorts'];\n subscriptions: Subscription = new Subscription();\n private items: any[] = [];\n private bColorArray: string[] = [];\n private lColorArray: string[] = [];\n\n constructor(private growlerService: GrowlerService) {\n }\n\n getType(property: any) {\n if (property.type == \"boolean\") return property.type;\n else {\n if (property.enum != null) return \"string\";\n else {\n if (property.type) return property.type;\n else {\n if (property.allOf && property.allOf.length > 0) {\n return property.allOf[0].type;\n } else {\n return \"string\";\n }\n }\n }\n }\n }\n\n renderSchema(schema, dynamicForm, lColorArray, bColorArray, formData) {\n if (schema.properties) {\n this.items = this.render(schema, dynamicForm, lColorArray, bColorArray);\n for (let obj of this.items) {\n const cRef = obj.component;\n if (cRef?.instance.valueChange) {\n const pName: string[] = cRef.instance.parentage;\n let parentKey;\n if(pName) parentKey = pName.join('.');\n if (parentKey && !formData[parentKey]) formData[parentKey] = {};\n }\n }\n }\n return this.items;\n }\n\n render(schema: any, view: ViewContainerRef, lColorArray: string[], bColorArray: string[]) {\n this.items = [];\n this.bColorArray = bColorArray;\n this.lColorArray = lColorArray;\n if (schema.properties) {\n const nestLevel = 0;\n this.addFields(schema, view, nestLevel, []);\n }\n const itemsToAdd = [];\n if (this.reservedPropertiesMap.protocolAddressPort) {\n itemsToAdd.push(this.reservedPropertiesMap.protocolAddressPort);\n }\n if (this.reservedPropertiesMap.allowedAddresses && this.reservedPropertiesMap.forwardAddress) {\n itemsToAdd.push(this.reservedPropertiesMap.forwardAddress);\n itemsToAdd.push(this.reservedPropertiesMap.allowedAddresses);\n }\n this.items = [...itemsToAdd, ...this.items];\n return this.items;\n }\n\n validate(schema: any, formData: any): any {\n let errors = {};\n errors = {...errors, ...this.validateFields(schema, formData)};\n return errors\n }\n\n validateFields(schema, formData: any, parentage?: string): any {\n let errors = {};\n for (let key in schema.properties) {\n errors = {...errors, ...this.validateField(key, schema, formData, schema.properties[key], parentage)};\n }\n return errors;\n }\n\n validateField(key, schema, formData, property, parentage): any {\n let errors = {}\n var type = this.getType(property);\n\n if (type == \"object\") {\n let newParentage = key;\n if (parentage) newParentage = `${parentage}.${key}`;\n if (property.properties) {\n errors = {...errors, ...this.validateFields(property, formData, newParentage)};\n }\n } else {\n var theValue: string = _.get(formData, key)\n if (schema.required && schema.required.includes(key) && theValue.length == 0) {\n this.addError(errors, key, `${key} required`);\n\n } else if (type == \"integer\") {\n if (schema.required && schema.required.includes(key)) {\n var min = null;\n var max = null;\n if (property.minimum) min = Number(property.minimum);\n if (property.maximum) max = Number(property.maximum);\n if (isNaN(parseInt(theValue))) {\n this.addError(errors, key, `invalid number`);\n } else {\n var val = Number(theValue);\n if (min != null && val < min) {\n this.addError(errors, key, `minimum value ${min} expected`);\n }\n if (max != null && val > max) {\n this.addError(errors, key, `maximum value ${max} expected`);\n }\n }\n }\n }\n }\n return errors;\n }\n\n setValue(schema: any, key: string, type: string, value: any, parentage: string[]) {\n if (value == null) {\n if (type == \"array\") {\n value = [];\n } else if (type == \"integer\") {\n value = 0;\n } else if (type == \"boolean\") {\n value = false;\n } else {\n value = \"\";\n }\n } else if (type == \"boolean\") {\n if (value) {\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).addClass(\"on\");\n $(\".\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_area\").show();\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key.split(\"forward\").join(\"\").toLowerCase()).prop(\"disabled\", true);\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key.split(\"forward\").join(\"\").toLowerCase()).prop('nodeName') == \"INPUT\") $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key.split(\"forward\").join(\"\").toLowerCase()).val(\"\");\n } else $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).removeClass(\"on\");\n } else {\n if (type == \"array\") {\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_selected\").html(\"\");\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).hasClass(\"checkboxList\")) {\n let total = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).data(\"total\");\n for (let i = 0; i < total; i++) {\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_\" + i).removeClass(\"checked\");\n }\n }\n for (let i = 0; i < value.length; i++) {\n if (typeof value[i] == \"object\") {\n let values = [];\n for (let prop in value[i]) {\n values.push(prop + \": \" + value[i][prop]);\n }\n let types = [];\n\n let obj = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + 'schema_' + key + '_Button');\n let id = obj.data(\"id\");\n let vals = obj.data(\"values\").split(',');\n for (let j = 0; j < vals.length; j++) {\n if ($(\"#\" + id + \"_\" + vals[j]).attr('type') == \"number\") {\n types.push(\"number\");\n } else {\n types.push(\"string\");\n }\n }\n\n let element = $('<div class=\"tag obj\" data-types=\"' + types.toString() + '\">' + values.toString() + '</div>');\n element.click(schema.removeMe);\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_selected\").append(element);\n } else {\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).hasClass(\"checkboxList\")) {\n let total = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).data(\"total\");\n for (let i = 0; i < total; i++) {\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_\" + i).data(\"value\") == value[i]) {\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_\" + i).addClass(\"checked\");\n }\n }\n } else {\n let element = $('<div class=\"tag\">' + value[i] + '</div>');\n element.click(schema.removeMe);\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_selected\").append(element);\n }\n }\n }\n } else {\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).val(value);\n }\n }\n return value;\n }\n\n getValue(key: string, property: any, json: any, parentage: string[]) {\n if (this.getType(property) == \"array\") {\n json[key] = [];\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).hasClass(\"checkboxList\")) {\n let obj = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key);\n let total = obj.data(\"total\");\n for (let i = 0; i < total; i++) {\n let item = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_\" + i);\n if (item.hasClass(\"checked\")) json[key].push(item.data(\"value\"));\n }\n } else {\n $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_selected\").children().each(function (i, e) {\n if ($(e).hasClass(\"obj\")) {\n let items = $(e).html().split(',');\n let types = $(e).data(\"types\").split(',');\n let obj: any = {};\n for (let i = 0; i < items.length; i++) {\n let info = items[i].split(':');\n let prop: any = info.shift();\n let value: any = info.join(':').trim();\n let type = types[i];\n if (type == \"number\" && !isNaN(value)) {\n obj[prop] = Number(value);\n } else {\n obj[prop] = value;\n }\n }\n json[key].push(obj);\n } else {\n json[key].push($(e).html());\n }\n });\n }\n } else if (this.getType(property) == \"boolean\") {\n json[key] = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).hasClass(\"on\");\n } else if (this.getType(property) == \"integer\") {\n let numValue: any = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).val();\n if (numValue != null && numValue.trim().length > 0) {\n numValue = numValue.trim();\n if (numValue == \"\" || isNaN(numValue)) {\n numValue = 0;\n if (key.toLowerCase().indexOf(\"timeout\") >= 0) numValue = 5000;\n } else {\n numValue = Number(numValue)\n }\n json[key] = numValue;\n } else {\n delete json[key];\n }\n } else {\n json[key] = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).val();\n }\n return json;\n }\n\n getListValue(id: string) {\n let listItems: any[] = [];\n $(\"#\" + id + \"_selected\").children().each(function (i, e) {\n if ($(e).hasClass(\"obj\")) {\n let items = $(e).html().split(',');\n let obj: any = {};\n for (let i = 0; i < items.length; i++) {\n let info = items[i].split(':');\n let prop = info.shift();\n let value: any = info.join(':').trim();\n if (!isNaN(value)) {\n obj[prop as string] = Number(value);\n } else {\n obj[prop as string] = value;\n }\n }\n listItems.push(obj);\n } else {\n listItems.push($(e).html());\n }\n });\n return listItems;\n }\n\n validateProperty(schema: any, key: string, property: any, parentage: string[]) {\n let type = this.getType(property);\n if (type == \"object\") {\n for (let subKey in property.properties) {\n this.validateProperty(subKey, property.properties[subKey], key, []);\n }\n } else {\n let elem = $(\"#\" + ((parentage) ? parentage + \"_\" : \"\") + \"schema_\" + key);\n let theValue: any = '';\n if (elem.val() != null) theValue = elem.val();\n if (type == \"integer\") {\n if (schema.required && schema.required.includes(key)) {\n let min = null;\n let max = null;\n if (property.minimum) min = Number(property.minimum);\n if (property.maximum) max = Number(property.maximum);\n if (isNaN(parseInt(theValue))) elem.addClass(\"errors\");\n else {\n let val = Number(theValue);\n if (min != null && val < min) elem.addClass(\"errors\");\n if (max != null && val > max) elem.addClass(\"errors\");\n }\n }\n } else if (type == \"array\") {\n if (schema.data.required && schema.data.required.includes(key)) {\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).hasClass(\"checkboxList\")) {\n let obj = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key);\n let total = obj.data(\"total\");\n let hasSelection = false;\n for (let i = 0; i < total; i++) {\n let item = $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_\" + i);\n if (item.hasClass(\"checked\")) {\n hasSelection = true;\n break;\n }\n }\n if (!hasSelection) $(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key).addClass(\"errors\");\n } else {\n if ($(\"#\" + ((parentage != null) ? parentage + '_' : '') + \"schema_\" + key + \"_selected\").children().length == 0) elem.addClass(\"errors\");\n }\n }\n } else {\n if (schema.data.required && schema.data.required.includes(key) && theValue.length == 0) elem.addClass(\"errors\");\n }\n }\n }\n\n private buildNestedContainer(view: ViewContainerRef, nestLevel: number, key: string, parentage: string[], property: any, parent?: any, parentType?: any) {\n let componentRef = view.createComponent(ObjectComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('bcolor', this.bColorArray[nestLevel % this.bColorArray.length]);\n const embeddedView = componentRef.instance.wrapperContents;\n componentRef.setInput('labelColor', this.lColorArray[nestLevel % this.lColorArray.length]);\n componentRef.setInput('showAdd', parentType === 'array');\n componentRef.setInput('open', key === 'terminators');\n const newParent = [...parentage, key];\n this.addFields(property, embeddedView, ++nestLevel, newParent, parent);\n return componentRef;\n }\n\n private buildBooleanField(view: ViewContainerRef, nestLevel: number, key: string, parentage: string[]) {\n let componentRef = view.createComponent(BooleanToggleInputComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('fieldValue', false);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n componentRef.instance.fieldValueChange.subscribe((event) => {\n this.checkBoxChanged(event, key, componentRef);\n });\n return componentRef;\n }\n\n private buildTextField(view: ViewContainerRef, nestLevel: number, key: string, parentage: string[]) {\n let componentRef = view.createComponent(StringInputComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('fieldValue', '');\n componentRef.setInput('placeholder', `enter a value for ${key}`);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n return componentRef;\n }\n\n private buildNumericField(view: ViewContainerRef, nestLevel: number, key: string, property: any, parentage: string[]) {\n let placeholder = \"enter a numeric value\";\n if (property.minimum != null && property.maximum != null) placeholder = \"numeric value between \" + property.minimum + \"-\" + property.maximum;\n else {\n if (property.minimum != null) placeholder = \"number great than \" + property.minimum;\n if (property.maximum != null) placeholder = \"number less than \" + property.maximum;\n }\n let componentRef = view.createComponent(NumberInputComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('fieldValue', undefined);\n componentRef.setInput('placeholder', placeholder);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n return componentRef;\n }\n\n private buildSelectField(view: ViewContainerRef, nestLevel: number, key: string, list: string[], parentage: string[]) {\n const val = list?.length > 0 ? list[0] : '';\n let componentRef = view.createComponent(SelectorInputComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('fieldValue', val);\n componentRef.setInput('valueList', list);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n return componentRef;\n }\n\n private buildCheckBoxListField(view: ViewContainerRef, nestLevel: number, key: string, list: string[], parentage: string[]) {\n let componentRef = view.createComponent(CheckboxListInputComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('fieldValue', []);\n componentRef.setInput('valueList', list);\n componentRef.setInput('placeholder', `select a value`);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n return componentRef;\n }\n\n checkBoxChanged(event, key, componentRef) {\n this.items.forEach((ref: any) => {\n if (key === 'forwardAddress' && ref.key === 'allowedAddresses') {\n ref.component.location.nativeElement.hidden = !event;\n }\n if (key === 'forwardPort' && ref.key === 'allowedPortRanges') {\n ref.component.location.nativeElement.hidden = !event;\n }\n if (key === 'forwardProtocol' && ref.key === 'allowedProtocols') {\n ref.component.location.nativeElement.hidden = !event;\n }\n });\n }\n\n private buildTextListField(view: ViewContainerRef, nestLevel: number, key: string, parentage: string[]) {\n let componentRef = view.createComponent(TextListInputComponent);\n componentRef.setInput('fieldName', this.getLabel(key));\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('fieldValue', []);\n componentRef.setInput('placeholder', `enter values separated with a comma`);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n return componentRef;\n }\n\n private buildPortRanges(view: ViewContainerRef, nestLevel: number, parentage: string[], properties: ProtocolAddressPort) {\n let componentRef = view.createComponent(PortRangesComponent);\n return {\n key: 'portRanges',\n component: componentRef\n };\n }\n\n private buildForwardingConfig(view: ViewContainerRef, nestLevel: number, parentage: string[], properties: ProtocolAddressPort) {\n let componentRef = view.createComponent(ForwardingConfigComponent);\n return {\n key: 'forwardingconfig',\n component: componentRef,\n required: true\n };\n }\n\n private buildProtocolAddressPort(view: ViewContainerRef, nestLevel: number, parentage: string[], properties: ProtocolAddressPort) {\n let labelPrefix = undefined;\n let protocolList = undefined;\n let showProtocol = false;\n let showAddress = false;\n let showHostName = false;\n let showPort = false;\n if (properties.protocol) {\n showProtocol = true;\n protocolList = properties.protocol?.enum?.map(p => p.toUpperCase());\n if (properties.protocol?.key?.startsWith('forward')) labelPrefix = 'Forward ';\n }\n if (properties.address) {\n showAddress = true;\n if (properties.address?.key?.startsWith('forward')) labelPrefix = 'Forward ';\n }\n if (properties.hostname) {\n showHostName = true;\n if (properties.hostname?.key?.startsWith('forward')) labelPrefix = 'Forward ';\n }\n if (properties.port) {\n showPort = true;\n if (properties.port?.key?.startsWith('forward')) labelPrefix = 'Forward ';\n }\n let componentRef = view.createComponent(ProtocolAddressPortInputComponent);\n if (parentage && !_.isEmpty(parentage)) componentRef.setInput('parentage', parentage);\n componentRef.setInput('showProtocol', showProtocol);\n componentRef.setInput('showAddress', showAddress);\n componentRef.setInput('showHostName', showHostName);\n componentRef.setInput('showPort', showPort);\n componentRef.setInput('protocol', '');\n componentRef.setInput('address', '');\n componentRef.setInput('hostname', '');\n componentRef.setInput('port', '');\n componentRef.setInput('protocolList', protocolList);\n if (labelPrefix) componentRef.setInput('labelPrefix', labelPrefix);\n componentRef.setInput('labelColor', this.lColorArray[nestLevel]);\n return {\n key: 'pap',\n component: componentRef\n }\n }\n\n private getLabel(key: string) {\n return key.replace(/([A-Z])/g, (m, p) => ' ' + p).toUpperCase();\n }\n\n private addFields(schema: any, view: ViewContainerRef, nestLevel: number, parentage: string[], parent?: any) {\n const {specialFields, excludedProperties} = this.addSpecialFields(schema, view, nestLevel, parentage);\n if (specialFields.length > 0) {\n if (parentage.length > 0) {\n if (parent?.items) {\n parent.items = [...parent.items, ...specialFields];\n } else if (parent) {\n parent.items = [...specialFields];\n }\n } else {\n this.items = [...this.items, ...specialFields];\n }\n }\n for (let key in schema.properties) {\n if (excludedProperties.includes(key) || this.propertyExcludes.includes(key)) {\n continue;\n }\n let item: any = {};\n const component = this.addField(view, nestLevel, key, schema.properties[key], parentage, item);\n item.key = key;\n item.component = component;\n item.type = schema.properties[key]?.type;\n this.addSubscribers(item);\n if (this.reservedProperties.includes(key)) {\n this.reservedPropertiesMap[key] = item;\n } if (parentage.length > 0) {\n if (parent?.items) {\n parent.items.push(item);\n } else if (parent) {\n parent.items = [item];\n }\n } else {\n this.items.push(item);\n }\n }\n }\n\n addSubscribers(item) {\n if (item.type !== 'array') {\n return;\n }\n this.subscriptions.add(\n item?.component?.instance?.itemAdded.subscribe((event) => {\n if (!this.itemDataValid(item)) {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Validating Config`,\n 'The entered configuration is invalid. Please update missing/invalid fields and try again.',\n );\n this.growlerService.show(growlerData);\n return\n }\n const itemData = this.addItemData(item);\n if (!item.addedItems || item.addedItems.length <= 0) {\n item.addedItems = [];\n }\n item.addedItems.push(itemData);\n item.component.instance.addedItems = item.addedItems;\n })\n );\n this.subscriptions.add(\n item?.component?.instance?.itemRemoved.subscribe(() => {\n item.addedItems = item.component?.instance?.addedItems;\n })\n );\n }\n\n itemDataValid(item: any) {\n let isValid = true;\n item.items.forEach((subItem) => {\n if (subItem.type === 'array') {\n subItem.addedItems.forEach((addedItem) => {\n if (addedItem?.component?.instance?.isValid) {\n if (!addedItem?.component?.instance?.isValid()) {\n isValid = false;\n }\n }\n });\n } else {\n if (subItem?.component?.instance?.isValid) {\n if (!subItem?.component?.instance?.isValid()) {\n isValid = false;\n }\n }\n }\n });\n return isValid;\n }\n\n addItemData(item) {\n let itemData = {};\n item.items.forEach((subItem) => {\n let isValid = true;\n if (subItem.type === 'array') {\n if (subItem.addedItems) {\n itemData[subItem.key] = subItem.addedItems;\n } else {\n itemData[subItem.key] = [];\n }\n } else {\n if (subItem?.component?.instance?.getProperties) {\n const props = subItem?.component?.instance?.getProperties();\n props.forEach((prop) => {\n itemData[prop.key] = prop.value;\n });\n subItem?.component?.instance?.setProperties({});\n } else if (subItem?.component?.instance?.fieldValue) {\n itemData[subItem.key] = subItem.component.instance.fieldValue;\n subItem.component.instance.fieldValue = undefined;\n } else if (subItem.items) {\n itemData[subItem.key] = this.addItemData(subItem);\n }\n }\n });\n return itemData;\n }\n\n private addFieldToParentItem(itemToAdd, parentage) {\n let parentItem;\n let items = this.items;\n parentage.forEach((parent: any) => {\n items.forEach((item: any) => {\n if (item.key === parent) {\n parentItem = item;\n if (item.items) {\n items = item.items;\n }\n }\n })\n });\n parentItem.items = itemToAdd;\n }\n\n private addSpecialFields(schema: any, view: ViewContainerRef, nestLevel: number, parentage: string[]) {\n const specialFields = [];\n let address = undefined;\n let hostname = undefined;\n let port = undefined;\n let protocol = undefined;\n let forwardProtocol = undefined;\n let forwardPort = undefined;\n let forwardAddress = undefined;\n let portRanges = undefined;\n let excludedProperties = [];\n for (let key in schema.properties) {\n let exclude = true;\n if (key === \"port\") port = schema.properties[key];\n else if (key === \"address\") address = schema.properties[key];\n else if (key === \"hostname\") hostname = schema.properties[key];\n else if (key === \"protocol\") protocol = schema.properties[key];\n else if (key === \"forwardProtocol\") forwardProtocol = schema.properties[key];\n else if (key === \"forwardPort\") forwardPort = schema.properties[key];\n else if (key === \"forwardAddress\") forwardAddress = schema.properties[key];\n else if (key === \"portRanges\") portRanges = schema.properties[key];\n else exclude = false;\n\n if (exclude) {\n excludedProperties.push(key);\n }\n }\n if ((protocol || address || hostname || port) && !(forwardProtocol && forwardAddress && forwardPort)) {\n const properties: ProtocolAddressPort = {protocol, address, hostname, port};\n specialFields.push(this.buildProtocolAddressPort(view, nestLevel, parentage, properties));\n }\n if (forwardProtocol && forwardAddress && forwardPort) {\n const properties: ProtocolAddressPort = {\n protocol: forwardProtocol,\n address: forwardAddress,\n hostname: undefined,\n port: forwardPort\n };\n specialFields.push(this.buildForwardingConfig(view, nestLevel, parentage, properties));\n excludedProperties = [...excludedProperties, ...['allowedAddresses', 'allowedPortRanges', 'allowedProtocols']];\n }\n if (portRanges) {\n specialFields.push(this.buildPortRanges(view, nestLevel, parentage, portRanges));\n }\n return {specialFields, excludedProperties};\n }\n\n private addField(view: ViewContainerRef, nestLevel: number, key: string, property: any, parentage: string[], parent?: any) {\n const type = this.getType(property);\n let componentRef: ComponentRef<any> | null = null;\n if (type == \"object\") {\n if (property.properties) {\n componentRef = this.buildNestedContainer(view, nestLevel, key, parentage, property, parent, type);\n }\n } else if (type == \"integer\") {\n componentRef = this.buildNumericField(view, nestLevel, key, property, parentage);\n } else if (type == \"array\") {\n let items: any = {};\n if (property.allOf && property.allOf.length >= 2) items = property.allOf[1];\n if (property.items) items = property.items;\n if (items.items) items = items.items;\n\n if (items.type && items.type == \"object\" && items.properties != null) {\n const subItems = [];\n for (var subKey in items.properties) {\n subItems.push({\n key: subKey,\n value: items.properties[subKey]\n });\n }\n componentRef = this.buildNestedContainer(view, nestLevel, key, parentage, items, parent, type);\n } else if (Array.isArray(items.enum)) {\n componentRef = this.buildCheckBoxListField(view, nestLevel, key, items.enum, parentage);\n } else {\n\n componentRef = this.buildTextListField(view, nestLevel, key, parentage);\n }\n } else if (type == \"boolean\") {\n componentRef = this.buildBooleanField(view, nestLevel, key, parentage);\n } else if (property.enum && property.enum.length > 0) {\n componentRef = this.buildSelectField(view, nestLevel, key, property.enum, parentage);\n\n } else if (type == \"string\") {\n componentRef = this.buildTextField(view, nestLevel, key, parentage);\n }\n return componentRef;\n }\n\n private addError(errors: any, key: string, msg: string) {\n if (errors[key]) errors[key] = `${errors[key]}; ${msg}`;\n else errors[key] = msg;\n return errors;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {GrowlerService} from '../features/messaging/growler.service';\nimport {GrowlerModel} from \"../features/messaging/growler.model\";\nimport {AngularCsv} from 'angular-csv-ext/dist/Angular-csv';\nimport {saveAs} from 'file-saver';\nimport {isEmpty, isBoolean, get} from 'lodash';\n\nconst defaultOptions = {\n fieldSeparator: ',',\n quoteStrings: '\"',\n decimalseparator: '.',\n showLabels: true,\n showTitle: false,\n useBom: true,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CsvDownloadService {\n constructor(\n private growler: GrowlerService\n ) {\n }\n\n public download(\n filename: string,\n items: any[],\n columns: any[],\n translateStatus?: boolean,\n isEndpoint?: boolean,\n options?: any,\n toUpperCase = true\n ) {\n const useOptions = options != null ? options : defaultOptions;\n\n const data = [];\n\n if (items.length > 0) {\n // Construct the header rows\n const header = {};\n\n for (const column of columns) {\n const key = column.path ? column.path : column;\n const headerText = column.label ? column.label : (toUpperCase ? column.toUpperCase() : column);\n header[key] = headerText;\n }\n data.push(header);\n\n // Construct each row based on the columns defined\n for (const item of items) {\n const row = {};\n\n for (const column of columns) {\n const path = column.path ? column.path : column;\n let columnValue = get(item, path);\n if (isBoolean(columnValue)) {\n columnValue = '' + columnValue;\n }\n if (isEmpty(columnValue)) {\n row[path] = '';\n } else {\n if (Array.isArray(columnValue)) {\n row[path] = columnValue.join(',');\n } else {\n row[path] = columnValue;\n }\n }\n }\n data.push(row);\n }\n\n const csv = new AngularCsv(data, filename, useOptions);\n } else {\n this.growler.show(\n new GrowlerModel(\n 'warning',\n 'No Data',\n 'Dataset is Empty',\n 'The system must have data in order to generate an export file.'\n )\n );\n }\n }\n\n downloadAll(data, filename, useOptions?, type?) {\n let fileType = 'csv';\n switch (type) {\n case 'text/csv':\n fileType = 'csv';\n break;\n case 'application/json':\n fileType = 'json';\n break;\n case 'application/x-yaml':\n fileType = 'yml';\n break;\n }\n if (useOptions && useOptions.isEndpoint) {\n data = data.replace('hasApiSession', 'online');\n }\n const newBlob = new Blob([decodeURIComponent(encodeURI(data))], {\n type: `${type};charset=utf-8;`,\n });\n saveAs(newBlob, `${filename}.${fileType}`);\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Inject, Injectable} from '@angular/core';\nimport {DataTableFilterService, FilterObj} from \"../../features/data-table/data-table-filter.service\";\nimport _, {isEmpty, unset} from \"lodash\";\nimport moment from \"moment\";\nimport {ListPageServiceClass} from \"../../shared/list-page-service.class\";\nimport {\n TableColumnDefaultComponent\n} from \"../../features/data-table/column-headers/table-column-default/table-column-default.component\";\nimport {CallbackResults} from \"../../features/list-page-features/list-page-form/list-page-form.component\";\nimport {SchemaService} from \"../../services/schema.service\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {CsvDownloadService} from \"../../services/csv-download.service\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../../features/extendable/extensions-noop.service\";\nimport {Service} from \"../../models/service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationsPageService extends ListPageServiceClass {\n\n private paging = this.DEFAULT_PAGING;\n\n resourceType = 'configs';\n selectedConfig: any = {};\n modalType = '';\n\n override menuItems = [\n {name: 'Edit', action: 'update'},\n {name: 'Delete', action: 'delete'},\n ]\n\n constructor(\n private schemaSvc: SchemaService,\n @Inject(SETTINGS_SERVICE) settings: SettingsService,\n filterService: DataTableFilterService,\n csvDownloadService: CsvDownloadService,\n @Inject(SHAREDZ_EXTENSION) extService: ExtensionService\n ) {\n super(settings, filterService, csvDownloadService, extService);\n }\n\n initTableColumns(): any {\n\n const typeRenderer = (row) => {\n return row?.data?.configType?.name;\n };\n\n const createdAtHeaderComponentParams = {\n filterType: 'DATETIME',\n };\n return [\n {\n colId: 'name',\n field: 'name',\n headerName: 'Name',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: this.headerComponentParams,\n cellRenderer: this.nameColumnRenderer,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.openUpdate(data.data);\n },\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: true,\n filter: true,\n sortColumn: this.sort.bind(this)\n },\n {\n colId: 'type',\n field: 'type',\n headerName: 'Type',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: this.typeHeaderComponentParams,\n cellRenderer: typeRenderer,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: true,\n filter: true,\n sortColumn: this.sort.bind(this),\n },\n {\n colId: 'createdAt',\n field: 'createdAt',\n headerName: 'Created At',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: createdAtHeaderComponentParams,\n valueFormatter: this.createdAtFormatter,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n }\n ];\n }\n\n _typeHeaderComponentParams = {\n filterType: 'SELECT',\n enableSorting: true,\n filterOptions: [\n { label: 'ALL', value: '' },\n ],\n getFilterOptions: () => {\n return this.typeHeaderComponentParams.filterOptions;\n }\n };\n\n get typeHeaderComponentParams() {\n return this._typeHeaderComponentParams;\n }\n\n set typeHeaderComponentParams(params) {\n this._typeHeaderComponentParams = params;\n }\n\n getConfigTypes() {\n const sort = {\n ordering: 'asc',\n sortBy: 'name'\n };\n return super.getTableData('config-types', this.DEFAULT_PAGING, [], sort)\n .then((results: any) => {\n this.typeHeaderComponentParams.filterOptions = [{ label: 'ALL', value: '' }];\n results.data.forEach((configType: any) => {\n this.typeHeaderComponentParams.filterOptions.push({\n label: configType.name,\n value: configType.id\n });\n });\n return this.typeHeaderComponentParams;\n });\n }\n\n getData(filters?: FilterObj[], sort?: any) {\n // we can customize filters or sorting here before moving on...\n return super.getTableData('configs', this.paging, filters, sort)\n .then((results: any) => {\n return this.processData(results);\n });\n }\n\n validate = (formData:any, schema: any): Promise<CallbackResults> => {\n let errors = {};\n if(schema) {\n for (var key in schema.properties) {\n var property = schema.properties[key];\n errors = {...errors, ...this.validateProperty(key, property, formData, schema)};\n }\n return Promise.resolve({passed: _.isEmpty(errors), errors});\n } else {\n throw new Error('no schema definition selected');\n }\n }\n\n validateProperty(key, property, formData, schema, parentKey?): any {\n let errors = {}\n var type = this.schemaSvc.getType(property);\n if (type == \"object\") {\n for (var subKey in property.properties) {\n errors = {...errors, ...this.validateProperty(subKey, property.properties[subKey], formData, schema, key)};\n }\n } else {\n var theValue: string = _.get(formData, key)\n if (type == \"integer\") {\n if (schema.required && schema.required.includes(key)) {\n var min = null;\n var max = null;\n if (property.minimum) min = Number(property.minimum);\n if (property.maximum) max = Number(property.maximum);\n if (isNaN(parseInt(theValue))) {\n errors[key] = 'invalid number';\n }\n else {\n var val = Number(theValue);\n if (min != null && val < min) {\n errors[key] = `minimum value ${min} expected`;\n }\n if (max != null && val > max) {\n errors[key] = `maximum value ${max} expected`;\n }\n }\n }\n } else if (type == \"array\") {\n // if (schema.required && schema.required.includes(key)) {\n // if ($(\"#\" + ((parentKey != null) ? parentKey + '_' : '') + \"schema_\" + key).hasClass(\"checkboxList\")) {\n // var obj = $(\"#\" + ((parentKey != null) ? parentKey + '_' : '') + \"schema_\" + key);\n // var total = obj.data(\"total\");\n // var hasSelection = false;\n // for (var i = 0; i < total; i++) {\n // var item = $(\"#\" + ((parentKey != null) ? parentKey + '_' : '') + \"schema_\" + key + \"_\" + i);\n // if (item.hasClass(\"checked\")) {\n // hasSelection = true;\n // break;\n // }\n // }\n // if (!hasSelection) $(\"#\" + ((parentKey != null) ? parentKey + '_' : '') + \"schema_\" + key).addClass(\"errors\");\n // } else {\n // if ($(\"#\" + ((parentKey != null) ? parentKey + '_' : '') + \"schema_\" + key + \"_selected\").children().length == 0) elem.addClass(\"errors\");\n // }\n // }\n } else {\n if (schema.required && schema.required.includes(key) && theValue.length == 0) {\n errors[key] = `${key} required`;\n }\n }\n }\n return errors;\n }\n\n private processData(results: any) {\n if (!isEmpty(results?.data)) {\n //pre-process data before rendering\n results.data = this.addActionsPerRow(results);\n }\n return results;\n }\n\n private addActionsPerRow(results: any): any[] {\n return results.data.map((row) => {\n row.actionList = ['update', 'delete'];\n return row;\n });\n }\n\n public openUpdate(item?: any) {\n this.modalType = 'config';\n if (item) {\n this.selectedConfig = item;\n this.selectedConfig.badges = [];\n unset(this.selectedConfig, '_links');\n } else {\n this.selectedConfig = new Service();\n }\n this.sideModalOpen = true;\n }\n}\n","import {Inject, Injectable, InjectionToken} from '@angular/core';\nimport {SettingsServiceClass} from \"./settings-service.class\";\nimport {SETTINGS_SERVICE} from \"./settings.service\";\n\nexport const ZITI_TAB_OVERRIDES = new InjectionToken<string>('ZITI_TAB_OVERRIDES');\n\nexport interface TabInterceptorService {\n override(key: string, tabs: any[]): any[];\n}\n\nexport class NoopTabInterceptorService implements TabInterceptorService {\n override(key: string, tabs: any[]): any[] {\n return tabs;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TabNameService {\n\n pageToTabsMap = new Map<string, any[]>(\n [\n [\"identities\", [\n {label: 'Identities', url: '/identities'},\n {label: 'Recipes', url: '/recipes', hidden: !this.settings.supportedFeatures?.recipies},\n {label: 'Terminators', url: '/terminators'},\n {label: 'Posture Checks', url: '/posture-checks'},\n ]\n ],\n [\"services\", [\n {label: 'Services', url: '/services'},\n {label: 'Configurations', url: '/configs'},\n {label: 'Config Types', url: '/config-types'},\n ]\n ],\n [\"routers\", [\n {label: 'Routers', url: '/routers'},\n {label: 'Transit Routers', url: '/transit-routers'},\n {label: 'Router Policies', url: '/router-policies'},\n ],\n ],\n [\"policies\", [\n {label: 'Service Policies', url: '/service-policies'},\n {label: 'Router Policies', url: '/router-policies'},\n {label: 'Service Router Policies', url: '/service-router-policies'},\n {label: 'Auth Policies', url: '/auth-policies'},\n {label: 'JWT Signers', url: '/jwt-signers'},\n ],\n ],\n ]\n );\n\n constructor(\n @Inject(ZITI_TAB_OVERRIDES) private interceptor: TabInterceptorService,\n @Inject(SETTINGS_SERVICE) private settings: SettingsServiceClass\n ) {\n }\n\n getTabs(key: string) {\n const val = this.pageToTabsMap.get(key);\n return this.interceptor.override(key, val)\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {ExtendableComponent} from \"../extendable/extendable.component\";\nimport {Component, DoCheck, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from \"@angular/core\";\n\nimport {defer, isEqual, unset, debounce} from \"lodash\";\nimport {GrowlerModel} from \"../messaging/growler.model\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../extendable/extensions-noop.service\";\n\n// @ts-ignore\nconst {context, tags, resources, service, app} = window;\n\n@Component({\n template: '',\n styleUrls: ['./projectable-form.class.scss']\n})\nexport abstract class ProjectableForm extends ExtendableComponent implements DoCheck {\n @Input() abstract formData: any;\n @Output() abstract close: EventEmitter<any>;\n @Output() dataChange: EventEmitter<any> = new EventEmitter<any>();\n @ViewChild('nameFieldInput') nameFieldInput: ElementRef;\n\n abstract clear(): void;\n abstract save(): void;\n\n public errors: any = {};\n protected entityType = 'identity';\n\n moreActions: any[] = [];\n tagElements: any = [];\n tagData: any = [];\n hideTags = false;\n initData: any = {};\n _dataChange = false;\n\n checkDataChangeDebounced = debounce(this.checkDataChange, 100, {maxWait: 100});\n\n protected constructor(\n protected growlerService: GrowlerService,\n @Inject(SHAREDZ_EXTENSION) protected extService: ExtensionService\n ) {\n super();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.errors = {};\n this.nameFieldInput.nativeElement.focus();\n if (this.extService?.moreActions) {\n this.moreActions = [...this.moreActions, ...this.extService.moreActions];\n }\n }\n\n showMoreChanged(showMore) {\n if (!showMore || this.hideTags) {\n return;\n }\n this.resetTags()\n }\n\n loadTags() {\n this.hideTags = localStorage.getItem(\"hideTags\")==\"yes\";\n if (this.hideTags) {\n return;\n }\n service.call(\"tags\", {}, this.tagsLoaded.bind(this));\n }\n\n tagsLoaded(results) {\n tags.data = results;\n context.set(tags.name, tags.data);\n tags.tagData = [];\n tags.data.forEach((tag) => {\n let html;\n if (tag.objects==\"all\" || tag.objects.indexOf(this.entityType)>=0) {\n tags.tagData[tags.tagData.length] = tag;\n html = this.getTagContent(tag);\n const tagEl = {\n label: tag.label,\n content: html\n }\n this.tagElements.push(tagEl)\n }\n });\n }\n\n resetTags() {\n unset(tags, 'map');\n if (this.hideTags) {\n return;\n }\n defer(() => {\n tags.reset(this.formData);\n tags.events();\n })\n }\n\n getTagContent(tag) {\n let html = '';\n if (tag.value==\"string\") {\n html += '<input id=\"Tag_'+tag.id+'\" type=\"text\" data-tag=\"'+tag.id+'\" maxlength=\"500\" placeholder=\"'+tag.description+'\" />';\n } else if (tag.value==\"boolean\") {\n html += '<input id=\"Tag_'+tag.id+'\" type=\"checkbox\" data-tag=\"'+tag.id+'\" />';\n } else if (tag.value==\"map\") {\n html += '<div id=\"Tag_'+tag.id+'_Map\" data-map=\"'+tag.id+'\" class=\"map\"></div>';\n html += '<input id=\"Tag_'+tag.id+'\" type=\"text\" data-tag=\"'+tag.id+'\" maxlength=\"500\" placeholder=\"'+tag.description+'\" />';\n } else if (tag.value==\"avatar\") {\n html += '<div class=\"formRow\">';\n html += '<div id=\"Tag_'+tag.id+'\" data-id=\"'+tag.id+'\" data-resource=\"avatar\" class=\"resource icon profile\" title=\"'+tag.description+'\" style=\"background-image: url('+tag.default+')\"></div><div id=\"Tag_Resources_'+tag.id+'\" class=\"resources\" data-id=\"'+tag.id+'\" data-resources=\"avatar\"></div>';\n html += '<input id=\"Tag_'+tag.id+'_Hider\" data-tag=\"'+tag.id+'\" type=\"hidden\"/>';\n resources.get(tag.id);\n context.addListener(\"resources-\"+tag.id, tags.loaded);\n } else if (tag.value==\"icon\") {\n html += '<div class=\"formRow\">';\n html += '<div id=\"Tag_'+tag.id+'\" data-id=\"'+tag.id+'\" data-resource=\"icon\" class=\"resource icon\" title=\"'+tag.description+'\" style=\"background-image: url('+tag.default+')\"></div><div id=\"Tag_Resources_'+tag.id+'\" class=\"resources\" data-id=\"'+tag.id+'\" data-resources=\"icon\"></div>';\n html += '<input id=\"Tag_'+tag.id+'_Hider\" data-tag=\"'+tag.id+'\" type=\"hidden\"/>';\n resources.get(tag.id);\n context.addListener(\"resources-\"+tag.id, tags.loaded);\n } else if (tag.value==\"array\") {\n html += '<div id=\"Tag_'+tag.id+'_Selected\"></div>';\n html += '<input id=\"Tag_'+tag.id+'\" type=\"text\" data-tag=\"'+tag.id+'\" data-array=\"'+tag.id+'\" maxlength=\"500\" placeholder=\"'+tag.description+'\" />';\n }\n return html;\n }\n\n getTagValues() {\n return tags.val();\n }\n\n closeModal(refresh = true, ignoreChanges = false, data?, event?): void {\n if (!ignoreChanges && this._dataChange) {\n const confirmed = confirm('You have unsaved changes. Do you want to leave this page and discard your changes or stay on this page?');\n if (!confirmed) {\n return;\n }\n }\n this.close.emit({refresh: refresh});\n if (event) {\n event.stopPropagation();\n }\n }\n\n ngDoCheck() {\n this.checkDataChangeDebounced();\n }\n\n protected checkDataChange() {\n const dataChange = !isEqual(this.initData, this.formData);\n if (dataChange !== this._dataChange) {\n this.dataChange.emit(dataChange);\n }\n this._dataChange = dataChange;\n app.isDirty = false;\n }\n\n copyToClipboard(val) {\n navigator.clipboard.writeText(val);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `API call URL copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input, OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from \"@angular/core\";\n\nimport {GrowlerService} from '../messaging/growler.service';\nimport {GrowlerModel} from '../messaging/growler.model';\n\nimport _ from 'lodash';\nimport {createAjvValidator, JSONEditor, Mode} from \"vanilla-jsoneditor\";\n\n@Component({\n selector: 'lib-json-view',\n templateUrl: './json-view.component.html',\n styleUrls: ['./json-view.component.scss'],\n})\nexport class JsonViewComponent implements AfterViewInit, OnChanges {\n\n @Input() data: any = {};\n @Input() schema: any = {};\n @Input() readOnly: boolean = false;\n @Input() jsonInvalid: boolean = false;\n @Input() showCopy: boolean = false;\n @Output() dataChange: EventEmitter<any> = new EventEmitter();\n @Output() jsonChange: EventEmitter<any> = new EventEmitter();\n @Output() jsonInvalidChange: EventEmitter<any> = new EventEmitter();\n onChangeDebounced;\n schemaRefs: any;\n content: any;\n @ViewChild('editor', {static: false}) editorDiv!: ElementRef;\n validator: any;\n private editor: JSONEditor;\n private schemaDefinitions: any;\n oldData: any;\n currentData: any;\n constructor(private growlerService: GrowlerService) {\n this.onChangeDebounced = _.debounce(this.onChange.bind(this), 400);\n }\n\n ngAfterViewInit() {\n if (this.schema) {\n this.validator = createAjvValidator({\n schema: this.schema,\n schemaDefinitions: this.schemaDefinitions,\n ajvOptions: {}\n });\n }\n this.initEditor();\n if (this.readOnly) {\n this.watchData();\n }\n }\n\n initEditor() {\n this.currentData = this.data;\n this.content = {\n text: undefined,\n json: this.data\n };\n this.editor = new JSONEditor({\n target: this.editorDiv.nativeElement,\n props: {\n validator: this.validator,\n content: this.content,\n readOnly: this.readOnly,\n mode: Mode.text,\n onChange: (updatedContent, previousContent, {contentErrors, patchResult}) => {\n this.content = updatedContent\n if (this.content?.json) {\n this.dataChange.emit(this.content.json);\n this.currentData = this.content.json;\n } else if (this.content?.text) {\n try {\n const newData = JSON.parse(this.content.text)\n this.dataChange.emit(newData);\n this.currentData = newData;\n } catch (e) {\n this.jsonInvalidChange.emit(false);\n }\n }\n const errors = this.validate(this.currentData);\n if (!errors && !_.isEmpty(this.content.text)) {\n this.jsonInvalidChange.emit(false);\n } else {\n this.jsonInvalidChange.emit(true);\n }\n }\n }\n });\n }\n\n updateEditor() {\n if (_.isEqual(this.oldData, this.data)) {\n return;\n }\n this.oldData = _.cloneDeep(this.data);\n this.content = {\n json: this.oldData\n };\n this.editor.update(this.content);\n }\n\n watchData() {\n const watchDataObj = (originalData, self, callback) => {\n _.delay(() => {\n const currentData = self.data;\n if (!_.isEqual(originalData, currentData)) {\n callback();\n originalData = _.cloneDeep(currentData);\n }\n watchDataObj(originalData, self, callback);\n }, 100);\n };\n const originalData = _.cloneDeep(this.data);\n watchDataObj(originalData, this, (val) => {\n this.updateEditor();\n });\n }\n\n async onChange() {\n let newData;\n try {\n newData = this.editor.get();\n } catch (e) {\n console.log(e);\n }\n\n if (newData) {\n this.dataChange.emit(newData);\n }\n\n const errors = await this.validate(newData);\n if (!errors) {\n if (newData) {\n this.jsonChange.emit(newData);\n }\n this.jsonInvalidChange.emit(false);\n } else {\n this.jsonInvalidChange.emit(true);\n }\n }\n\n public getData() {\n return this.editor.get();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['schema']) {\n this.schema = changes['schema'].currentValue;\n\n if(this.schema) {\n if (this.validator) {\n this.validator.schema = this.schema;\n } else {\n this.validator = createAjvValidator({\n schema: changes['schema'].currentValue,\n schemaDefinitions: this.schemaDefinitions,\n ajvOptions: {}\n });\n }\n }\n }\n }\n\n public validate(newData: any = undefined) {\n return this.editor.validate();\n }\n\n enterKeyPressed(event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n copyToClipboad() {\n var clipData = JSON.stringify(JSON.parse(JSON.stringify(this.data)),null,2);\n navigator.clipboard.writeText(clipData);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `API call JSON body copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n}\n","<div id=\"jsoneditor\" [ngClass]=\"{'read-only': readOnly}\" #editor (keyup.enter)=\"enterKeyPressed($event)\"></div>\n<div *ngIf=\"showCopy\" class=\"icon-copy copy\" (click)=\"copyToClipboad()\"></div>","import {Component, ComponentRef, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef} from '@angular/core';\nimport {JsonEditorComponent, JsonEditorOptions} from \"ang-jsoneditor\";\nimport {defer, isBoolean, isEmpty, isNil, keys} from \"lodash\";\nimport {SchemaService} from \"../../services/schema.service\";\n\n@Component({\n selector: 'lib-config-editor',\n templateUrl: './config-editor.component.html',\n styleUrls: ['./config-editor.component.scss']\n})\nexport class ConfigEditorComponent implements OnInit {\n\n items: any[] = [];\n\n lColorArray = [\n 'white',\n 'white',\n 'white',\n ]\n\n bColorArray = [\n 'var(--formBase)',\n 'var(--formGroup)',\n 'var(--formSubGroup)'\n ]\n hideConfigJSON = false;\n\n @Input() configErrors: any = {};\n @Output() configErrorsChange = new EventEmitter<any>();\n\n _configData: any = {};\n @Input() set configData(data) {\n this._configData = data;\n };\n @Output() configDataChange = new EventEmitter<any>();\n get configData() {\n return this._configData;\n }\n\n _showJsonView = false;\n @Input() set showJsonView(showJsonView: boolean) {\n this._showJsonView = showJsonView;\n this.updateConfigData();\n }\n get showJsonView() {\n return this._showJsonView;\n }\n\n _schema = false;\n @Input() set schema(schema: any) {\n this._schema = schema;\n this.createForm();\n this.updateConfigData();\n }\n\n get schema() {\n return this._schema;\n }\n\n @ViewChild(\"dynamicform\", {read: ViewContainerRef}) dynamicForm!: ViewContainerRef;\n @ViewChild(JsonEditorComponent, {static: false}) editor!: JsonEditorComponent;\n constructor(private schemaSvc: SchemaService) {\n }\n\n ngOnInit() {\n this.createForm();\n }\n\n createForm() {\n this.clearForm();\n if (this.dynamicForm && this.schema) {\n this.renderSchema(this.schema);\n }\n }\n\n clearForm() {\n this.items.forEach((item: any) => {\n if (item?.component) item.component.destroy();\n });\n this.configErrors = {};\n this.items = [];\n }\n\n renderSchema(schema: any) {\n if (schema.properties) {\n this.items = this.schemaSvc.render(schema, this.dynamicForm, this.lColorArray, this.bColorArray);\n for (let obj of this.items) {\n const cRef = obj.component;\n cRef.instance.errors = this.configErrors;\n if (cRef?.instance.valueChange) {\n const pName: string[] = cRef.instance.parentage;\n let parentKey;\n if(pName) parentKey = pName.join('.');\n //if (parentKey && !this.formData[parentKey]) this.formData[parentKey] = {};\n }\n }\n }\n }\n\n updateConfigData() {\n if (!this.showJsonView) {\n this.updateFormView(this.items, this.configData);\n } else {\n this.hideConfigJSON = true;\n defer(() => {\n this.getConfigDataFromForm();\n });\n }\n }\n\n updateFormView(items, data: any = {}) {\n items.forEach((item) => {\n if (item.items) {\n if (item.type === 'array') {\n if (item?.component?.instance?.addedItems) {\n item.addedItems = data[item.key] || [];\n item.component.instance.addedItems = data[item.key] || [];\n }\n this.updateFormView(item.items, {});\n } else {\n this.updateFormView(item.items, data[item.key]);\n }\n } else if (item?.component?.instance?.setProperties) {\n let val;\n switch (item.key) {\n case 'forwardingconfig':\n val = {\n protocol: data.protocol,\n address: data.address,\n port: data.port,\n forwardProtocol: data.forwardProtocol,\n forwardAddress: data.forwardAddress,\n forwardPort: data.forwardPort,\n allowedProtocols: data.allowedProtocols,\n allowedAddresses: data.allowedAddresses,\n allowedPortRanges: data.allowedPortRanges\n }\n break;\n case 'pap':\n val = {\n protocol: data.protocol,\n address: data.address,\n port: data.port,\n hostname: data.hostname,\n }\n break;\n default:\n val = data[item.key];\n break;\n }\n item?.component?.instance?.setProperties(val);\n } else if (item?.component?.setInput) {\n item.component.setInput('fieldValue', data[item.key]);\n }\n });\n return data;\n }\n\n getConfigDataFromForm() {\n const data = {};\n this.addItemsToConfig(this.items, data);\n this._configData = data;\n this.hideConfigJSON = false;\n this.configDataChange.emit(this.configData);\n }\n\n addItemsToConfig(items, data: any = {}, parentType = 'object') {\n items.forEach((item) => {\n if (item.type === 'array') {\n if (item.addedItems) {\n data[item.key] = item.addedItems;\n } else {\n data[item.key] = [];\n }\n } else if (item.type === 'object') {\n const val = this.addItemsToConfig(item.items, {}, item.type);\n let hasDefinition = false;\n keys(val).forEach((key) => {\n if (isBoolean(val[key]) || (!isEmpty(val[key]) && !isNil(val[key]))) {\n hasDefinition = true;\n }\n });\n data[item.key] = hasDefinition ? val : undefined;\n } else {\n let props = [];\n if (item?.component?.instance?.getProperties) {\n props = item?.component?.instance?.getProperties();\n } else if (item?.component?.instance) {\n props = [{key: item.key, value: item.component.instance.fieldValue}];\n }\n props.forEach((prop) => {\n data[prop.key] = prop.value;\n });\n }\n });\n return data;\n }\n\n validateConfig() {\n this.configErrors = {};\n const configItemsValid = this.validateConfigItems(this.items);\n if (!configItemsValid) {\n this.configErrors['configData'] = true;\n }\n this.configErrorsChange.emit(this.configErrors);\n return isEmpty(this.configErrors);\n }\n\n validateConfigItems(items, parentType = 'object') {\n let isValid = true;\n items.forEach((item) => {\n if (item.type === 'object') {\n if (!this.validateConfigItems(item.items, item.type)) {\n isValid = false;\n }\n } else if (item?.component?.instance?.isValid) {\n if (!item?.component?.instance?.isValid()) {\n isValid = false;\n }\n }\n });\n return isValid;\n }\n}\n","<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>","export class Config {\n name = '';\n data = {};\n configTypeId = '';\n};","import {Injectable, Inject} from '@angular/core';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {Resolver} from \"@stoplight/json-ref-resolver\";\nimport {SchemaService} from \"../../../services/schema.service\";\nimport {defer, isBoolean, isEmpty, isNil, keys} from \"lodash\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {Config} from \"../../../models/config\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../../extendable/extensions-noop.service\";\nimport {SERVICE_EXTENSION_SERVICE} from \"../service/service-form.service\";\nimport {ValidationService} from \"../../../services/validation.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationService {\n private configTypes: any[] = [];\n\n items: any[] = [];\n errors: any[] = [];\n saveDisabled = false;\n configJsonView = false;\n configDataLabel = 'Configuration Form';\n\n constructor(\n @Inject(ZITI_DATA_SERVICE) private dataService: ZitiDataService,\n @Inject(SHAREDZ_EXTENSION)private extService: ExtensionService,\n private schemaSvc: SchemaService,\n private growlerService: GrowlerService,\n private validationService: ValidationService\n ) {\n }\n\n async getSchema(schemaType: string): Promise<any> {\n if (!schemaType) return Promise.resolve();\n for (let idx = 0; idx < this.configTypes.length; idx++) {\n if(this.configTypes[idx].id === schemaType)\n return this.configTypes[idx].schema;\n }\n }\n\n getConfigTypes() {\n const paging = {\n filter: \"\",\n noSearch: false,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 50\n };\n return this.dataService.get('config-types', paging, [])\n .then(async (body: any) => {\n if (body.error) throw body.error;\n this.configTypes = [];\n const promises: Promise<any>[] = [];\n const resolver = new Resolver();\n body.data.map( (row: any) => {\n const schema = row.schema;\n promises.push(resolver.resolve(schema, {}).then(s => {\n row.schema = s.result;\n this.configTypes.push(row);\n }))\n });\n return Promise.all(promises).then(() => this.configTypes);\n });\n }\n\n getAssociatedServices(configId) {\n return this.dataService.getSubdata('configs', configId, 'services').then((result: any) => {\n const associatedServices = result.data;\n const associatedServiceNames = associatedServices.map((svc) => {\n return svc.name;\n });\n return {associatedServices, associatedServiceNames};\n });\n }\n\n toggleJSONView() {\n this.configJsonView = !this.configJsonView;\n this.configDataLabel = this.configJsonView ? 'JSON Configuration' : 'Configuration Form';\n if (this.configJsonView) {\n //this.configSubscriptions.unsubscribe();\n }\n }\n\n save(formData) {\n const isUpdate = !isEmpty(formData.id);\n const data: any = this.getConfigDataModel(formData, isUpdate);\n let prom;\n if (isUpdate) {\n prom = this.dataService.patch('configs', data, formData.id, true);\n } else {\n prom = this.dataService.post('configs', data, true);\n }\n\n return prom.then(async (result: any) => {\n const id = isUpdate ? formData.id : (result?.data?.id || result?.id);\n let config = await this.dataService.getSubdata('configs', id, '').then((svcData) => {\n return svcData.data;\n });\n return this.extService.formDataSaved(config).then((formSavedResult: any) => {\n if (!formSavedResult) {\n return config;\n }\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Config ${isUpdate ? 'Updated' : 'Created'}`,\n `Successfully ${isUpdate ? 'updated' : 'created'} Config: ${formData.name}`,\n );\n this.growlerService.show(growlerData);\n return config;\n }).catch((result) => {\n return false;\n });\n }).catch((resp) => {\n let errorMessage;\n if (resp?.error?.error?.cause?.message) {\n errorMessage = resp?.error?.error?.cause?.message;\n } else if (resp?.error?.error?.cause?.reason) {\n errorMessage = resp?.error?.error?.cause?.reason;\n }else if (resp?.error?.message) {\n errorMessage = resp?.error?.message;\n } else {\n errorMessage = 'An unknown error occurred';\n }\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating Service`,\n errorMessage,\n );\n this.growlerService.show(growlerData);\n throw resp;\n })\n }\n\n getConfigDataModel(formData, isUpdate) {\n const saveModel = new Config();\n const modelProperties = keys(saveModel);\n modelProperties.forEach((prop) => {\n switch(prop) {\n default:\n saveModel[prop] = formData[prop];\n }\n });\n saveModel.data = this.validationService.redefineObject(saveModel.data);\n return saveModel;\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {isFunction} from 'lodash';\n\n@Component({\n selector: 'lib-form-header',\n templateUrl: './form-header.component.html',\n styleUrls: ['./form-header.component.scss']\n})\nexport class FormHeaderComponent {\n @Input() data: any = {};\n @Input() title = '';\n @Input() moreActions: any = [];\n @Input() formView = 'simple';\n @Input() saveDisabled = false;\n @Input() saveTooltip = '';\n @Input() actionButtonText = 'Save';\n @Input() moreActionsText = 'More Actions';\n @Output() formViewChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() actionRequested: EventEmitter<any> = new EventEmitter<any>();\n\n showActionsDropDown = false;\n\n constructor() {}\n\n get hasMoreActions() {\n let hasMoreActions = false;\n this.moreActions?.forEach(action => {\n if (!isFunction(action.hidden) || !action.hidden()) {\n hasMoreActions = true;\n }\n });\n return hasMoreActions;\n }\n\n requestAction(action) {\n if (action.name === 'toggle-view') {\n if (action.data === 'simple') {\n this.formView = 'raw';\n } else {\n this.formView = 'simple';\n }\n action.data = this.formView;\n this.formViewChange.emit();\n }\n if (action.callback) {\n action.callback();\n }\n this.actionRequested.emit({name: action.name, data: action.data})\n this.showActionsDropDown = false;\n }\n\n showMoreActions() {\n this.showActionsDropDown = true;\n }\n\n closeActionsMoreActions() {\n this.showActionsDropDown = false;\n }\n}\n","<div class=\"form-header-container\" [ngClass]=\"{'show-more-actions': (moreActions && moreActions.length > 0 && data.id)}\">\n <div class=\"form-header-group\">\n <div class=\"form-title-container\">\n <div class=\"form-title-back-button\" (click)=\"requestAction({name: 'close'})\">\n <div class=\"form-title-back-button-image\"></div>\n <div class=\"form-title-back-button-line\"></div>\n </div>\n <div class=\"form-header-title-text\">\n <span class=\"form-title\">{{title}}</span>\n <span class=\"form-title title-name\" *ngIf=\"data.name\">{{data.name}}</span>\n </div>\n </div>\n <div class=\"header-actions-container\">\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'simple'}\"\n (click)=\"requestAction({name: 'toggle-view', data: 'raw'})\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"requestAction({name: 'toggle-view', data: formView})\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': formView === 'simple', 'toggle-right': formView === 'raw'}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'raw'}\"\n (click)=\"requestAction({name:'toggle-view', data: 'simple'})\"\n >\n JSON\n </span>\n </div>\n <div class=\"more-actions-container\" *ngIf=\"hasMoreActions\" (click)=\"showMoreActions()\" (clickOutside)=\"closeActionsMoreActions()\">\n <div class=\"more-actions-button\">\n <div class=\"more-actions-label\">\n <div class=\"more-actions-text\">{{moreActionsText}}</div>\n <div class=\"more-actions-arrow\"></div>\n </div>\n </div>\n <div class=\"more-actions-list\" *ngIf=\"showActionsDropDown\">\n <div\n *ngFor=\"let action of moreActions\"\n class=\"more-actions-item\"\n (click)=\"requestAction(action)\"\n >\n {{action.label}}\n </div>\n </div>\n </div>\n <div class=\"save-button\"\n (click)=\"requestAction({name: 'save'})\"\n [ngClass]=\"{'save-disabled': saveDisabled}\"\n matTooltip=\"{{saveDisabled ? saveTooltip : ''}}\"\n matTooltipPosition=\"below\"\n >{{actionButtonText}}</div>\n </div>\n </div>\n <div class=\"form-header-group badges-container\">\n <div *ngFor=\"let badge of data.badges\" class=\"header-badge-container {{badge.class}}\">\n <span *ngIf=\"badge.circle\" class=\"circle {{badge.circle}}\"></span>\n <span class=\"badge-label\">{{badge.label}}</span>\n </div>\n </div>\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Input, Output, EventEmitter} from '@angular/core';\n\n@Component({\n selector: 'lib-form-field-container',\n templateUrl: './form-field-container.component.html',\n styleUrls: ['./form-field-container.component.scss']\n})\nexport class FormFieldContainerComponent {\n\n @Input() title = '';\n @Input() title2 = undefined;\n @Input() layout = 'column';\n @Input() helpText: any = undefined;\n @Input() helpText2: any = undefined;\n @Input() label: any = undefined;\n @Input() count: any = undefined;\n @Input() action: any = undefined;\n @Input() actionLabel: string;\n @Input() class = '';\n @Input() contentStyle: any = '';\n @Input() showHeader: any = true;\n\n @Output() actionRequested: EventEmitter<any> = new EventEmitter<any>();\n constructor() {}\n\n actionClicked() {\n this.actionRequested.emit({action: this.action});\n }\n}\n","<div class=\"form-field-container\" class=\"{{class}}\" [ngClass]=\"{'form-field-row': layout === 'row'}\">\n <div class=\"form-field-header\" *ngIf=\"showHeader\">\n <div class=\"form-field-title-container\">\n <span class=\"form-field-title\">{{title}}</span>\n <div\n *ngIf=\"helpText\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <span class=\"form-field-label\" *ngIf=\"label\">{{label}}</span>\n <span class=\"form-field-count\" *ngIf=\"count || count === 0\">{{count}}</span>\n <div class=\"form-field-action save-button\" *ngIf=\"action\" (click)=\"actionClicked()\">{{actionLabel}}</div>\n <div class=\"form-field-title-container title-container-2\" *ngIf=\"title2\">\n <span class=\"form-field-title title2\">{{title2}}</span>\n <div\n *ngIf=\"helpText2\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{helpText2}}\"\n matTooltipPosition=\"below\"\n ></div>\n </div>\n </div>\n <div class=\"form-field-content\" [style]=\"contentStyle\">\n <ng-content></ng-content>\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {\n Component,\n EventEmitter, Inject,\n Input,\n OnDestroy,\n OnInit, Output,\n ViewChild,\n} from '@angular/core';\nimport {ConfigurationService} from \"./configuration.service\";\nimport {Subscription} from \"rxjs\";\nimport {SchemaService} from \"../../../services/schema.service\";\nimport {ProjectableForm} from \"../projectable-form.class\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../../extendable/extensions-noop.service\";\nimport {ConfigEditorComponent} from \"../../config-editor/config-editor.component\";\n\nimport {cloneDeep, defer, isEmpty} from 'lodash';\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\n\n@Component({\n selector: 'lib-configuration',\n templateUrl: './configuration-form.component.html',\n styleUrls: ['./configuration-form.component.scss']\n})\nexport class ConfigurationFormComponent extends ProjectableForm implements OnInit, OnDestroy {\n\n @Input() override formData: any = {};\n @Input() override errors: any = {};\n @Output() close: EventEmitter<void> = new EventEmitter<void>();\n\n isLoading = false;\n options: any[] = [];\n isEditing = !isEmpty(this.formData.id);\n formView = 'simple';\n formDataInvalid = false;\n editMode = false;\n items: any = [];\n subscription = new Subscription();\n selectedSchema: any = '';\n associatedServices = [];\n associatedServiceNames = [];\n servicesLoading = false;\n settings: any = {};\n selectedConfigTypeId = '';\n\n @ViewChild(\"configEditor\", {read: ConfigEditorComponent}) configEditor!: ConfigEditorComponent;\n constructor(\n public svc: ConfigurationService,\n private schemaSvc: SchemaService,\n growlerService: GrowlerService,\n @Inject(SHAREDZ_EXTENSION) extService: ExtensionService,\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n ) {\n super(growlerService, extService);\n }\n\n ngOnInit(): void {\n this.settingsService.settingsChange.subscribe((results:any) => {\n this.settings = results;\n });\n if (isEmpty(this.formData?.data)) {\n this.formData.data = {};\n }\n if (isEmpty(this.formData?.configTypeId)) {\n this.formData.configTypeId = '';\n }\n this.selectedConfigTypeId = this.formData.configTypeId;\n this.initData = cloneDeep(this.formData);\n this.svc.configJsonView = false;\n //this.getAssociatedServices();\n this.svc.getConfigTypes()\n .then(configTypes => {\n this.options = configTypes.sort();\n this.getSchema();\n });\n this.isEditing = !isEmpty(this.formData.id);\n if (this.configTypeEmpty) {\n this.formData.configTypeId = '';\n }\n }\n\n getAssociatedServices() {\n this.svc.getAssociatedServices(this.formData.id).then((result) => {\n this.associatedServices = result.associatedServices;\n this.associatedServiceNames = result.associatedServiceNames;\n });\n }\n\n ngOnDestroy(): void {\n this.clearForm();\n }\n\n get configTypeEmpty() {\n return isEmpty(this.formData.configTypeId);\n }\n\n headerActionRequested(event) {\n switch(event.name) {\n case 'save':\n this.save(event);\n break;\n case 'close':\n this.closeModal(true);\n break;\n case 'toggle-view':\n this.formView = event.data;\n break;\n }\n }\n\n override clear() {\n this.formData.configTypeId = '';\n this.clearForm();\n }\n\n clearForm() {\n this.items.forEach((item: any) => {\n if (item?.component) item.component.destroy();\n });\n this.errors = {};\n this.items = [];\n this.formData = {};\n if (this.subscription) this.subscription.unsubscribe();\n }\n\n async save(event?: any) {\n this.errors = {};\n this.isLoading = true;\n try {\n this.configEditor.getConfigDataFromForm();\n } catch (err){\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Getting Config Data`,\n 'Error getting configuration data from from.',\n );\n this.growlerService.show(growlerData);\n throw err;\n }\n if (!this.validate()) {\n this.isLoading = false;\n return;\n }\n const configId = await this.svc.save(this.formData).then((result) => {\n if (!isEmpty(result?.id)) {\n this.formData = result;\n this.initData = this.formData;\n }\n return result?.id;\n }).finally(() => {\n this.isLoading = false;\n });\n if (configId) {\n this.closeModal(true, true);\n };\n }\n\n validate() {\n this.errors = {};\n this.configEditor.validateConfig();\n if (isEmpty(this.formData.name)) {\n this.errors['name'] = true;\n }\n if (isEmpty(this.formData.configTypeId)) {\n this.errors['configTypeId'] = true;\n }\n if (!isEmpty(this.errors)) {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Validating Config`,\n 'The entered configuration is invalid. Please update missing/invalid fields and try again.',\n );\n this.growlerService.show(growlerData);\n }\n return isEmpty(this.errors);\n }\n get saveButtonTooltip() {\n if (this.formDataInvalid) {\n return 'Config data is invalid. Please update and try again.'\n } else {\n return 'Complete and attach config definition, or remove before saving';\n }\n }\n\n getSchema() {\n if (this.selectedConfigTypeId !== this.formData.configTypeId) {\n this.selectedConfigTypeId = this.formData.configTypeId;\n this.formData.data = {};\n }\n this.svc.getSchema(this.formData.configTypeId).then((result) => {\n this.selectedSchema = result;\n });\n }\n\n get apiCallURL() {\n return this.settings.selectedEdgeController + '/edge/management/v1/configs' + (this.formData.id ? `/${this.formData.id}` : '');\n }\n\n get apiData(): any {\n const data: any = {\n name: this.formData?.name || '',\n configTypeId: this.formData?.configTypeId || '',\n data: this.formData?.data || {},\n };\n return data;\n }\n\n _apiData = {};\n set apiData(data) {\n this._apiData = data;\n }\n}\n","<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Edit Config' : 'Create Config')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n [saveTooltip]=\"saveButtonTooltip\"\n ></lib-form-header>\n <div class=\"config-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Config Name'\" [label]=\"'Required'\">\n <input\n id=\"ConfigName\"\n type=\"text\"\n maxlength=\"500\"\n placeholder=\"Name this config\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n >\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">Configuration Data</span>\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': !svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"svc.toggleJSONView()\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': !svc.configJsonView, 'toggle-right': svc.configJsonView}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n JSON\n </span>\n </div>\n </div>\n <div class=\"form-field-input-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">{{isEditing ? 'Config Type' : 'Select a Config Type'}}</span>\n </div>\n <select\n id=\"ConfigTypes\"\n class=\"config-type-select\"\n [(ngModel)]=\"formData.configTypeId\"\n (change)=\"getSchema()\"\n [ngClass]=\"{disabled: isEditing, error: errors['configTypeId']}\"\n >\n <option value=\"\">Select A Type...</option>\n <option *ngFor=\"let config of options\"\n [value]=\"config.id\">{{config.name}}\n </option>\n </select>\n <lib-config-editor\n [hidden]=\"configTypeEmpty\"\n [schema]=\"selectedSchema\"\n [(configData)]=\"formData.data\"\n [showJsonView]=\"svc.configJsonView\"\n [(configErrors)]=\"errors\"\n #configEditor\n ></lib-config-editor>\n </div>\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'lib-list-page-header',\n templateUrl: './list-page-header.component.html',\n styleUrls: ['./list-page-header.component.scss']\n})\nexport class ListPageHeaderComponent {\n @Input() title: string = '';\n @Input() tabs!: any[];\n @Input() showAdd = true;\n @Input() hideAction = false;\n @Output() actionClicked = new EventEmitter<string>();\n\n clickAction(value: string) {\n this.actionClicked.emit(value);\n }\n}\n","<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n","import {Component, ElementRef, ViewChild} from '@angular/core';\nimport {IHeaderAngularComp} from 'ag-grid-angular';\nimport {IHeaderParams} from 'ag-grid-community';\n\n@Component({\n selector: 'app-table-column-select',\n templateUrl: './table-column-select.component.html',\n styleUrls: ['./table-column-select.component.scss'],\n})\nexport class TableColumnSelectComponent implements IHeaderAngularComp {\n headerParams: any;\n gridApi: any = {\n zitiAllToggled: undefined,\n };\n\n @ViewChild('toggleButton') toggleButton: ElementRef;\n\n agInit(headerParams: IHeaderParams): void {\n this.headerParams = headerParams;\n this.gridApi = headerParams.api;\n }\n\n refresh(params: IHeaderParams): boolean {\n return true;\n }\n\n toggleAll(): void {\n this.gridApi.zitiAllToggled = !this.gridApi.zitiAllToggled;\n if (this.headerParams.toggleAll) {\n this.headerParams.toggleAll(this.gridApi.zitiAllToggled, this.headerParams);\n }\n }\n}\n","<div\n #toggleButton\n (click)=\"toggleAll()\"\n [ngClass]=\"{ selected: gridApi.zitiAllToggled }\"\n class=\"tSelect tSelectHeader\"\n id=\"RowSelect_Header\"\n></div>\n","import {Component} from '@angular/core';\nimport {IHeaderAngularComp} from 'ag-grid-angular';\nimport {IHeaderParams} from 'ag-grid-community';\nimport _ from 'lodash';\n\n@Component({\n selector: 'app-table-column-menu',\n templateUrl: './table-column-menu.component.html',\n styleUrls: ['./table-column-menu.component.scss'],\n})\nexport class TableColumnMenuComponent implements IHeaderAngularComp {\n item = {\n selected: false,\n id: '',\n actionList: [],\n };\n headerParams;\n open = false;\n\n agInit(headerParams: IHeaderParams): void {\n this.headerParams = headerParams;\n this.item = _.get(headerParams, 'data');\n }\n\n refresh(headerParams: IHeaderParams): boolean {\n this.headerParams = headerParams;\n return true;\n }\n\n toggleMenu(event): void {\n _.defer(() => {\n this.headerParams.openHeaderMenu(event);\n });\n }\n\n closeActionMenu(event): void {\n this.headerParams.closeMenu(event);\n }\n}\n","<div (clickOutside)=\"closeActionMenu($event)\" class=\"cell-menu-container\">\n <div (click)=\"toggleMenu($event)\" class=\"dots\" id=\"Dots_Bulk\">\n <div (click)=\"toggleMenu($event)\" class=\"dots\" id=\"HeaderRowDots\">...</div>\n </div>\n</div>","import {Component} from '@angular/core';\nimport {ICellRendererAngularComp} from 'ag-grid-angular';\nimport {ICellRendererParams} from 'ag-grid-community';\nimport _ from 'lodash';\n\n@Component({\n selector: 'app-table-cell-select',\n templateUrl: './table-cell-select.component.html',\n styleUrls: ['./table-cell-select.component.scss'],\n})\nexport class TableCellSelectComponent implements ICellRendererAngularComp {\n cellParams;\n item = {\n id: '',\n name: '',\n selected: false,\n hideSelect: false,\n };\n disableToggle = false;\n\n agInit(params: ICellRendererParams): void {\n this.cellParams = params;\n this.item = params.data;\n this.disableToggle =\n _.get(this.item, 'typeId') === 'Router' ||\n _.get(this.item, 'exclusiveTo') ||\n _.get(this.item, 'reserved') === true;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.cellParams = params;\n this.item = params.data;\n this.disableToggle =\n _.get(this.item, 'typeId') === 'Router' ||\n _.get(this.item, 'exclusiveTo') ||\n _.get(this.item, 'reserved') === true;\n return true;\n }\n\n toggle(item): void {\n if (!this.cellParams.toggleItem || this.disableToggle) {\n return;\n }\n this.cellParams.toggleItem(item, this.cellParams);\n }\n}\n","<div\n #toggleButton\n (click)=\"toggle(item)\"\n *ngIf=\"!item.hideSelect\"\n [ngClass]=\"{ selected: item.selected, disabled: disableToggle }\"\n attr.name=\"RowSelect0_{{ item.name }}\"\n class=\"row-toggle tSelect\"\n id=\"RowSelect0_{{ item.id }}\"\n attr.data-id=\"{{item.id}}\"\n></div>\n","import {Component} from '@angular/core';\nimport {ICellRendererAngularComp} from 'ag-grid-angular';\nimport {ICellRendererParams} from 'ag-grid-community';\nimport _ from 'lodash';\n\n@Component({\n selector: 'app-table-cell-menu',\n templateUrl: './table-cell-menu.component.html',\n styleUrls: ['./table-cell-menu.component.scss'],\n})\nexport class TableCellMenuComponent implements ICellRendererAngularComp {\n item: any = {\n selected: false,\n id: '',\n name: '',\n actionList: [],\n };\n cellParams;\n open = false;\n\n get enableCellMenu(): boolean {\n return !(!this.item || !this.item.actionList || this.item.actionList.length === 0);\n\n }\n\n agInit(cellParams: ICellRendererParams): void {\n this.cellParams = cellParams;\n this.item = _.get(cellParams, 'data');\n }\n\n refresh(cellParams: ICellRendererParams): boolean {\n this.cellParams = cellParams;\n this.item = _.get(cellParams, 'data');\n return true;\n }\n\n toggleMenu(event): void {\n if (!this.cellParams.openMenu) {\n return;\n }\n _.defer(() => {\n this.cellParams.openMenu(event, this.item);\n });\n }\n\n closeActionMenu(event): void {\n this.cellParams.closeMenu(event);\n }\n}\n","<div (clickOutside)=\"closeActionMenu($event)\" class=\"cell-menu-container\">\n <div\n (click)=\"toggleMenu($event)\"\n *ngIf=\"enableCellMenu\"\n attr.name=\"RowDots_{{ item.name }}\"\n class=\"dots\"\n id=\"RowDots_{{ item.id }}\"\n >\n ...\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nexport class Identity {\n name = '';\n type = 'Device';\n appData = {};\n isAdmin = false;\n roleAttributes = [];\n authPolicyId = \"default\";\n externalId = \"\";\n defaultHostingCost = 0;\n defaultHostingPrecedence = 'default';\n tags = {};\n enrollment = {\n ott: true\n };\n};\n","import {Component} from \"@angular/core\";\nimport {ITooltipAngularComp} from \"ag-grid-angular\";\nimport {ITooltipParams} from \"ag-grid-community\";\n\n@Component({\n selector: 'lib-os-tooltip',\n template: `\n <div class=\"os-tooltip\" [style.background-color]=\"color\">\n <p><span>OS:</span> <strong>{{ infoObj?.os || 'Unknown' }}</strong></p>\n <p><span>Release: </span><strong>{{ infoObj?.osRelease || 'Unknown' }}</strong></p>\n <p><span>Arch: </span><strong>{{ infoObj?.arch || 'Unknown' }}</strong></p>\n </div>`,\n styles: [\n `\n .os-tooltip {\n padding: 5px;\n background-color: var(--background);\n border-color: var(--primary);\n border-size: 1px;\n border-style: solid;\n }\n\n :host {\n position: absolute;\n width: 150px;\n height: 70px;\n pointer-events: none;\n transition: opacity 1s;\n }\n\n :host.ag-tooltip-hiding {\n opacity: 0;\n }\n\n .os-tooltip p {\n margin: 5px;\n white-space: nowrap;\n }\n `\n ]\n})\nexport class OSTooltipComponent implements ITooltipAngularComp {\n private params!: {color: string} & ITooltipParams;\n public data!: any;\n public infoObj: any = {};\n public color!: string;\n\n agInit(params: {color: string} & ITooltipParams): void {\n this.params = params;\n\n this.data = params.api.getDisplayedRowAtIndex(params.rowIndex).data;\n this.infoObj = this.data.envInfo || this.data.versionInfo || {};\n }\n}","import {Component} from \"@angular/core\";\nimport {ITooltipAngularComp} from \"ag-grid-angular\";\nimport {ITooltipParams} from \"ag-grid-community\";\nimport {isEmpty} from \"lodash\";\n\n@Component({\n selector: 'lib-sdk-tooltip',\n template: `\n <div class=\"os-tooltip\" [style.background-color]=\"color\" [ngClass]=\"{hidden: hasData}\">\n <p><span>APP ID: </span> <strong>{{ data.sdkInfo?.appId }}</strong></p>\n <p><span>Version: </span><strong>{{ data.sdkInfo?.appVersion }}</strong></p>\n <p><span>Branch: </span><strong>{{ data.sdkInfo?.branch }}</strong></p>\n <p><span>Revision: </span><strong>{{ data.sdkInfo?.revision }}</strong></p>\n <p><span>Type: </span><strong>{{ data.sdkInfo?.type }}</strong></p>\n </div>`,\n styles: [\n `\n .os-tooltip {\n padding: 5px;\n background-color: var(--background);\n border-color: var(--primary);\n border-size: 1px;\n border-style: solid;\n }\n\n :host {\n position: absolute;\n width: fit-content;\n height: 70px;\n pointer-events: none;\n transition: opacity 1s;\n }\n\n :host.ag-tooltip-hiding {\n opacity: 0;\n }\n\n .os-tooltip p {\n margin: 5px;\n white-space: nowrap;\n }\n `\n ]\n})\nexport class SDKTooltipComponent implements ITooltipAngularComp {\n private params!: {color: string} & ITooltipParams;\n public data!: any;\n public color!: string;\n\n agInit(params: {color: string} & ITooltipParams): void {\n this.params = params;\n\n this.data = params.api.getDisplayedRowAtIndex(params.rowIndex).data;\n }\n\n get hasData() {\n return isEmpty(this.data?.sdkInfo?.version);\n }\n}","import {Inject, Injectable} from \"@angular/core\";\nimport {isEmpty} from \"lodash\";\nimport moment from \"moment/moment\";\nimport {GrowlerModel} from \"../messaging/growler.model\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResetEnrollmentService {\n\n constructor(\n private growlerService: GrowlerService,\n @Inject(ZITI_DATA_SERVICE) private dataService: ZitiDataService,\n ) {\n }\n\n resetEnrollment(identity, dateVal) {\n let id = identity?.authenticators?.cert?.id || identity?.authenticators?.updb?.id;\n const dateObj: any = moment(dateVal);\n return this.dataService.resetEnrollment(id, dateObj).then(() => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Enrollment Reset`,\n `Successfully reset enrollment token`,\n );\n this.growlerService.show(growlerData);\n return true;\n }).catch((error) => {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Reset Failed`,\n `Failed to reset enrollment token`,\n );\n this.growlerService.show(growlerData);\n return false;\n });\n }\n\n reissueEnrollment(identity, dateVal) {\n let id = identity?.enrollment?.id;\n if(!isEmpty(identity?.enrollment?.ott)) {\n id = identity?.enrollment?.ott.id;\n } else if(!isEmpty(identity?.enrollment?.ottca)) {\n id = identity?.enrollment?.ottca.id;\n } else if (!isEmpty(identity?.enrollment?.updb)) {\n id = identity?.enrollment?.updb.id;\n }\n const dateObj: any = moment(dateVal);\n return this.dataService.reissueEnrollment(id, dateObj).then(() => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Enrollment Token Reissues`,\n `Successfully reissued enrollment token`,\n );\n this.growlerService.show(growlerData);\n return true;\n }).catch((error) => {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Reissue Failed`,\n `Failed to reissues enrollment token`,\n );\n this.growlerService.show(growlerData);\n return false;\n });\n }\n}","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, ViewChild, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from \"@angular/material/dialog\";\nimport {GrowlerModel} from \"../messaging/growler.model\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {isEmpty, result} from \"lodash\";\nimport moment from \"moment\";\nimport {ResetEnrollmentService} from \"./reset-enrollment.service\";\n\n@Component({\n selector: 'lib-reset-enrollment',\n templateUrl: './reset-enrollment.component.html',\n styleUrls: ['./reset-enrollment.component.scss']\n})\nexport class ResetEnrollmentComponent implements OnInit {\n\n minDate = moment().add(1, 'minutes').toDate();\n type = 'reset';\n identity: any;\n dateValue = moment().add(2, 'days').toDate();\n showIcon: boolean = true;\n @ViewChild('calendar', { static: false }) calendar: any;\n constructor(\n private svc: ResetEnrollmentService,\n private dialogRef: MatDialogRef<ResetEnrollmentComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n @Inject(ZITI_DATA_SERVICE) private dataService: ZitiDataService\n ) {\n this.identity = data.identity;\n this.type = data.type || 'reset';\n }\n\n ngOnInit() {\n this.dialogRef.addPanelClass('reset-enroll-dialog-container');\n }\n\n confirm() {\n this.dialogRef.close(true);\n }\n\n cancel() {\n this.dialogRef.close(false);\n }\n\n handleAction() {\n if (this.type === 'reset'){\n this.reset();\n } else {\n this.reissue();\n }\n }\n\n reset() {\n this.svc.resetEnrollment(this.identity, this.dateValue).then((result) => {\n if (result) {\n this.confirm();\n }\n });\n }\n\n reissue() {\n this.svc.reissueEnrollment(this.identity, this.dateValue).then((result) => {\n if (result) {\n this.confirm();\n }\n });\n }\n}\n","<div id=\"ResetModal\" class=\"reset-enrollment-container modal\" style=\"height: fit-content;\">\n <div class=\"close icon-close\" (click)=\"cancel()\"></div>\n <div class=\"reset-title-container\">\n <div class=\"title\">{{type === 'reset' ? 'Reset' : 'Reissue'}} Enrollment</div>\n <div class=\"subtitle\">Select a date to {{type === 'reset' ? 'reset' : 'reissue'}} the enrollment token</div>\n </div>\n <div class=\"reset-content-container\">\n <label>Date Enrollment Expires</label>\n <p-calendar\n [(ngModel)]=\"dateValue\"\n dateFormat=\"mm/dd/yy\"\n selectionMode=\"single\"\n [showIcon]=\"showIcon\"\n [showTime]=\"true\"\n [minDate]=\"minDate\"\n placeholder=\"Select Time Range\"\n #calendar\n ></p-calendar>\n </div>\n <div class=\"reset-buttons-container\">\n <div id=\"ResetEnrollButton\" class=\"button\" (click)=\"handleAction()\">{{type === 'reset' ? 'Reset' : 'Reissue'}} Enrollment</div>\n </div>\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, Inject, InjectionToken} from \"@angular/core\";\nimport moment from 'moment';\n\nimport {isEmpty, unset, keys} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {Identity} from \"../../../models/identity\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\n\n\nexport const IDENTITY_EXTENSION_SERVICE = new InjectionToken<any>('IDENTITY_EXTENSION_SERVICE');\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IdentityFormService {\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n private growlerService: GrowlerService\n ) {}\n \n save(formData) {\n const isUpdate = !isEmpty(formData.id);\n const data: any = this.getIdentityDataModel(formData, isUpdate);\n const svc = isUpdate ? this.zitiService.patch.bind(this.zitiService) : this.zitiService.post.bind(this.zitiService);\n return svc('identities', data, formData.id).then((result) => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Identity ${isUpdate ? 'Updated' : 'Created'}`,\n `Successfully ${isUpdate ? 'updated' : 'created'} Identity: ${formData.name}`,\n );\n this.growlerService.show(growlerData);\n }).catch((resp) => {\n let errorMessage;\n if (resp?.error?.error?.cause?.message) {\n errorMessage = resp?.error?.error?.cause?.message;\n } else if (resp?.error?.error?.cause?.reason) {\n errorMessage = resp?.error?.error?.cause?.reason;\n }else if (resp?.error?.message) {\n errorMessage = resp?.error?.message;\n } else {\n errorMessage = 'An unknown error occurred';\n }\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating Identity`,\n errorMessage,\n );\n this.growlerService.show(growlerData);\n throw resp;\n })\n }\n\n getIdentityDataModel(formData, isUpdate) {\n const saveModel = new Identity();\n const modelProperties = keys(saveModel);\n modelProperties.forEach((prop) => {\n switch(prop) {\n case 'type':\n if(isUpdate) {\n saveModel[prop] = formData[prop].id;\n } else {\n saveModel[prop] = formData[prop];\n }\n break;\n case 'enrollment':\n if(isUpdate) {\n unset(saveModel, 'enrollment');\n } else {\n saveModel[prop] = formData[prop];\n }\n break;\n default:\n saveModel[prop] = formData[prop];\n }\n });\n return saveModel;\n }\n\n testService(identityId, serviceId) {\n const url = `/identities/${identityId}/policy-advice/${serviceId}`;\n return this.zitiService.call(url).then((result) => {\n var errors = [];\n var info = result.data;\n if (!info?.isDialAllowed&&!info?.isBindAllowed) errors.push(\"No access to service. Adjust service policies.\");\n if (info?.identityRouterCount<1) errors.push(\"Identity has no edge routers assigned. Adjust edge router policies.\");\n if (info?.serviceRouterCount<1) errors.push(\"Service has no edge routers assigned. Adjust edge router policies.\");\n if (info?.identityRouterCount>0&&info?.serviceRouterCount>0) {\n if (info?.commonCount<1) errors.push(\"Identity and services have no edge routers in common. Adjust edge router policies and/or service edge router policies.\");\n else if (info?.onlineCount<1) errors.push(\"Common edge routers are all off-line. Bring routers back on-line or adjust edge router policies and/or service edge router policies.\");\n }\n var status = \"\";\n if (info?.isDialAllowed) {\n if (info?.isBindAllowed) status = \"(Dial,Bind)\";\n else status = \"(Dial)\";\n } else {\n if (info?.isBindAllowed) status = \"(Bind)\";\n }\n if (errors.length>0) {\n for (var i=0; i<errors.length; i++) {\n status += \"<br/>\"+errors[i];\n }\n } else status += \"<br/>Everything is configured properly\";\n return status;\n });\n }\n\n refreshIdentity(id) {\n const url: any = `/identities/${id}`\n return this.zitiService.call(url);\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, Inject, Component, OnInit} from \"@angular/core\";\nimport {cloneDeep, isEmpty} from 'lodash';\nimport moment from 'moment';\nimport {DataTableFilterService, FilterObj} from \"../../features/data-table/data-table-filter.service\";\nimport {ListPageServiceClass} from \"../../shared/list-page-service.class\";\nimport {\n TableColumnDefaultComponent\n} from \"../../features/data-table/column-headers/table-column-default/table-column-default.component\";\nimport {CallbackResults} from \"../../features/list-page-features/list-page-form/list-page-form.component\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {CsvDownloadService} from \"../../services/csv-download.service\";\nimport {Identity} from \"../../models/identity\";\nimport {unset} from \"lodash\";\nimport {ITooltipAngularComp} from \"ag-grid-angular\";\nimport {ITooltipParams} from \"ag-grid-community\";\nimport {OSTooltipComponent} from \"../../features/data-table/tooltips/os-tooltip.component\";\nimport {SDKTooltipComponent} from \"../../features/data-table/tooltips/sdk-tooltip.component\";\nimport {GrowlerModel} from \"../../features/messaging/growler.model\";\nimport {GrowlerService} from \"../../features/messaging/growler.service\";\nimport {ResetEnrollmentComponent} from \"../../features/reset-enrollment/reset-enrollment.component\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {SettingsServiceClass} from \"../../services/settings-service.class\";\nimport {ExtensionService} from \"../../features/extendable/extensions-noop.service\";\nimport {IDENTITY_EXTENSION_SERVICE} from \"../../features/projectable-forms/identity/identity-form.service\";\n\nconst CSV_COLUMNS = [\n {label: 'Name', path: 'name'},\n {label: 'Roles', path: 'roleAttributes'},\n {label: 'Online', path: 'hasApiSession'},\n {label: 'Edge Router Connected', path: 'hasEdgeRouterConnection'},\n {label: 'OS', path: 'envInfo.os'},\n {label: 'OS Version', path: 'envInfo.osVersion'},\n {label: 'SDK', path: 'sdkInfo.version'},\n {label: 'App Version', path: 'sdkInfo.appVersion'},\n {label: 'Type', path: 'typeId'},\n {label: 'Is Admin', path: 'isAdmin'},\n {label: 'Auth Policy', path: 'authPolicy.name'},\n {label: 'Auth Policy ID', path: 'authPolicy.id'},\n {label: 'MFA Enabled', path: 'isMfaEnabled'},\n {label: 'Created At', path: 'createdAt'},\n {label: 'ID', path: 'id'},\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IdentitiesPageService extends ListPageServiceClass {\n\n private paging = this.DEFAULT_PAGING;\n public modalType = 'identities';\n\n selectedIdentity: any = new Identity();\n columnFilters: any = {\n name: '',\n os: '',\n createdAt: '',\n };\n\n override menuItems = [\n {name: 'Edit', action: 'update'},\n {name: 'Download JWT', action: 'download-enrollment'},\n {name: 'View QR', action: 'qr-code'},\n {name: 'Visualizer', action: 'identity-service-path'},\n {name: 'Reset Enrollment', action: 'reset-enrollment'},\n {name: 'Reissue Enrollment', action: 'reissue-enrollment'},\n {name: 'Override', action: 'override'},\n {name: 'Delete', action: 'delete'},\n ]\n\n override tableHeaderActions = [\n {name: 'Download All', action: 'download-all'},\n {name: 'Download Selected', action: 'download-selected'},\n ]\n\n resourceType = 'identities';\n constructor(\n @Inject(SETTINGS_SERVICE) settings: SettingsServiceClass,\n filterService: DataTableFilterService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n override csvDownloadService: CsvDownloadService,\n private growlerService: GrowlerService,\n private dialogForm: MatDialog,\n @Inject(IDENTITY_EXTENSION_SERVICE) extService: ExtensionService\n ) {\n super(settings, filterService, csvDownloadService, extService);\n }\n\n validate = (formData): Promise<CallbackResults> => {\n return Promise.resolve({ passed: true});\n }\n\n initTableColumns(): any {\n this.initMenuActions();\n\n const nameRenderer = (row) => {\n return `<div class=\"col cell-name-renderer\" data-id=\"${row?.data?.id}\">\n <span class=\"circle ${row?.data?.hasApiSession}\" title=\"Api Session\"></span>\n <span class=\"circle ${row?.data?.hasEdgeRouterConnection}\" title=\"Edge Router Connected\"></span>\n <strong>${row?.data?.name}</strong>\n </div>`\n }\n\n const osRenderer = (row) => {\n let os = \"other\";\n let osDetails = \"\";\n if (row?.data?.envInfo) {\n if (row?.data?.envInfo?.osVersion&&row?.data?.envInfo?.osVersion.toLowerCase().indexOf(\"windows\")>=0) os = \"windows\";\n else {\n if (row?.data?.envInfo?.os&&row?.data?.envInfo?.os.toLowerCase().indexOf(\"darwin\")>=0) os = \"apple\";\n else if (row?.data?.envInfo?.os&&row?.data?.envInfo?.os.toLowerCase().indexOf(\"linux\")>=0) os = \"linux\";\n else if (row?.data?.envInfo?.os&&row?.data?.envInfo?.os.toLowerCase().indexOf(\"android\")>=0) os = \"android\";\n else if (row?.data?.envInfo?.os&&row?.data?.envInfo?.os.toLowerCase().indexOf(\"windows\")>=0) os = \"windows\";\n }\n if (row?.data?.envInfo?.os) osDetails += \"OS: \"+row?.data?.envInfo?.os;\n if (row?.data?.envInfo?.arch) osDetails += \" Arch: \"+row?.data?.envInfo?.arch;\n if (row?.data?.envInfo?.osRelease) osDetails += \" Release: \"+row?.data?.envInfo?.osRelease;\n if (row?.data?.envInfo?.osVersion) osDetails += \" Version: \"+row?.data?.envInfo?.osVersion;\n }\n return `<div class=\"col desktop\" style=\"overflow: unset;\">\n <span class=\"os ${os}\"></span>\n </div>`\n }\n\n const sdkRenderer = (row) => {\n let sdk = \"\";\n let version = \"-\";\n const sdkInfo = row?.data?.sdkInfo;\n if (sdkInfo) {\n version = \"\";\n if (sdkInfo?.version) version += sdkInfo?.version;\n if (sdkInfo?.appId) sdk += sdkInfo?.appId;\n if (sdkInfo?.appVersion) sdk += sdkInfo?.appVersion;\n if (sdkInfo?.type) sdk += sdkInfo?.type;\n if (sdkInfo?.type) sdk += \" \"+sdkInfo?.branch;\n if (sdkInfo?.revision) sdk += \" - \"+sdkInfo?.revision;\n }\n return`<div class=\"col desktop\" data-id=\"${row?.data?.id}\" style=\"overflow: unset;\" data-balloon-pos=\"up\" aria-label=\"${sdk}\">\n <span class=\"oneline\">${version}</span>\n </div>`;\n }\n\n const columnFilters = this.columnFilters;\n\n const osParams = {\n filterType: 'COMBO',\n filterOptions: [\n { label: 'All', value: '', icon: 'empty' },\n { label: 'Apple', value: 'darwin', icon: 'apple' },\n { label: 'Windows', value: 'mingw', icon: 'windows' },\n { label: 'Linux', value: 'linux', icon: 'linux' },\n { label: 'Android', value: 'android', icon: 'android' },\n { label: 'Other (text search)', value: '', icon: 'other', useTextInput: true },\n ],\n columnFilters,\n };\n\n return [\n {\n colId: 'name',\n field: 'name',\n headerName: 'Name',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: this.headerComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: nameRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: true,\n filter: true,\n sortColumn: this.sort.bind(this),\n sortDir: 'asc',\n width: 300,\n },\n {\n colId: 'roles',\n field: 'roleAttributes',\n headerName: 'Roles',\n headerComponent: TableColumnDefaultComponent,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: this.rolesRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: false,\n filter: false,\n },\n {\n colId: 'os',\n field: 'os',\n headerName: 'O/S',\n width: 100,\n cellRenderer: osRenderer,\n headerComponent: TableColumnDefaultComponent,\n tooltipComponent: OSTooltipComponent,\n tooltipField: 'envInfo',\n tooltipComponentParams: { color: '#ececec' },\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'sdk',\n field: 'sdk',\n headerName: 'SDK',\n tooltipField: 'sdkInfo',\n cellRenderer: sdkRenderer,\n headerComponent: TableColumnDefaultComponent,\n tooltipComponent: SDKTooltipComponent,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n width: 125,\n },\n {\n colId: 'type',\n field: 'type.name',\n headerName: 'Type',\n headerComponent: TableColumnDefaultComponent,\n resizable: true,\n sortable: true,\n cellClass: 'nf-cell-vert-align tCol',\n sortColumn: this.sort.bind(this),\n },\n {\n colId: 'isAdmin',\n field: 'isAdmin',\n headerName: 'Is Admin',\n headerComponent: TableColumnDefaultComponent,\n resizable: true,\n sortable: true,\n sortColumn: this.sort.bind(this),\n cellClass: 'nf-cell-vert-align tCol',\n width: 100,\n },\n {\n colId: 'createdAt',\n field: 'createdAt',\n headerName: 'Created At',\n headerComponent: TableColumnDefaultComponent,\n valueFormatter: this.createdAtFormatter,\n resizable: true,\n sortable: true,\n sortColumn: this.sort.bind(this),\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'token',\n field: 'token',\n headerName: 'Token',\n headerComponent: TableColumnDefaultComponent,\n cellRenderer: 'cellTokenComponent',\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'isMfaEnabled',\n field: 'isMfaEnabled',\n headerName: 'MFA',\n headerComponent: TableColumnDefaultComponent,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n width: 100,\n }\n ];\n }\n\n getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any> {\n // we can customize filters or sorting here before moving on...\n this.paging.page = page || this.paging.page;\n return super.getTableData('identities', this.paging, filters, sort)\n .then((results: any) => {\n return this.processData(results);\n });\n }\n\n private processData(results: any) {\n if (!isEmpty(results?.data)) {\n //pre-process data before rendering\n results.data = this.addActionsPerRow(results);\n }\n return results;\n }\n\n private addActionsPerRow(results: any): any[] {\n return results.data.map((row) => {\n row.actionList = ['update', 'override', 'delete', 'identity-service-path'];\n\n if (this.hasEnrolmentToken(row)) {\n row.actionList.push('reissue-enrollment');\n if (!this.enrollmentExpired(row)) {\n row.actionList.push('download-enrollment');\n row.actionList.push('qr-code');\n }\n } else if (this.hasAuthenticator(row)) {\n row.actionList.push('reset-enrollment');\n }\n this.addListItemExtensionActions(row);\n return row;\n });\n }\n\n hasAuthenticator(item) {\n return item?.authenticators?.cert?.id || item.authenticators?.updb?.id;\n }\n\n hasEnrolmentToken(item) {\n let token;\n if (item?.enrollment?.ott?.jwt) {\n token = item?.enrollment?.ott?.jwt;\n } else if (item?.enrollment?.ottca?.jwt) {\n token = item?.enrollment?.ottca?.jwt;\n } else if (item?.enrollment?.updb?.jwt) {\n token = item?.enrollment?.updb?.jwt;\n }\n return token;\n }\n\n enrollmentExpired(item) {\n let expiration;\n if (item?.enrollment?.ott?.jwt) {\n expiration = item?.enrollment?.ott?.expiresAt;\n } else if (item?.enrollment?.ottca?.jwt) {\n expiration = item?.enrollment?.ottca?.expiresAt;\n } else if (item?.enrollment?.updb?.jwt) {\n expiration = item?.enrollment?.updb?.expiresAt;\n }\n return moment(expiration).isBefore();\n }\n\n public getIdentitiesRoleAttributes() {\n return this.zitiService.get('identity-role-attributes', {}, []);\n }\n\n getJWT(identity: any) {\n let qrCode;\n if (!isEmpty(identity?.enrollment?.ott?.jwt)) {\n qrCode = identity?.enrollment?.ott?.jwt;\n } else if (!isEmpty(identity?.enrollment?.ottca?.jwt)) {\n qrCode = identity?.enrollment?.ottca?.jwt;\n } else if(!isEmpty(identity?.enrollment?.updb?.jwt)) {\n qrCode = identity?.enrollment?.updb?.jwt;\n }\n return qrCode;\n }\n\n getToken(identity: any) {\n let qrCode;\n if (!isEmpty(identity?.enrollment?.ott?.token)) {\n qrCode = identity?.enrollment?.ott?.token;\n } else if (!isEmpty(identity?.enrollment?.ottca?.token)) {\n qrCode = identity?.enrollment?.ottca?.token;\n } else if(!isEmpty(identity?.enrollment?.updb?.token)) {\n qrCode = identity?.enrollment?.updb?.token;\n }\n return qrCode;\n }\n\n downloadJWT(jwt, name) {\n const element = document.createElement('a');\n element.setAttribute('href', 'data:application/ziti-jwt;charset=utf-8,' + encodeURIComponent(jwt));\n element.setAttribute('download', name+\".jwt\");\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n copyToken(token) {\n navigator.clipboard.writeText(token);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `Registration token copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n\n resetJWT(identity) {\n this.dialogRef = this.dialogForm.open(ResetEnrollmentComponent, {\n data: {\n identity: identity,\n type: 'reset'\n },\n autoFocus: false,\n });\n return this.dialogRef;\n }\n\n reissueJWT(identity) {\n this.dialogRef = this.dialogForm.open(ResetEnrollmentComponent, {\n data: {\n identity: identity,\n type: 'reissue'\n },\n autoFocus: false,\n });\n return this.dialogRef;\n }\n\n getEnrollmentExpiration(identity: any) {\n let expiresAt;\n if (!isEmpty(identity?.enrollment?.ott?.expiresAt)) {\n expiresAt = identity?.enrollment?.ott?.expiresAt;\n } else if (!isEmpty(identity?.enrollment?.ottca?.expiresAt)) {\n expiresAt = identity?.enrollment?.ottca?.expiresAt;\n } else if(!isEmpty(identity?.enrollment?.updb?.expiresAt)) {\n expiresAt = identity?.enrollment?.updb?.expiresAt;\n }\n return expiresAt;\n }\n\n downloadAllItems() {\n const paging = cloneDeep(this.paging);\n paging.total = 2000;\n super.getTableData('identities', paging, undefined, undefined)\n .then((results: any) => {\n return this.downloadItems(results?.data);\n });\n }\n\n resetEnrollment(identity: any, date: any) {\n let id = identity?.authenticators?.cert?.id;\n if (!id) {\n if(!isEmpty(identity?.enrollment?.ott)) {\n id = identity?.enrollment?.ott.id;\n } else if(!isEmpty(identity?.enrollment.ottca)) {\n id = identity?.enrollment?.ottca.id;\n } else if (!isEmpty(identity?.enrollment.updb)) {\n id = identity?.enrollment?.updb.id;\n }\n }\n return this.dataService.resetEnrollment(id, date).then(() => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Enrollment Reset`,\n `Successfully reissued enrollment token`,\n );\n this.growlerService.show(growlerData);\n }).catch((error) => {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Reset Failed`,\n `Failed to reissues enrollment token`,\n );\n this.growlerService.show(growlerData);\n });\n }\n\n downloadItems(selectedItems) {\n this.csvDownloadService.download(\n 'identities',\n selectedItems,\n CSV_COLUMNS,\n false,\n false,\n undefined,\n false\n );\n }\n\n public openUpdate(item?: any) {\n this.modalType = 'identity';\n if (item) {\n this.selectedIdentity = item;\n this.selectedIdentity.badges = [];\n if (this.selectedIdentity.hasApiSession || this.selectedIdentity.hasEdgeRouterConnection) {\n this.selectedIdentity.badges.push({label: 'Online', class: 'online', circle: 'true'});\n } else {\n this.selectedIdentity.badges.push({label: 'Offline', class: 'offline', circle: 'false'});\n }\n if (this.selectedIdentity.enrollment?.ott) {\n this.selectedIdentity.badges.push({label: 'Unregistered', class: 'unreg'});\n }\n // TODO: implement when metrics and dialog features are available\n /*this.selectedIdentity.moreActions = [\n {name: 'open-metrics', label: 'Open Metrics'},\n {name: 'dial-logs', label: 'Dial Logs'},\n {name: 'dial-logs', label: 'View Events'},\n ];*/\n unset(this.selectedIdentity, '_links');\n } else {\n this.selectedIdentity = new Identity();\n }\n this.sideModalOpen = true;\n }\n\n public openOverridesModal(item) {\n this.modalType = 'overrides';\n this.selectedIdentity = item;\n this.sideModalOpen = true;\n }\n}\n","export class EdgeRouter {\n name = '';\n roleAttributes = [];\n appData = {};\n isTunnelerEnabled = true;\n noTraversal = false;\n cost = 0;\n tags = {};\n};","import {Injectable, Inject, InjectionToken} from \"@angular/core\";\nimport {isEmpty, unset, keys} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {Identity} from \"../../../models/identity\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\n\nimport moment from 'moment';\nimport {EdgeRouter} from \"../../../models/edge-router\";\n\nexport const EDGE_ROUTER_EXTENSION_SERVICE = new InjectionToken<any>('EDGE_ROUTER_EXTENSION_SERVICE');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EdgeRouterFormService {\n\n associatedIdentities: any = [];\n associatedIdentityNames: any = [];\n associatedServices: any = [];\n associatedServiceNames: any = [];\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n private growlerService: GrowlerService,\n @Inject(EDGE_ROUTER_EXTENSION_SERVICE)private extService: ExtensionService\n ) {}\n \n save(formData): Promise<any> {\n const isUpdate = !isEmpty(formData.id);\n const data: any = this.getEdgeRouterDataModel(formData, isUpdate);\n const svc = isUpdate ? this.zitiService.patch.bind(this.zitiService) : this.zitiService.post.bind(this.zitiService);\n return svc('edge-routers', data, formData.id).then(async (result: any) => {\n const id = result?.data?.id || formData.id;\n let router = await this.zitiService.getSubdata('edge-routers', id, '').then((routerData) => {\n return routerData.data;\n });\n return this.extService.formDataSaved(router).then((formSavedResult: any) => {\n const returnVal = {\n data: router,\n close: this.extService.closeAfterSave\n };\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Edge Router ${isUpdate ? 'Updated' : 'Created'}`,\n `Successfully ${isUpdate ? 'updated' : 'created'} Edge Router: ${formData.name}`,\n );\n this.growlerService.show(growlerData);\n return returnVal;\n }).catch((result) => {\n return false;\n });\n }).catch((resp) => {\n let errorMessage;\n if (resp?.error?.error?.cause?.message) {\n errorMessage = resp?.error?.error?.cause?.message;\n } else if (resp?.error?.error?.cause?.reason) {\n errorMessage = resp?.error?.error?.cause?.reason;\n }else if (resp?.error?.message) {\n errorMessage = resp?.error?.message;\n } else {\n errorMessage = 'An unknown error occurred';\n }\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating Edge Router`,\n errorMessage,\n );\n this.growlerService.show(growlerData);\n throw resp;\n })\n }\n\n getEdgeRouterDataModel(formData, isUpdate) {\n const saveModel = new EdgeRouter();\n const modelProperties = keys(saveModel);\n modelProperties.forEach((prop) => {\n switch(prop) {\n default:\n saveModel[prop] = formData[prop];\n }\n });\n return saveModel;\n }\n\n getAuthPolicies() {\n const paging = {\n filter: \"\",\n noSearch: true,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 100\n }\n return this.zitiService.get('auth-policies', paging, []).then((result: any) => {\n return [{id: 'default', name: 'Default'}, ...result.data];\n });\n }\n\n copyToClipboard(val) {\n navigator.clipboard.writeText(val);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `API call URL copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n\n getAssociatedServices(id) {\n this.zitiService.getSubdata('edge-routers', id, 'services').then((result: any) => {\n this.associatedServices = result.data;\n this.associatedServiceNames = this.associatedServices.map((svc) => {\n return svc.name;\n });\n });\n }\n\n getAssociatedIdentities(id) {\n this.zitiService.getSubdata('edge-routers', id, 'identities').then((result: any) => {\n this.associatedIdentities = result.data;\n this.associatedIdentityNames = this.associatedIdentities.map((policy) => {\n return policy.name;\n });\n });\n }\n\n refreshRouter(id) {\n const url: any = `/edge-routers/${id}`\n return this.zitiService.call(url);\n }\n}","import {Injectable, Inject, Component} from \"@angular/core\";\nimport {cloneDeep, isEmpty} from 'lodash';\nimport moment from 'moment';\nimport {DataTableFilterService, FilterObj} from \"../../features/data-table/data-table-filter.service\";\nimport {ListPageServiceClass} from \"../../shared/list-page-service.class\";\nimport {\n TableColumnDefaultComponent\n} from \"../../features/data-table/column-headers/table-column-default/table-column-default.component\";\nimport {CallbackResults} from \"../../features/list-page-features/list-page-form/list-page-form.component\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {CsvDownloadService} from \"../../services/csv-download.service\";\nimport {EdgeRouter} from \"../../models/edge-router\";\nimport {unset, forEach} from \"lodash\";\nimport {ITooltipAngularComp} from \"ag-grid-angular\";\nimport {ITooltipParams} from \"ag-grid-community\";\nimport {OSTooltipComponent} from \"../../features/data-table/tooltips/os-tooltip.component\";\nimport {GrowlerModel} from \"../../features/messaging/growler.model\";\nimport {GrowlerService} from \"../../features/messaging/growler.service\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {SettingsServiceClass} from \"../../services/settings-service.class\";\nimport {EDGE_ROUTER_EXTENSION_SERVICE} from \"../../features/projectable-forms/edge-router/edge-router-form.service\";\nimport {ExtensionService} from \"../../features/extendable/extensions-noop.service\";\nimport {ConfirmComponent} from \"../../features/confirm/confirm.component\";\n\nconst CSV_COLUMNS = [\n {label: 'Name', path: 'name'},\n {label: 'Attributes', path: 'roleAttributes'},\n {label: 'Verified', path: 'isVerified'},\n {label: 'Online', path: 'isOnline'},\n {label: 'Created', path: 'createdAt'},\n {label: 'Token', path: 'enrollmentToken'},\n {label: 'No Traversal', path: 'noTraversal'},\n {label: 'Host Name', path: 'hostname'},\n {label: 'Disabled', path: 'disabled'},\n {label: 'Tunneler Enabled', path: 'isTunnelerEnabled'},\n {label: 'OS', path: 'versionInfo.os'},\n {label: 'Architecture', path: 'versionInfo.arch'},\n {label: 'Version', path: 'versionInfo.version'},\n {label: 'Revision', path: 'versionInfo.revision'},\n {label: 'Fingerprint', path: 'fingerprint'},\n {label: 'ID', path: 'id'},\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EdgeRoutersPageService extends ListPageServiceClass {\n\n private paging = this.DEFAULT_PAGING;\n public modalType = 'edge-router';\n\n selectedEdgeRouter: any = new EdgeRouter();\n columnFilters: any = {\n name: '',\n os: '',\n createdAt: '',\n };\n\n override menuItems = [\n {name: 'Edit', action: 'update'},\n {name: 'Download JWT', action: 'download-enrollment'},\n {name: 'Reset Enrollment', action: 'reset-enrollment'},\n {name: 'Re-Enroll', action: 're-enroll'},\n {name: 'Delete', action: 'delete'},\n ]\n\n override tableHeaderActions = [\n {name: 'Download All', action: 'download-all'},\n {name: 'Download Selected', action: 'download-selected'},\n ]\n\n resourceType = 'edge-routers';\n\n constructor(\n @Inject(SETTINGS_SERVICE) settings: SettingsServiceClass,\n filterService: DataTableFilterService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n override csvDownloadService: CsvDownloadService,\n private growlerService: GrowlerService,\n private dialogForm: MatDialog,\n @Inject(EDGE_ROUTER_EXTENSION_SERVICE) private extService: ExtensionService\n ) {\n super(settings, filterService, csvDownloadService, extService);\n }\n\n validate = (formData): Promise<CallbackResults> => {\n return Promise.resolve({ passed: true});\n }\n\n initTableColumns(): any {\n this.initMenuActions();\n\n const nameRenderer = (row) => {\n return `<div class=\"col cell-name-renderer\" data-id=\"${row?.data?.id}\">\n <span class=\"circle ${row?.data?.isVerified}\" title=\"Verified Status\"></span>\n <span class=\"circle ${row?.data?.isOnline}\" title=\"Online Status\"></span>\n <strong>${row?.data?.name}</strong>\n </div>`\n }\n\n const rolesRenderer = (row) => {\n let roles = '';\n row?.data?.roleAttributes?.forEach((attr) => {\n roles += '<div class=\"hashtag\">'+attr+'</div>';\n });\n return roles;\n }\n\n const osRenderer = (row) => {\n const osMap: any = {\n 'darwin': 'apple',\n 'linux': 'linux',\n 'android': 'android',\n 'windows': 'windows'\n }\n let os = \"other\";\n forEach(osMap, (value, key) => {\n if (row?.data?.versionInfo?.osVersion?.toLowerCase().indexOf(key)>=0 ||\n row?.data?.versionInfo?.os.toLowerCase().indexOf(key)>=0) {\n os = value;\n }\n });\n return `<div class=\"col desktop\" data-id=\"${row?.data?.id}\" style=\"overflow: unset;\">\n <span class=\"os ${os}\" data-balloon-pos=\"up\"></span>\n </div>`\n }\n\n const enrollmentTokenFormatter = (row) => {\n const token = row?.data?.enrollmentToken;\n if (token) {\n if (moment(row?.data?.enrollmentExpiresAt).isBefore()) {\n return 'Enrollment Expired';\n } else {\n return token;\n }\n } else {\n return '';\n }\n };\n\n const columnFilters = this.columnFilters;\n\n const osParams = {\n filterType: 'COMBO',\n filterOptions: [\n { label: 'All', value: '', icon: 'empty' },\n { label: 'Apple', value: 'darwin', icon: 'apple' },\n { label: 'Windows', value: 'mingw', icon: 'windows' },\n { label: 'Linux', value: 'linux', icon: 'linux' },\n { label: 'Android', value: 'android', icon: 'android' },\n { label: 'Other (text search)', value: '', icon: 'other', useTextInput: true },\n ],\n columnFilters,\n };\n\n let tableColumns = [\n {\n colId: 'name',\n field: 'name',\n headerName: 'Name',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: this.headerComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: nameRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: true,\n filter: true,\n sortColumn: this.sort.bind(this),\n sortDir: 'asc'\n },\n {\n colId: 'os',\n field: 'versionInfo.os',\n headerName: 'O/S',\n width: 100,\n cellRenderer: osRenderer,\n headerComponent: TableColumnDefaultComponent,\n tooltipComponent: OSTooltipComponent,\n tooltipField: 'versionInfo.os',\n tooltipComponentParams: { color: '#ececec' },\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'roles',\n field: 'roleAttributes',\n headerName: 'Roles',\n headerComponent: TableColumnDefaultComponent,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: rolesRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: false,\n filter: false,\n },\n {\n colId: 'verified',\n field: 'isVerified',\n headerName: 'Verified',\n width: 100,\n sortable: true,\n headerComponent: TableColumnDefaultComponent,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'online',\n field: 'isOnline',\n headerName: 'Online',\n width: 100,\n headerComponent: TableColumnDefaultComponent,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'createdAt',\n field: 'createdAt',\n headerName: 'Created At',\n headerComponent: TableColumnDefaultComponent,\n valueFormatter: this.createdAtFormatter,\n resizable: true,\n sortable: true,\n sortColumn: this.sort.bind(this),\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'enrollmentToken',\n field: 'enrollmentToken',\n headerName: 'Token',\n headerComponent: TableColumnDefaultComponent,\n valueFormatter: enrollmentTokenFormatter,\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n },\n {\n colId: 'jwt',\n field: 'enrollmentJwt',\n headerName: 'JWT',\n headerComponent: TableColumnDefaultComponent,\n cellRenderer: 'cellTokenComponent',\n resizable: true,\n cellClass: 'nf-cell-vert-align tCol',\n }\n ];\n\n if (this.extService.processTableColumns) {\n tableColumns = this.extService.processTableColumns(tableColumns);\n }\n\n return tableColumns;\n }\n\n getData(filters?: FilterObj[], sort?: any): Promise<any> {\n // we can customize filters or sorting here before moving on...\n return super.getTableData('edge-routers', this.paging, filters, sort)\n .then((results: any) => {\n return this.processData(results);\n });\n }\n\n private processData(results: any) {\n if (!isEmpty(results?.data)) {\n //pre-process data before rendering\n results.data = this.addActionsPerRow(results);\n }\n return results;\n }\n\n private addActionsPerRow(results: any): any[] {\n return results.data.map((row) => {\n row.actionList = ['update', 're-enroll', 'delete'];\n if (this.hasEnrolmentToken(row)) {\n row.actionList.push('download-enrollment');\n }\n this.addListItemExtensionActions(row);\n return row;\n });\n }\n\n hasEnrolmentToken(item) {\n return !isEmpty(item?.enrollmentJwt);\n }\n\n public getEdgeRouterRoleAttributes() {\n return this.zitiService.get('edge-router-role-attributes', {}, []);\n }\n\n\n getJWT(identity: any) {\n return identity.enrollmentJwt;\n }\n\n downloadJWT(jwt, name) {\n const element = document.createElement('a');\n element.setAttribute('href', 'data:application/ziti-jwt;charset=utf-8,' + encodeURIComponent(jwt));\n element.setAttribute('download', name+\".jwt\");\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n downloadAllItems() {\n const paging = cloneDeep(this.paging);\n paging.total = 2000;\n super.getTableData('edge-routers', paging, undefined, undefined)\n .then((results: any) => {\n return this.downloadItems(results?.data);\n });\n }\n\n downloadItems(selectedItems) {\n this.csvDownloadService.download(\n 'edge-routers',\n selectedItems,\n CSV_COLUMNS,\n false,\n false,\n undefined,\n false\n );\n }\n\n reenroll(router: any) {\n const data = {\n appendId: 'ReenrollRouter',\n title: 'Re-Enroll Router',\n message: `<p>If the router is currently connected, it will be disconnected until the enrollment process is completed with the newly generated JWT. <p> Are you sure you want to re-enroll the selected router?`,\n confirmLabel: 'Yes',\n cancelLabel: 'Oops, no get me out of here',\n showCancelLink: true\n };\n this.dialogRef = this.dialogForm.open(ConfirmComponent, {\n data: data,\n autoFocus: false,\n });\n return this.dialogRef.afterClosed().toPromise().then((result) => {\n if (result) {\n return this.zitiService.post(`edge-routers/${router.id}/re-enroll`, {}, true).then((result) => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Re-enroll Confirmed`,\n `Router re-enroll was sent. A new enrollment token is now available`,\n );\n this.growlerService.show(growlerData);\n });\n } else {\n return Promise.resolve();\n }\n });\n }\n\n public openUpdate(item?: any) {\n this.modalType = 'edge-router';\n if (item) {\n this.selectedEdgeRouter = item;\n this.selectedEdgeRouter.badges = [];\n if (this.selectedEdgeRouter.isOnline) {\n this.selectedEdgeRouter.badges.push({label: 'Online', class: 'online', circle: 'true'});\n } else {\n this.selectedEdgeRouter.badges.push({label: 'Offline', class: 'offline', circle: 'false'});\n }\n if (!this.selectedEdgeRouter.isVerified) {\n this.selectedEdgeRouter.badges.push({label: 'Unverified', class: 'unreg'});\n }\n // TODO: implement when metrics and dialog features are available\n /*this.selectedEdgeRouterZ.moreActions = [\n {name: 'open-metrics', label: 'Open Metrics'},\n {name: 'dial-logs', label: 'Dial Logs'},\n {name: 'dial-logs', label: 'View Events'},\n ];*/\n unset(this.selectedEdgeRouter, '_links');\n } else {\n this.selectedEdgeRouter = new EdgeRouter();\n }\n this.sideModalOpen = true;\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output, OnChanges, Inject, Optional} from '@angular/core';\nimport moment from 'moment';\nimport {isEmpty} from 'lodash';\nimport {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from \"@angular/material/dialog\";\nimport {IdentitiesPageService} from \"../../pages/identities/identities-page.service\";\nimport {DialogRef} from \"@angular/cdk/dialog\";\nimport {EdgeRoutersPageService} from \"../../pages/edge-routers/edge-routers-page.service\";\n\n@Component({\n selector: 'lib-qr-code',\n templateUrl: './qr-code.component.html',\n styleUrls: ['./qr-code.component.scss']\n})\nexport class QrCodeComponent implements OnChanges {\n\n @Input() jwt: any;\n @Input() token: any;\n @Input() expiration: any;\n @Input() identity: any = {};\n @Input() type: string = 'identity';\n @Input() authenticators: any;\n @Input() qrOnly: boolean = false;\n @Input() canExpand: boolean = false;\n @Output() doRefresh: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n jwtExpired;\n expirationDate;\n qrCodeSize = 200;\n isModal = false;\n\n constructor(\n @Optional() private dialogRef: MatDialogRef<QrCodeComponent>,\n @Optional() private dialogForm: MatDialog,\n @Optional() @Inject(MAT_DIALOG_DATA) public data: any,\n public identitiesSvc: IdentitiesPageService,\n public edgeRoutersSvc: EdgeRoutersPageService,\n )\n {\n if (!isEmpty(data)) {\n this.jwt = data.jwt;\n this.token = data.token;\n this.expiration = data.expiration;\n this.qrCodeSize = data.qrCodeSize || 200;\n this.jwtExpired = this.getJwtExpired();\n this.expirationDate = this.getExpirationDate();\n this.isModal = true;\n this.identity = data.identity;\n this.qrOnly = data.qrOnly;\n }\n }\n\n get hasJWT() {\n return !isEmpty(this.jwt);\n }\n\n get showResetToken() {\n return this.authenticators?.cert?.id || this.authenticators?.updb?.id;\n }\n\n get showReissueToken() {\n return (this.identity?.enrollment?.ott?.id || this.identity?.enrollment?.updb?.id) && moment(this.expiration).isBefore();\n }\n\n get showReenrollToken() {\n return this.jwtExpired && this.type === 'router';\n }\n\n getJwtExpired() {\n return moment(this.expiration).isBefore();\n }\n\n getExpirationDate() {\n return moment(this.expiration).local().format('M/D/YY h:mm a');\n }\n\n reissue() {\n const dialogRef: MatDialogRef<any> = this.identitiesSvc.reissueJWT(this.identity);\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.doRefresh.emit(true);\n }\n });\n }\n\n reenroll() {\n this.edgeRoutersSvc.reenroll(this.identity).then(() => {\n this.doRefresh.emit(true);\n });\n }\n\n reset() {\n const dialogRef: MatDialogRef<any> = this.identitiesSvc.resetJWT(this.identity);\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.doRefresh.emit(true);\n }\n });\n }\n\n expandQRCode() {\n const data = {\n jwt: this.jwt,\n expiration: this.expiration,\n qrCodeSize: 400,\n identity: this.identity,\n qrOnly: true\n };\n const dialogRef = this.dialogForm.open(QrCodeComponent, {\n data: data,\n autoFocus: false,\n });\n }\n\n ngOnChanges() {\n this.jwtExpired = this.getJwtExpired();\n this.expirationDate = this.getExpirationDate();\n }\n}\n","<div class=\"qr-code-container\" [ngClass]=\"{'modal-view': isModal}\">\n <div *ngIf=\"!qrOnly\" class=\"qr-code-buttons\">\n <span class=\"info-text\" *ngIf=\"hasJWT && !jwtExpired && type !== 'router'\">TO REGISTER THIS IDENTITY</span>\n <span class=\"info-text\" *ngIf=\"hasJWT && !jwtExpired && type === 'router'\">TO REGISTER THIS ROUTER</span>\n <div (click)=\"identitiesSvc.downloadJWT(jwt, identity.name)\" *ngIf=\"hasJWT && !jwtExpired && type !== 'router'\" class=\"download-button\">\n <div class=\"download-key\"></div>\n <div>DOWNLOAD ENROLLMENT JWT</div>\n <div class=\"tap-to-download\"></div>\n </div>\n <div (click)=\"identitiesSvc.copyToken(token)\" *ngIf=\"!jwtExpired && type === 'router'\" class=\"download-button\" style=\"background-color: #232f3e!important;\">\n <div class=\"download-key\"></div>\n <div>COPY ENROLLMENT TOKEN</div>\n <div class=\"tap-to-download\"></div>\n </div>\n <div (click)=\"identitiesSvc.resetJWT(identity)\" *ngIf=\"showResetToken\" class=\"download-button\" >\n <div class=\"download-key\"></div>\n <div>RESET ENROLLMENT</div>\n <div class=\"tap-to-download\"></div>\n </div>\n <div (click)=\"reissue()\" *ngIf=\"showReissueToken\" class=\"download-button\" >\n <div class=\"download-key\"></div>\n <div>REISSUE ENROLLMENT</div>\n <div class=\"tap-to-download\"></div>\n </div>\n <span class=\"info-text\" *ngIf=\"hasJWT && !jwtExpired && type !== 'router'\">OR SCAN QR CODE</span>\n </div>\n <qrcode\n *ngIf=\"!jwtExpired && type !== 'router'\"\n [errorCorrectionLevel]=\"'M'\" [qrdata]=\"jwt\"\n [width]=\"qrCodeSize\" (click)=\"expandQRCode()\"\n [ngClass]=\"{'qr-code-expandable': canExpand}\"\n ></qrcode>\n <div *ngIf=\"!qrOnly\" class=\"qr-code-buttons\">\n <span class=\"info-text\" *ngIf=\"!jwtExpired && type === 'router'\">OR</span>\n <div (click)=\"identitiesSvc.downloadJWT(jwt, identity.name)\" *ngIf=\"!jwtExpired && type === 'router'\" class=\"download-button\">\n <div class=\"download-key\"></div>\n <div>DOWNLOAD ENROLLMENT JWT</div>\n <div class=\"tap-to-download\"></div>\n </div>\n <span class=\"info-text\" *ngIf=\"!showResetToken\">{{jwtExpired ? 'REGISTRATION EXPIRED' : 'EXPIRES'}} {{expirationDate}}</span>\n <div (click)=\"reenroll()\" *ngIf=\"showReenrollToken\" class=\"download-button\" >\n <div class=\"download-key\"></div>\n <div>REISSUE ENROLLMENT</div>\n <div class=\"tap-to-download\"></div>\n </div>\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport { Component } from '@angular/core';\nimport {ICellRendererAngularComp} from \"ag-grid-angular\";\nimport {ICellRendererParams} from \"ag-grid-community\";\n\nimport {isEmpty} from 'lodash';\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {QrCodeComponent} from \"../../../qr-code/qr-code.component\";\n\nimport moment from \"moment\";\n\n@Component({\n selector: 'lib-table-cell-token',\n templateUrl: './table-cell-token.component.html',\n styleUrls: ['./table-cell-token.component.scss']\n})\nexport class TableCellTokenComponent implements ICellRendererAngularComp {\n\n cellParams: any;\n item: any;\n dialogRef: any;\n\n constructor(public dialogForm: MatDialog) {\n }\n\n agInit(params: ICellRendererParams): void {\n this.cellParams = params;\n this.item = params.data;\n }\n\n get tokenExpired() {\n const expiration = this.getEnrollmentExpiration(this.item);\n if (expiration) {\n return moment(expiration).isBefore();\n } else {\n return false;\n }\n }\n\n get hasEnrolmentToken() {\n let token;\n let expiration;\n if (this.item?.enrollment?.ott?.jwt) {\n token = this.item?.enrollment?.ott?.jwt\n expiration = this.item?.enrollment?.ott?.expiresAt;\n } else if (this.item?.enrollment?.ottca?.jwt) {\n token = this.item?.enrollment?.ottca?.jwt;\n expiration = this.item?.enrollment?.ottca?.expiresAt;\n } else if (this.item?.enrollment?.updb?.jwt) {\n token = this.item?.enrollment?.updb?.jwt;\n expiration = this.item?.enrollment?.updb?.expiresAt;\n }\n return this.item.enrollmentToken || (token && !moment(expiration).isBefore());\n }\n\n getJWT(item: any) {\n if (!isEmpty(item.enrollmentJwt)) {\n return item.enrollmentJwt;\n }\n let qrCode;\n if (!isEmpty(item?.enrollment?.ott?.jwt)) {\n qrCode = item?.enrollment?.ott?.jwt;\n } else if (!isEmpty(item?.enrollment?.ottca?.jwt)) {\n qrCode = item?.enrollment?.ottca?.jwt;\n } else if(!isEmpty(item?.enrollment?.updb?.jwt)) {\n qrCode = item?.enrollment?.updb?.jwt;\n }\n return qrCode;\n }\n\n getEnrollmentExpiration(item: any) {\n if (!isEmpty(item?.enrollmentExpiresAt)) {\n return item.enrollmentExpiresAt;\n }\n let expiresAt;\n if (!isEmpty(item?.enrollment?.ott?.expiresAt)) {\n expiresAt = item?.enrollment?.ott?.expiresAt;\n } else if (!isEmpty(item?.enrollment?.ottca?.expiresAt)) {\n expiresAt = item?.enrollment?.ottca?.expiresAt;\n } else if(!isEmpty(item?.enrollment?.updb?.expiresAt)) {\n expiresAt = item?.enrollment?.updb?.expiresAt;\n }\n return expiresAt;\n }\n\n downloadCert() {\n const jwt = this.getJWT(this.item);\n const element = document.createElement('a');\n element.setAttribute('href', 'data:application/ziti-jwt;charset=utf-8,' + encodeURIComponent(jwt));\n element.setAttribute('download', this.item.name+\".jwt\");\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n showQRCode() {\n const data = {\n jwt: this.getJWT(this.item),\n expiration: this.getEnrollmentExpiration(this.item),\n qrCodeSize: 400,\n identity: this.item\n };\n this.dialogRef = this.dialogForm.open(QrCodeComponent, {\n data: data,\n autoFocus: false,\n });\n }\n\n refresh(params: ICellRendererParams<any>): boolean {\n this.cellParams = params;\n this.item = params.data;\n return true;\n }\n}\n","<div *ngIf=\"hasEnrolmentToken && !tokenExpired\">\n <span class=\"cert\" (click)=\"downloadCert()\"></span>\n <span class=\"qr icon-qr\" *ngIf=\"!item.enrollmentJwt\" (click)=\"showQRCode()\"></span>\n</div>\n<div *ngIf=\"hasEnrolmentToken && tokenExpired\">\n <span>Enrollment Expired</span>\n</div>\n<div *ngIf=\"!hasEnrolmentToken\">\n --\n</div>","import { Injectable } from '@angular/core';\nimport _ from \"lodash\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataTableService {\n tableId;\n gridObj;\n\n constructor() { }\n\n refreshCells(gridObj, rowData) {\n if (!gridObj) {\n return;\n }\n const dataChanged = !_.isEqual(rowData?.previousValue, rowData?.currentValue);\n if (dataChanged) {\n gridObj.api.zitiAllToggled = !_.isEmpty(rowData) && _.every(rowData, {selected: true});\n gridObj.api.refreshCells({force: true});\n }\n }\n\n pinColumn(column, pinned) {\n this.gridObj.columnApi.setColumnPinned(column, pinned);\n }\n resizeGridColumns(event = {}) {\n if (!this.gridObj) {\n return;\n }\n _.defer(() => {\n this.gridObj.api.sizeColumnsToFit();\n });\n }\n saveColumnState() {\n const tableState = this.gridObj.columnApi.getColumnState();\n const tableStateCookie = JSON.stringify(tableState);\n localStorage.setItem(`ziti_${this.tableId}_table_state`, tableStateCookie);\n }\n\n onColumnsResized(tableId, gridObj, column) {\n this.saveColumnWidths(tableId, gridObj, column);\n }\n private saveColumnWidths(tableId, gridObj, column) {\n if (!column) {\n return;\n }\n const columnId = column.colId;\n const columnWidth = column.actualWidth;\n let colWidthsCookie = localStorage.getItem(`ziti_${tableId}_column_widths`);\n let colWidths: any = {};\n if (!_.isEmpty(colWidthsCookie)) {\n colWidths = JSON.parse(colWidthsCookie);\n }\n colWidths[columnId] = columnWidth;\n colWidthsCookie = JSON.stringify(colWidths);\n localStorage.setItem(`ziti_${tableId}_column_widths`, colWidthsCookie);\n\n let tableStateCookie = localStorage.getItem(`ziti_${tableId}_table_state`);\n let tableState;\n if (_.isEmpty(tableStateCookie)) {\n tableState = gridObj.columnApi.getColumnState();\n } else {\n tableState = JSON.parse(tableStateCookie);\n }\n _.forEach(tableState, (column) => {\n if (columnId === column.colId) {\n column.suppressSizeToFit = true;\n column.width = columnWidth;\n }\n });\n tableStateCookie = JSON.stringify(tableState);\n localStorage.setItem(`ziti_${tableId}_table_state`, tableStateCookie);\n _.forEach(gridObj.columnApi.columnModel.columnDefs, (colDef) => {\n if (colDef.colId === columnId) {\n colDef.suppressSizeToFit = true;\n }\n });\n }\n getRowNodeId(row) {\n return row?.data?.id ? row?.data?.id : row?.data?.name ? row?.data?.name : 'new_row_' + row?.data?.itemIndex;\n }\n\n resetCookieConfig() {\n localStorage.removeItem(`ziti_${this.tableId}_table_state`);\n localStorage.removeItem(`ziti_${this.tableId}_column_widths`);\n }\n isServerSideGroup = function (dataItem) {\n return _.get(dataItem, 'processTree', []).length === 1;\n };\n getServerSideGroupKey = function (dataItem) {\n return dataItem.processId;\n };\n getDataPath (data) {\n return data.processTree;\n };\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {debounce, isNumber} from \"lodash\";\nimport {DataTableFilterService, FilterObj} from \"../data-table-filter.service\";\n\n@Component({\n selector: 'lib-table-filter-bar',\n templateUrl: './filter-bar.component.html',\n styleUrls: ['./filter-bar.component.scss']\n})\nexport class FilterBarComponent {\n\n _filters = [];\n\n @Input() startCount: string = '-';\n @Input() endCount: string = '-';\n @Input() totalCount: string = '-';\n @Input() currentPage: number = 1;\n\n filterString = '';\n inputChangedDebounced = debounce(this.inputChanged.bind(this), 400);\n\n constructor(public filterService: DataTableFilterService) {\n this.filterService.filtersChanged.subscribe(filters => {\n this._filters = [...filters];\n let tmp = '';\n for (let idx = 0; idx < filters.length; idx++) {\n if (filters[idx].columnId === 'name') {\n tmp = filters[idx].value;\n break;\n }\n }\n this.filterString = tmp;\n });\n }\n\n nextPage() {\n this.currentPage++;\n this.filterService.changePage(this.currentPage);\n }\n\n prevPage() {\n this.currentPage--;\n this.filterService.changePage(this.currentPage);\n }\n\n get nextDisabled() {\n if (!isNumber(this.totalCount) || !isNumber(this.endCount)) {\n return true;\n }\n const total: any = Number.parseInt(this.totalCount);\n const end: any = Number.parseInt(this.endCount);\n return end >= total;\n }\n\n get prevDisabled() {\n if (!isNumber(this.startCount) || !isNumber(this.totalCount)) {\n return true;\n }\n const start = Number.parseInt(this.startCount, 10);\n return start <= 1;\n }\n\n inputChanged() {\n const filterObj: FilterObj = {\n filterName: 'name',\n columnId: 'name',\n value: this.filterString,\n label: this.filterString,\n };\n this.filterService.updateFilter(filterObj)\n }\n\n\n removeFilter(filterObj: FilterObj) {\n this.filterService.removeFilter(filterObj);\n }\n}\n","<div class=\"filters\">\n <input\n id=\"SearchFilter\"\n data-defined=\"search\"\n type=\"text\"\n class=\"search\"\n placeholder=\"Type to Filter\"\n (keyup)=\"inputChangedDebounced()\"\n [(ngModel)]=\"filterString\"\n />\n <div class=\"clear icon-clear\" data-defined=\"clear\"></div>\n <div class=\"searchButton icon-search\"></div>\n <div class=\"filtered-columns-list\" id=\"ColumnFilterContainer\">\n <div\n (click)=\"removeFilter(filter)\"\n *ngFor=\"let filter of _filters\"\n class=\"filtered-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ filter.filterName }}\"\n title=\"Remove filter\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-filter\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ filter.filterName }}: {{ filter.label }}</div>\n </div>\n </div>\n <div class=\"counters\"><span id=\"Start\">{{startCount}}</span>-<span id=\"End\">{{endCount}}</span> of <span id=\"Total\">{{totalCount}}</span></div>\n <div class=\"navigate prev icon-prev\" [ngClass]=\"{disabled: prevDisabled}\" (click)=\"prevPage()\"></div>\n <div class=\"navigate next icon-next\" [ngClass]=\"{disabled: nextDisabled}\" (click)=\"nextPage()\"></div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'lib-table-hidden-columns-bar',\n templateUrl: './hidden-columns-bar.component.html',\n styleUrls: ['./hidden-columns-bar.component.scss']\n})\nexport class HiddenColumnsBarComponent {\n\n @Input() hiddenColumns: any;\n @Output() columnVisibilityChanged = new EventEmitter();\n\n setColumnVisibilityColumn(column, visible) {\n const event = {\n column,\n visible\n };\n this.columnVisibilityChanged.emit(event);\n }\n}\n","<div class=\"hidden-columns-list\" id=\"ColumnVisibilityHeader\">\n <div\n (click)=\"setColumnVisibilityColumn(col, true)\"\n *ngFor=\"let col of hiddenColumns\"\n class=\"hidden-column-item ag-dnd-ghost ag-unselectable ag-theme-alpine\"\n id=\"ColumnVisibility_{{ col.headerName }}\"\n title=\"Show column\"\n >\n <span class=\"ag-dnd-ghost-icon\">\n <span class=\"ag-icon ag-icon-eye-slash\"></span>\n </span>\n <div class=\"ag-dnd-ghost-label\">{{ col.headerName }}</div>\n </div>\n</div>","import {Component, EventEmitter, Input, OnChanges, Output} from '@angular/core';\n\n@Component({\n selector: 'lib-no-items',\n templateUrl: './no-items.component.html',\n styleUrls: ['./no-items.component.scss'],\n})\nexport class NoItemsComponent implements OnChanges {\n @Input() image = 'No_Gateways';\n @Input() typeName = '';\n @Input() isEmpty = false;\n @Input() hasAdd = true;\n @Input() hiddenResults = false;\n @Input() isLoading = false;\n background;\n @Output() clickEmit = new EventEmitter<any>();\n @Output() refresh = new EventEmitter<any>();\n\n constructor() {\n }\n\n ngOnChanges() {\n this.background = {\n 'background-image': 'url(assets/svgs/' + this.image + '.svg)',\n };\n }\n\n iconClick() {\n this.clickEmit.emit();\n }\n}\n","<div [hidden]=\"!isEmpty\" class=\"noarea\" id=\"NoArea\">\n <div (click)=\"iconClick()\">\n <div [ngStyle]=\"background\" class=\"icon\"></div>\n <div class=\"title\">\n This network currently has no {{ typeName }} to display.<br/><span [hidden]=\"!hasAdd\"\n >Tap on the <span class=\"addExample\"></span> to add one.</span\n >\n </div>\n </div>\n</div>\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'lib-tag-selector',\n templateUrl: './tag-selector.component.html',\n styleUrls: ['./tag-selector.component.scss'],\n})\nexport class TagSelectorComponent implements AfterViewInit {\n _availableRoleAttributes: any[] = [];\n _availableNamedAttributes: any[] = [];\n\n @Input() placeholder = 'Select';\n @Input() disableField = false;\n @Input() disableCreate = false;\n @Input() hideOption = '';\n @Input() isLoading = false;\n @Input() errorMessage = '';\n @Input() focusOnInit = false;\n @Output() addRoleAttribute = new EventEmitter<any>();\n @Output() addNamedAttribute = new EventEmitter<any>();\n @Output() roleAttributeRemoved = new EventEmitter<any>();\n @Output() namedAttributeRemoved = new EventEmitter<any>();\n @Output() selectedRoleAttributesChange = new EventEmitter<any>();\n @Output() selectedNamedAttributesChange = new EventEmitter<any>();\n @Output() filterChange = new EventEmitter<any>();\n\n hideSelect = true;\n displayedRoleOptions: any[] = [];\n displayedNamedOptions: any[] = [];\n filterString = '';\n _hashAttributes = {};\n\n @ViewChild('search') search: ElementRef;\n @ViewChild('dropdownWrapper') dropdownWrapper: ElementRef;\n\n constructor() {\n }\n\n ngAfterViewInit() {\n if (this.focusOnInit) {\n this.search.nativeElement.focus();\n }\n }\n\n _selectedRoleAttributes: any[] = [];\n\n @Input() set selectedRoleAttributes(attrs: any) {\n if (attrs) {\n this._selectedRoleAttributes = attrs;\n this._filterAttributes();\n }\n }\n\n _selectedNamedAttributes: any[] = [];\n\n @Input() set selectedNamedAttributes(attrs: any) {\n if (attrs) {\n this._selectedNamedAttributes = attrs;\n this._filterAttributes();\n }\n }\n\n _hasError = false;\n\n @Input() set hasError(value: boolean) {\n this._hasError = value;\n }\n\n @Input() set availableRoleAttributes(attrs: any) {\n if (attrs) {\n this._availableRoleAttributes = attrs;\n this._filterAttributes();\n }\n }\n\n @Input() set availableNamedAttributes(attrs: any) {\n if (attrs) {\n this._availableNamedAttributes = attrs;\n this._filterAttributes();\n }\n }\n\n isSelected(item: any) {\n return this.isAttributeSelected(item);\n }\n\n addSelectedRoleAttribute(item: any) {\n if (!this.isAttributeSelected(item)) {\n this.addRoleAttribute.emit(item);\n this._selectedRoleAttributes.push(item);\n this.selectedRoleAttributesChange.emit(this._selectedRoleAttributes);\n this.hide();\n }\n }\n\n addSelectedNamedAttribute(item: any) {\n if (!this.isAttributeSelected(item)) {\n this.addNamedAttribute.emit(item);\n this._selectedNamedAttributes.push(item);\n this.selectedNamedAttributesChange.emit(this._selectedNamedAttributes);\n this.hide();\n }\n }\n\n isAttributeSelected(attribute) {\n if(!attribute || attribute.length <= 0) {\n return false;\n }\n if (attribute.charAt(0) === '#' || attribute.charAt(0) === '@') {\n attribute = attribute.substring(1);\n }\n let selected = false;\n this._selectedRoleAttributes.forEach((attr) => {\n if(attr === attribute) {\n selected = true;\n }\n });\n this._selectedNamedAttributes.forEach((attr) => {\n if(attr === attribute) {\n selected = true;\n }\n });\n return selected;\n }\n\n removeRoleAttribute(item: any) {\n if (!this.disableField) {\n this._selectedRoleAttributes = this._selectedRoleAttributes.filter((attr) => {\n return attr !== item;\n });\n this.selectedRoleAttributesChange.emit(this._selectedRoleAttributes);\n this.roleAttributeRemoved.emit(item);\n this.hide();\n }\n }\n\n removeNamedAttribute(item: any) {\n if (!this.disableField) {\n this._selectedNamedAttributes = this._selectedNamedAttributes.filter((attr) => {\n return attr !== item;\n });\n this.selectedNamedAttributesChange.emit(this._selectedNamedAttributes);\n this.namedAttributeRemoved.emit(item);\n this.hide();\n }\n }\n\n inputFocus() {\n this.hideSelect = false;\n }\n\n inputFocusOut() {\n this.hideSelect = true;\n }\n\n toggleSelect() {\n if (!this.disableField) {\n this.hideSelect = !this.hideSelect;\n }\n }\n\n openSelect() {\n if (!this.disableField) {\n this.hideSelect = false;\n }\n }\n\n hide() {\n this.hideSelect = true;\n }\n\n handleKeyUp($event: KeyboardEvent, filterString: string) {\n switch ($event.key) {\n case 'Enter':\n this.addNewAttribute(filterString);\n $event.stopPropagation();\n $event.preventDefault();\n break;\n case 'Escape':\n this.hide();\n this.search.nativeElement.blur();\n this.dropdownWrapper.nativeElement.focus();\n $event.stopPropagation();\n $event.preventDefault();\n break;\n default:\n this.applyFilter();\n }\n this.filterChange.emit(filterString);\n }\n\n handleKeyDown($event: KeyboardEvent) {\n switch ($event.key) {\n case 'Tab':\n this.toggleSelect();\n this.filterString = '';\n break;\n default:\n }\n }\n\n applyFilter = () => {\n this._hasError = false;\n this._filterAttributes();\n };\n\n // update the filter on mouse up event\n // this is used for the specific case where the user clears the filter via the x button\n applyFilterMouseUp() {\n setTimeout(() => {\n if (this.filterString === '') {\n this._filterAttributes();\n }\n }, 50);\n }\n\n _filterAttributes() {\n let filteredAvailableRoleAttributes: any[] = [];\n let filteredAvailableNamedAttributes: any[] = [];\n if (this.filterString) {\n filteredAvailableRoleAttributes = this._availableRoleAttributes.filter((attr) => {\n return attr.indexOf(this.filterString) >= 0\n });\n filteredAvailableNamedAttributes = this._availableNamedAttributes.filter((attr) => {\n return attr.indexOf(this.filterString) >= 0\n });\n } else {\n filteredAvailableRoleAttributes = this._availableRoleAttributes;\n filteredAvailableNamedAttributes = this._availableNamedAttributes;\n }\n\n this.displayedRoleOptions = filteredAvailableRoleAttributes;\n this.displayedNamedOptions = filteredAvailableNamedAttributes;\n }\n\n addNewAttribute(attribute: string) {\n if (!this.disableCreate) {\n this._hasError = false;\n if (attribute !== '') {\n let reference = attribute.charAt(0);\n\n if (reference === '#' || reference === '@') {\n attribute = attribute.substring(1);\n } else {\n reference = '#';\n }\n\n attribute = `${reference}${attribute}`;\n attribute = attribute.trim();\n\n if (!this.isAttributeSelected(attribute)) {\n attribute = attribute.substring(1);\n if (reference === '@') {\n this.addSelectedNamedAttribute(attribute);\n this.addRoleAttribute.emit(attribute);\n } else {\n this.addSelectedRoleAttribute(attribute);\n this.addNamedAttribute.emit(attribute);\n }\n } else {\n this.filterString = '';\n return;\n }\n }\n this.filterString = '';\n this.hide();\n }\n }\n\n get isNothingSelected() {\n return this._selectedRoleAttributes?.length <= 0 && this._selectedNamedAttributes?.length <= 0;\n }\n\n nameSort = (a: any, b: any) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0);\n}\n","<span (clickOutside)=\"hide()\" [ngClass]=\"{ readOnly: disableField }\" class=\"clickOutside fullWidth tagsSelector\" >\n <span\n class=\"select2 select2-container select2-container--default select2-container--below select2-container--focus\"\n dir=\"ltr\"\n >\n <span class=\"selection\">\n <span\n [ngClass]=\"{ 'select2-selection-focus': !hideSelect, tagError: _hasError }\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n class=\"select2-selection select2-selection--multiple\"\n role=\"combobox\"\n tabindex=\"-1\"\n >\n <input\n (focus)=\"inputFocus()\"\n (keydown)=\"handleKeyDown($event);\"\n (keyup)=\"handleKeyUp($event, filterString);\"\n (mouseup)=\"applyFilterMouseUp()\"\n [(ngModel)]=\"filterString\"\n [disabled]=\"disableField\"\n [ngClass]=\"{ empty: isNothingSelected, tagError: _hasError }\"\n aria-autocomplete=\"list\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n class=\"select2-search__field\"\n placeholder=\"{{disableField ? (isNothingSelected ? 'Nothing selected' : '') : placeholder}}\"\n role=\"textbox\"\n spellcheck=\"false\"\n tabindex=\"0\"\n type=\"search\"\n #search\n />\n <span *ngIf=\"isLoading\" class=\"spinner\"></span>\n\n <ul\n (click)=\"openSelect()\"\n [ngClass]=\"{ error: _hasError, readOnly: disableField, empty: isNothingSelected }\"\n class=\"select2-selection__rendered\"\n >\n <li\n (click)=\"$event.stopPropagation()\"\n *ngFor=\"let item of _selectedRoleAttributes\"\n [hidden]=\"item === this.hideOption\"\n class=\"hashtag select2-selection__choice\"\n title=\"#{{ item }}\"\n >\n <span\n (click)=\"removeRoleAttribute(item); $event.stopPropagation()\"\n class=\"select2-selection__choice__remove\"\n role=\"presentation\"\n >×</span\n ><span class=\"select2-selection__choice__text\">#{{ item }}</span>\n </li>\n <li\n (click)=\"$event.stopPropagation()\"\n *ngFor=\"let item of _selectedNamedAttributes\"\n [hidden]=\"item === this.hideOption\"\n class=\"attag select2-selection__choice\"\n title=\"@{{ item }}\"\n >\n <span\n (click)=\"removeNamedAttribute(item); $event.stopPropagation()\"\n class=\"select2-selection__choice__remove\"\n role=\"presentation\"\n >×</span\n ><span class=\"select2-selection__choice__text\">@{{ item }}</span>\n </li>\n </ul>\n </span>\n </span>\n <span aria-hidden=\"true\" class=\"dropdown-wrapper\" tabindex=\"-1\" #dropdownWrapper></span>\n </span>\n <span *ngIf=\"_hasError\" class=\"err\">\n {{ errorMessage }}\n </span>\n\n <span\n *ngIf=\"!hideSelect\"\n [ngClass]=\"{ withBorder: !hideSelect }\"\n class=\"nf-select2-dropdown select2-dropdown--below\"\n dir=\"ltr\"\n >\n <span class=\"select2-results\">\n <ul\n aria-expanded=\"true\"\n aria-hidden=\"false\"\n aria-multiselectable=\"true\"\n class=\"select2-results__options\"\n role=\"tree\"\n >\n <li\n (click)=\"addNewAttribute(filterString)\"\n [hidden]=\"filterString === '' || isAttributeSelected(filterString)\"\n aria-selected=\"false\"\n class=\"select2-results__option hashtag\"\n role=\"treeitem\"\n title=\"{{ filterString }} (New Attribute)\"\n >\n {{ filterString }} (New Attribute)\n </li>\n <li\n (click)=\"addSelectedRoleAttribute(option)\"\n *ngFor=\"let option of displayedRoleOptions\"\n [hidden]=\"option === this.hideOption || isSelected(option)\"\n aria-selected=\"false\"\n class=\"hashtag select2-results__option\"\n role=\"treeitem\"\n >\n #{{ option }}\n </li>\n <li\n (click)=\"addSelectedNamedAttribute(option)\"\n *ngFor=\"let option of displayedNamedOptions\"\n [hidden]=\"option === this.hideOption || isSelected(option)\"\n aria-selected=\"false\"\n class=\"attag select2-results__option\"\n role=\"treeitem\"\n >\n @{{ option }}\n </li>\n </ul>\n </span>\n </span>\n</span>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild} from '@angular/core';\n\n// Import the resized event model\nimport $ from 'jquery';\nimport _ from 'lodash';\nimport moment from 'moment'\n\nimport {TableColumnDefaultComponent} from \"./column-headers/table-column-default/table-column-default.component\";\nimport {TableColumnSelectComponent} from \"./column-headers/table-column-select/table-column-select.component\";\nimport {TableColumnMenuComponent} from \"./column-headers/table-column-menu/table-column-menu.component\";\nimport {TableCellSelectComponent} from \"./cells/table-cell-select/table-cell-select.component\";\nimport {TableCellMenuComponent} from \"./cells/table-cell-menu/table-cell-menu.component\";\nimport {DataTableService} from \"./data-table.service\";\nimport {TableCellTokenComponent} from \"./cells/table-cell-token/table-cell-token.component\";\nimport {DataTableFilterService, FilterObj} from \"./data-table-filter.service\";\nimport {Subscription} from \"rxjs\";\n\n@Component({\n selector: 'lib-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent implements OnChanges, OnInit {\n @Input() rowData: any;\n @Input() expandRowData: any;\n @Input() collapseRowData: any;\n @Input() rowValidation: any;\n // @Input() columnFilters: any;\n @Input() isTimeSearchAvailable: boolean;\n @Input() isLoading: any;\n @Input() set tableId( id: string) {\n this.svc.tableId = id;\n this.updateEntityTypeLabel()\n }\n @Input() options = {noSelect: false, noMenu: false};\n @Input() validateService: any;\n @Input() rowsToggled: any;\n @Input() tableRefreshCount: any;\n @Input() set view(value: any) {\n this._view = value;\n }\n @Input() serverSideDataSource: any;\n @Input() allowDownload: boolean;\n // @Input() filters: any;\n @Input() startCount: any;\n @Input() endCount: any;\n @Input() totalCount: any;\n @Input() emptyMsg: any;\n @Input() filterApplied = false;\n @Input() menuItems: any = [];\n @Input() headerActions: any = [];\n @Input() noItemsClass: any = 'background-image: url(\"/assets/svgs/No_Clients.svg\")';\n @Input() entityTypeName = 'Identities';\n @Input() showNoItemsAdd = true;\n @Input() currentPage = 1;\n @Input() noItemsImage = 'nodata';\n @Output() actionRequested = new EventEmitter<{ action: string; item?: any }>();\n // @Output() filterChanged = new EventEmitter();\n @Output() gridReady = new EventEmitter();\n @Output() dragStart = new EventEmitter();\n @Output() dragLeave = new EventEmitter();\n @Output() pageChanged = new EventEmitter();\n\n _view = 'list';\n frameworkComponents;\n gridModules;\n gridOptions;\n visibleColumns;\n hiddenColumns;\n visibleColumnIds;\n hiddenColumnIds;\n mergedColumnDefinitions;\n openMenu;\n openHeaderMenu;\n filterOptions: any = [];\n showFilterOptions;\n showDateTimePicker;\n showTagSelector;\n attributesColumn = '';\n dateTimeColumn = '';\n dateTimeFilterLabel = '';\n selectedRange = '';\n dateValue;\n menuLeft;\n menuTop;\n gridRendered;\n resizeGridColumnsDebounced;\n selectedItem: any = {\n actionList: [],\n };\n entityTypeLabel = ''\n columnFilters:any = {};\n roleAttributes: any[] = [];\n namedAttributes: any[] = [];\n selectedRoleAttributes: any[] = [];\n selectedNamedAttributes: any[] = [];\n // appliedFilters = [];\n autoGroupColumnDef;\n currentHeaderComponentParams: any = {};\n subscription: Subscription = new Subscription();\n\n public menuColumnDefinition = {\n colId: 'ziti-ag-menu',\n field: 'ziti-ag-menu',\n resizable: false,\n width: 50,\n sortable: false,\n lockPosition: true,\n suppressMovable: true,\n headerClass: 'menuHeader',\n cellClass: 'tCol cellMenu',\n cellRenderer: 'cellMenuComponent',\n cellRendererParams: {\n openMenu: ($event, item) => {\n this.openActionMenu($event, item);\n },\n closeMenu: (event) => {\n this.closeActionMenu();\n },\n },\n suppressSizeToFit: true,\n pinned: 'right',\n headerComponent: TableColumnMenuComponent,\n headerComponentParams: {\n openHeaderMenu: ($event) => {\n this.openHeaderActionMenu($event);\n },\n closeMenu: (event) => {\n this.closeActionMenu();\n },\n },\n };\n private _initialColumnDefs;\n private _refreshCellsDebounced;\n private _onColumnsResizedDebounced;\n private _saveColumnStateDebounced;\n\n private selectColumnDefinition = {\n colId: 'ziti-ag-selected',\n field: 'ziti-ag-selected',\n suppressSizeToFit: true,\n lockPosition: true,\n suppressMovable: true,\n resizable: false,\n pinned: 'left',\n width: 60,\n sortable: false,\n headerClass: 'selectHeader',\n cellClass: 'tCol',\n cellRenderer: 'cellSelectComponent',\n cellRendererParams: {\n toggleItem: (item) => {\n item.selected = !item.selected;\n this.svc.gridObj.api.zitiAllToggled = _.every(this.rowData, {selected: true});\n _.defer(() => {\n this.svc.gridObj.api.refreshCells({force: true});\n });\n this.actionRequested.emit({action: 'toggleItem', item: item});\n },\n },\n headerComponent: TableColumnSelectComponent,\n headerComponentParams: {\n toggleAll: (selected: boolean) => {\n if (!this.svc.gridObj) {\n return;\n }\n _.forEach(this.rowData, (row) => {\n row.selected = selected;\n });\n this.actionRequested.emit({action: 'toggleAll'});\n _.defer(() => {\n this.svc.gridObj.api.refreshCells({force: true});\n });\n },\n },\n };\n\n @ViewChild('calendar', { static: false }) calendar: any;\n @ViewChild('contextMenu') contextMenu;\n\n constructor(public svc: DataTableService, private tableFilterService: DataTableFilterService) {\n this.resizeGridColumnsDebounced = _.debounce(this.svc.resizeGridColumns.bind(this.svc), 20, {leading: true});\n this._refreshCellsDebounced = _.debounce(this.svc.refreshCells.bind(this.svc), 50);\n this._onColumnsResizedDebounced = _.debounce(this.svc.onColumnsResized.bind(this.svc), 400);\n this._saveColumnStateDebounced = _.debounce(this.svc.saveColumnState.bind(this.svc), 400);\n }\n\n private _columnDefinitions;\n\n @Input() set columnDefinitions(value: any) {\n this._columnDefinitions = value;\n\n }\n\n get showFilterBar(): boolean {\n return this._view !== 'upload' && this._view !== 'process';\n }\n\n @Input() set refreshCount(value: number) {\n if (!this.svc.gridObj) {\n return;\n }\n _.defer(() => {\n this.svc.gridObj.api.redrawRows();\n this.svc.gridObj.api.refreshCells({force: true});\n });\n }\n\n ngOnInit() {\n this.frameworkComponents = {\n cellSelectComponent: TableCellSelectComponent,\n cellMenuComponent: TableCellMenuComponent,\n cellTokenComponent: TableCellTokenComponent,\n headerCellSelectComponent: TableColumnSelectComponent,\n headerHeaderMenuComponent: TableColumnMenuComponent,\n headerDefaultComponent: TableColumnDefaultComponent,\n };\n\n this.autoGroupColumnDef = {\n field: 'processTree',\n headerName: 'Process Name',\n cellRenderer: 'cellResourceStatusComponent',\n resizable: true,\n cellRendererParams: {resourceType: 'process-execution'},\n headerComponentFramework: TableColumnDefaultComponent,\n };\n\n if (this._columnDefinitions) {\n this._addColumnEvents();\n this._addDefaultColumnDefs();\n this._storeInitialColumnDefs();\n this._setColumnWidths();\n this._setColumnOrderAndVisibility();\n this._initColumnVisibility();\n this._initGridOptions();\n }\n }\n\n ngOnChanges(changes: any): void {\n if (this.svc.gridObj && changes.rowData) {\n this._refreshCellsDebounced(changes.rowData);\n }\n }\n\n columnVisibilityChanged(event) {\n this.setColumnVisibilityColumn(event?.column, event?.visible);\n }\n\n openActionMenu(event, item): void {\n this.selectedItem = item;\n this.openMenu = true;\n _.delay(() => {\n const height = this.contextMenu?.nativeElement?.offsetHeight || 120;\n const windowOffset = window.innerHeight - event.clientY;\n const menuOffset = windowOffset <= height ? height - windowOffset : 0;\n this.menuLeft = event.clientX - 100;\n this.menuTop = event.clientY + 5 - menuOffset;\n }, 10);\n }\n\n onGridReady(params) {\n this.gridReady.emit(params);\n }\n\n resetTableColumns() {\n if (!this.svc.gridObj) {\n return;\n }\n this.mergedColumnDefinitions = _.cloneDeep(this._initialColumnDefs);\n this.svc.gridObj.api.setColumnDefs(this.mergedColumnDefinitions);\n this.svc.resetCookieConfig();\n this.svc.gridObj.columnApi.resetColumnState();\n _.defer(() => {\n this._updateHiddenColumns();\n this.svc.resizeGridColumns();\n });\n }\n\n openHeaderActionMenu(event): void {\n this.menuLeft = event.clientX - 150;\n this.menuTop = event.clientY + 5;\n _.delay(() => {\n this.openHeaderMenu = true;\n }, 100);\n }\n\n closeActionMenu(): void {\n this.selectedItem = {\n actionList: [],\n };\n this.openMenu = false;\n this.openHeaderMenu = false;\n }\n\n openHeaderFilter(event, options, type, columnId, filterLabel, headerComponentParams): void {\n this.filterOptions = options;\n this.menuLeft = event.clientX;\n this.menuTop = event.clientY + 10;\n if (type === 'DATETIME') {\n this.dateTimeColumn = columnId;\n this.dateTimeFilterLabel = filterLabel || 'Date: ';\n _.delay(() => {\n this.showDateTimePicker = true;\n }, 10);\n _.delay(() => {\n this.calendar.toggle();\n }, 100);\n } else if (type === 'ATTRIBUTE') {\n this.attributesColumn = columnId;\n this.roleAttributes = headerComponentParams?.getRoleAttributes();\n this.namedAttributes = headerComponentParams?.getNamedAttributes();\n this.selectedRoleAttributes = headerComponentParams.getSelectedRoleAttributes();\n this.selectedNamedAttributes = headerComponentParams.getSelectedNamedAttributes();\n this.dateTimeFilterLabel = filterLabel;\n this.currentHeaderComponentParams = headerComponentParams;\n _.delay(() => {\n this.showTagSelector = true;\n }, 100);\n } else {\n _.defer(() => {\n this.showFilterOptions = true;\n });\n }\n }\n\n setDateRangeFilter(range) {\n let startDate;\n let label;\n let endDate = moment();\n let closeCalendar = true;\n this.selectedRange = range;\n switch (range) {\n case 'hour':\n startDate = moment().subtract(1, 'hours');\n label = 'Last Hour';\n break;\n case 'day':\n startDate = moment().subtract(24, 'hours');\n label = 'Last Day';\n break;\n case 'week':\n startDate = moment().subtract(7, 'days');\n label = 'Last Week';\n break;\n case 'month':\n startDate = moment().subtract(1, 'month');\n label = 'Last Month';\n break;\n case 'custom':\n if (!this.dateValue) {\n return;\n }\n startDate = moment(this.dateValue[0]);\n if (this.dateValue[1] !== undefined && this.dateValue[1] !== null) {\n endDate = moment(this.dateValue[1]);\n }\n label = 'Custom';\n closeCalendar = false;\n break;\n default:\n startDate = moment().subtract(24, 'hours');\n label = 'Last Day';\n break;\n }\n const startDateRange = encodeURIComponent(startDate.toISOString());\n const endDateRange = encodeURIComponent(endDate.toISOString());\n this.columnFilters[this.dateTimeColumn] = [startDateRange, endDateRange];\n\n if (closeCalendar) {\n this.calendar.toggle();\n }\n if (range !== 'custom') {\n this.dateValue = [startDate.toDate(), endDate.toDate()];\n }\n const filterObj: FilterObj = {\n columnId: this.dateTimeColumn,\n value: [startDateRange, endDateRange],\n label: label,\n filterName: this.dateTimeFilterLabel,\n type: 'DATETIME'\n };\n\n this.tableFilterService.updateFilter(filterObj);\n }\n\n tagSelectionChanged(event, isRole) {\n let label = '';\n let value = '';\n if (isRole) {\n this.selectedNamedAttributes = [];\n if (this.selectedRoleAttributes.length > 1) {\n this.selectedRoleAttributes = [_.last(this.selectedRoleAttributes)];\n }\n this.selectedRoleAttributes.forEach((attr, index) => {\n if (index > 0) {\n label += ', ';\n value += ', ';\n }\n label += '#' + attr;\n value += '%23' + attr;\n });\n } else {\n this.selectedRoleAttributes = [];\n const attrIdMap = this.currentHeaderComponentParams.getNamedAttributesMap();\n if (this.selectedNamedAttributes.length > 1) {\n this.selectedNamedAttributes = [_.last(this.selectedNamedAttributes)];\n }\n this.selectedNamedAttributes.forEach((attr, index) => {\n if (index > 0) {\n label += ', ';\n value += ', ';\n }\n label += '@' + attr;\n value += '%40' + attrIdMap[attr];\n });\n }\n const filterObj: FilterObj = {\n columnId: this.attributesColumn,\n value: value,\n label: label,\n filterName: this.dateTimeFilterLabel,\n type: 'ATTRIBUTE'\n };\n this.currentHeaderComponentParams.setSelectedRoleAttributes(this.selectedRoleAttributes);\n this.currentHeaderComponentParams.setSelectedNamedAttributes(this.selectedNamedAttributes);\n this.tableFilterService.updateFilter(filterObj);\n }\n\n applyFilter(event, filter) {\n this.tableFilterService.updateFilter(filter);\n this.closeHeaderFilter(event);\n }\n\n closeHeaderFilter(event): void {\n this.showFilterOptions = false;\n }\n\n closeDateTime(event): void {\n this.showDateTimePicker = false;\n }\n\n closeTagSelector(event): void {\n this.showTagSelector = false;\n }\n\n openCreate() {\n this.actionRequested.emit({action: 'create'});\n }\n\n anySelected() {\n return _.some(this.rowData, {selected: true});\n }\n\n showDownload() {\n return this.allowDownload && this._view !== 'process';\n }\n\n _initGridOptions() {\n this.gridOptions = {\n pagination: false,\n rowSelection: 'single',\n rowClass: 'ziti-table-row',\n rowHeight: 50,\n immutableData: true,\n suppressRowClickSelection: true,\n suppressHorizontalScroll: false,\n stopEditingWhenGridLosesFocus: true,\n suppressPropertyNamesCheck: true,\n animateRows: true,\n defaultColDef: {\n sortable: false,\n filter: false, // set filtering on for all columns\n },\n onRowDragMove: (params) => {\n this.dragStart.emit(params);\n },\n onRowDragLeave: (params) => {\n this.dragLeave.emit(params);\n },\n onRowDragEnd: () => {\n $('.attribute-item').show();\n $('.drag-hover').removeClass('drag-hover');\n $('#ColumnVisibilityHeader').trigger('click');\n $('.new-attribute-target').hide();\n },\n rowClassRules: {\n // row style function\n 'row-invalid': function (params) {\n return _.get(params, 'data.invalid');\n },\n 'row-copied': function (params) {\n return _.get(params, 'data.copied');\n },\n 'row-child-sub-process': function (params) {\n return (\n params.api.view === 'process' &&\n !_.get(params, 'data.isRoot') &&\n !_.isEmpty(_.get(params, 'data.subprocessId'))\n );\n },\n 'row-child': function (params) {\n return (\n (params.api.view === 'process' || params.api.view === 'user-roles') &&\n !_.get(params, 'data.isRoot') &&\n !_.isEmpty(_.get(params, 'data.parentId'))\n );\n },\n 'row-child-second': function (params) {\n return (\n params.api.view === 'process' &&\n !_.get(params, 'data.isRoot') &&\n _.get(params, 'data.isParallel')\n );\n },\n 'row-child-even': function (params) {\n return (\n (params.api.view === 'process' || params.api.view === 'user-roles') &&\n _.get(params, 'data.parentIndex') % 2 > 0\n );\n },\n 'row-child-odd': function (params) {\n return (\n (params.api.view === 'process' || params.api.view === 'user-roles') &&\n _.get(params, 'data.parentIndex') % 2 === 0\n );\n },\n 'row-child-warn': function (params) {\n return params.api.view === 'process' && _.get(params, 'data.state') === 'WARNING';\n },\n 'row-child-header': function (params) {\n return params.api.view === 'process' && _.get(params, 'data.rowType') === 'step-header';\n },\n 'row-role-item': function (params) {\n return _.get(params, 'data.roleItem');\n },\n },\n getRowHeight: (params) => {\n if (params.api.view === 'process') {\n if (_.get(params, 'data.isRoot')) {\n return 50;\n }\n if (_.get(params, 'data.isParallel')) {\n return 35;\n }\n if (_.get(params, 'data.parentId')) {\n return 40;\n }\n return 50;\n } else if (\n params.api.view === 'users' ||\n params.api.view === 'user-roles' ||\n params.api.view === 'roles'\n ) {\n if (_.get(params, 'data.roleItem')) {\n return 35;\n }\n return 50;\n } else {\n return 50;\n }\n },\n\n onCellEditingStopped: (eventObj) => {\n if (!this.validateService) {\n return;\n }\n const field = _.get(eventObj, 'colDef.field', '');\n if (_.includes(field.toLowerCase(), 'attribute')) {\n const newVal = eventObj.newValue.split(',');\n _.set(eventObj, `data.${field}`, newVal);\n } else {\n _.set(eventObj, `data.${field}`, eventObj.newValue);\n }\n this._validateTable(eventObj);\n },\n getRowNodeId: (data) => data.name,\n onBodyScroll: (scroller) => {\n this._handleTableScroll(scroller);\n },\n onGridReady: (grid) => {\n grid.api.zitiAllToggled = false;\n grid.api.zitiHideColumn = this.setColumnVisibilityColumn.bind(this);\n grid.api.validateTable = this._validateTable.bind(this);\n grid.api.view = this._view;\n grid.api.zitiRowData = this.rowData;\n grid.api.openHeaderFilter = this.openHeaderFilter.bind(this);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n grid.api.rowsToggled = this.rowsToggled ? this.rowsToggled.bind(this) : () => {};\n if (this.serverSideDataSource) {\n grid.api.setServerSideDatasource(this.serverSideDataSource);\n }\n this.svc.gridObj = grid;\n _.defer(this._applyColumnState.bind(this));\n },\n onColumnVisible: (eventObj) => {\n if (!eventObj.column) {\n return;\n }\n this.updateColumnVisibility(eventObj.column.colDef.colId, eventObj.visible);\n if (eventObj.visible) {\n this.svc.gridObj.columnApi.moveColumn(\n eventObj.column.colDef.colId,\n this.mergedColumnDefinitions.length - 1\n );\n _.defer(() => {\n this.svc.gridObj.api.ensureColumnVisible(eventObj.column.colDef.colId);\n });\n }\n this._updateGridColumns();\n this.svc.saveColumnState();\n },\n onFirstDataRendered: (eventObj) => {\n this.svc.resizeGridColumns();\n this.gridRendered = true;\n },\n onColumnPinned: (eventObj) => {\n if (!eventObj.column) {\n return;\n }\n const colId = eventObj.column.colDef.colId;\n const pinned = eventObj.pinned === 'left';\n this.mergedColumnDefinitions = _.map(this.mergedColumnDefinitions, (colDef) => {\n if (colDef.colId === colId) {\n colDef.lockPosition = pinned;\n colDef.suppressMovable = pinned;\n }\n return colDef;\n });\n this._updateGridColumns();\n this.svc.resizeGridColumns();\n this.svc.saveColumnState();\n },\n onColumnResized: (eventObj) => {\n if (!eventObj.column || eventObj.source === 'sizeColumnsToFit') {\n return;\n }\n this._onColumnsResizedDebounced(eventObj.column);\n },\n onColumnMoved: (eventObj) => {\n this._saveColumnStateDebounced();\n },\n };\n }\n\n _validateTable(eventObj) {\n this.rowData[eventObj.rowIndex] = eventObj.data;\n _.delay(() => {\n this.validateService(this.rowData);\n _.delay(() => {\n this.svc.gridObj.api.refreshCells({force: true});\n this.svc.gridObj.api.redrawRows();\n }, 50);\n }, 50);\n }\n\n _applyColumnState() {\n const tableStateCookie = localStorage.getItem(`ziti_${this.svc.tableId}_table_state`);\n const tableState = JSON.parse(tableStateCookie);\n if (tableState) {\n this.svc.gridObj.columnApi.applyColumnState({state: tableState});\n this._updateHiddenColumns();\n }\n }\n\n _addColumnEvents() {\n this._columnDefinitions = _.map(this._columnDefinitions, (colDef) => {\n colDef.pinColumn = this.svc.pinColumn.bind(this.svc);\n colDef.cellClass = this._getCellStyle.bind(this);\n return colDef;\n });\n }\n\n _getCellStyle(params) {\n if (!this.rowValidation || this.rowValidation.length <= 0) {\n return '';\n }\n const validationResult = this.rowValidation[params.node.rowIndex];\n if (!validationResult || !validationResult.errors) {\n return '';\n }\n const field = _.get(params, 'colDef.field', '');\n if (validationResult.errors[field]) {\n return 'ziti-table-cell-error';\n }\n return '';\n }\n updateColumnVisibility(colId, visible) {\n this._columnDefinitions = _.map(this._columnDefinitions, (colDef) => {\n if (colDef.colId === colId) {\n colDef.hide = !visible;\n }\n return colDef;\n });\n for (const colDef of this.mergedColumnDefinitions) {\n if (colDef.colId === colId) {\n colDef.hide = !visible;\n }\n }\n this._updateHiddenColumns();\n this.svc.resizeGridColumns();\n }\n\n updateEntityTypeLabel() {\n switch(this.svc.tableId) {\n case 'identities':\n this.entityTypeLabel = 'Identities';\n break;\n case 'edge-routers':\n this.entityTypeLabel = 'Edge Routers';\n break;\n case 'services':\n this.entityTypeLabel = 'Services';\n break;\n }\n }\n\n setColumnVisibilityColumn(column, visible) {\n this.svc.gridObj.columnApi.setColumnVisible(column.colId, visible);\n this.svc.gridObj.api.refreshHeader();\n _.defer(() => {\n this.updateColumnVisibility(column.colId, visible);\n });\n }\n\n _updateHiddenColumns() {\n const gridColumnDefs = this.svc.gridObj.columnApi.columnModel.gridColumns;\n const visibleGridColumns = gridColumnDefs.filter((col) => col.visible);\n const hiddenGridColumns = gridColumnDefs.filter((col) => !col.visible);\n this.visibleColumns = _.map(visibleGridColumns, 'colDef');\n this.visibleColumnIds = _.map(this.visibleColumns, 'field');\n this.hiddenColumns = _.map(hiddenGridColumns, 'colDef');\n this.hiddenColumnIds = _.map(this.hiddenColumns, 'field');\n }\n\n addHeaderMenu(columnDefs = []) {\n columnDefs.forEach((columnDef) => {\n if (columnDef.useHeaderMenu) {\n columnDef.headerComponentParams = {\n openHeaderMenu: ($event) => {\n this.openHeaderActionMenu($event);\n },\n closeMenu: (event) => {\n this.closeActionMenu();\n },\n };\n }\n });\n }\n\n _addDefaultColumnDefs() {\n this.addHeaderMenu(this._columnDefinitions);\n this.mergedColumnDefinitions = _.cloneDeep(this._columnDefinitions);\n if (this._view === 'process') {\n const cellParams = _.cloneDeep(this.menuColumnDefinition.cellRendererParams);\n this.mergedColumnDefinitions[this.mergedColumnDefinitions.length - 1].cellRendererParams = _.merge(\n this.mergedColumnDefinitions[this.mergedColumnDefinitions.length - 1].cellRendererParams,\n cellParams\n );\n this.mergedColumnDefinitions[this.mergedColumnDefinitions.length - 1].headerComponentParams =\n this.menuColumnDefinition.headerComponentParams;\n } else if ( (this.options.noSelect && this.options.noMenu)) {\n // Don't add any additional columns\n } else if (this._view !== 'upload') {\n this.mergedColumnDefinitions.splice(0, 0, this.selectColumnDefinition);\n this.mergedColumnDefinitions.push(this.menuColumnDefinition);\n }\n }\n\n _storeInitialColumnDefs() {\n this._initialColumnDefs = _.cloneDeep(this.mergedColumnDefinitions);\n }\n\n _initColumnVisibility() {\n this.visibleColumns = this._columnDefinitions.filter((col) => !col.hide);\n this.hiddenColumns = this._columnDefinitions.filter((col) => col.hide);\n this.visibleColumnIds = _.map(this.visibleColumns, 'field');\n }\n\n _updateGridColumns() {\n this._setColumnWidths();\n this.svc.gridObj.api.setColumnDefs(this.mergedColumnDefinitions);\n this.svc.gridObj.api.refreshHeader();\n }\n\n _setColumnWidths() {\n if (this._view === 'upload' || this._view === 'process') {\n return;\n }\n const colWidthsCookie = localStorage.getItem(`ziti_${this.svc.tableId}_column_widths`);\n if (!_.isEmpty(colWidthsCookie)) {\n const colWidths = JSON.parse(colWidthsCookie);\n _.forEach(colWidths, (colWidth, colId) => {\n _.forEach(this.mergedColumnDefinitions, (colDef) => {\n if (colDef.colId === colId) {\n colDef.width = colWidth;\n colDef.suppressSizeToFit = true;\n }\n });\n });\n }\n }\n\n _setColumnOrderAndVisibility() {\n if (this._view === 'upload' || this._view === 'process') {\n return;\n }\n const tableStateCookie = localStorage.getItem(`ziti_${this.svc.tableId}_table_state`);\n if (!_.isEmpty(tableStateCookie) || typeof tableStateCookie === 'undefined') {\n const colStates = JSON.parse(tableStateCookie);\n const columnIndexes = [];\n _.forEach(colStates, (colState) => {\n _.forEach(this.mergedColumnDefinitions, (colDef) => {\n if (colDef.colId === colState.colId) {\n columnIndexes.push(colDef);\n colDef.hide = colState.hide;\n }\n });\n });\n _.forEach(this.mergedColumnDefinitions, (colDef) => {\n let colFound = false;\n _.forEach(columnIndexes, (colIndex) => {\n if (colDef.colId === colIndex.colId) {\n colFound = true;\n }\n });\n if (!colFound) {\n columnIndexes.push(colDef);\n }\n });\n this.mergedColumnDefinitions = columnIndexes;\n }\n }\n\n _handleTableScroll(scroller): void {\n const scrollWidth = $('.ag-center-cols-container').width();\n const viewWidth = $('.ag-center-cols-viewport').width();\n const scrollableWidth = scrollWidth - viewWidth;\n if (scroller.left > 0) {\n $('.ag-pinned-left-cols-container').addClass('ag-pinned-left-shadow');\n } else {\n $('.ag-pinned-left-cols-container').removeClass('ag-pinned-left-shadow');\n }\n if (scroller.left < scrollableWidth - 2) {\n $('.ag-pinned-right-cols-container').addClass('ag-pinned-right-shadow');\n } else {\n $('.ag-pinned-right-cols-container').removeClass('ag-pinned-right-shadow');\n }\n }\n}\n","<div class=\"data-table-container\" *ngIf=\"isLoading || filterApplied || rowData?.length > 0;else nodata\">\n <lib-table-filter-bar\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n ></lib-table-filter-bar>\n <lib-table-hidden-columns-bar\n *ngIf=\"gridRendered && showFilterBar\"\n [hiddenColumns]=\"hiddenColumns\"\n (columnVisibilityChanged)=\"columnVisibilityChanged($event)\"\n ></lib-table-hidden-columns-bar>\n <div (resize)=\"resizeGridColumnsDebounced($event)\" class=\"ziti-ag-grid\" id=\"ItemTable\">\n <ag-grid-angular\n #nfAgGrid\n [columnDefs]=\"mergedColumnDefinitions\"\n [components]=\"frameworkComponents\"\n [getDataPath]=\"svc.getDataPath\"\n [getRowId]=\"svc.getRowNodeId\"\n [gridOptions]=\"gridOptions\"\n [modules]=\"gridModules\"\n [rowData]=\"rowData\"\n [tooltipHideDelay]=\"20000\"\n [tooltipShowDelay]=\"0\"\n (gridReady)=\"onGridReady($event)\"\n class=\"ziti-ag-grid-table ag-theme-alpine rows\"\n id=\"ItemGrid\"\n >\n </ag-grid-angular>\n </div>\n <div\n [ngClass]=\"{ open: openHeaderMenu }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu header-menu\"\n id=\"HeaderActionMenu\"\n >\n <div (click)=\"resetTableColumns()\" class=\"tActionRow\" id=\"ResetTableButton\">Restore Default Table</div>\n <div\n *ngFor=\"let headerAction of headerActions\"\n (click)=\"actionRequested.emit({ action: headerAction.action })\"\n class=\"tActionRow\"\n id=\"ResetTableButton\"\n >\n {{headerAction.name || headerAction.label}}\n </div>\n </div>\n <div\n [ngClass]=\"{ open: openMenu }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu item-menu\"\n id=\"RowActionMenu\"\n #contextMenu\n >\n <div\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"actionRequested.emit({ action: menuItem.action, item: selectedItem })\"\n [ngClass]=\"{'menu-item-hidden': !selectedItem.actionList.includes(menuItem.action) || (menuItem.isHidden && menuItem.isHidden(selectedItem))}\"\n class=\"tActionRow\"\n id=\"TableActionButton_{{menuItem.action}}\"\n >\n {{menuItem.name || menuItem.label}}\n </div>\n </div>\n <div\n (clickOutside)=\"closeHeaderFilter($event)\"\n [ngClass]=\"{ open: showFilterOptions }\"\n [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\"\n class=\"tMenu action-menu header-menu\"\n id=\"HeaderFilterOptions\"\n >\n <div (click)=\"applyFilter($event, filter)\" *ngFor=\"let filter of filterOptions\" class=\"tActionRow\" [ngClass]=\"{'has-icon': filter.icon}\" [id]=\"filter.columnId\">\n <span *ngIf=\"filter.bubbleClass\" [ngClass]=\"filter.bubbleClass\" class=\"bubble\">\n <svg *ngIf=\"filter.showLoader\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle\n class=\"path\"\n cx=\"50\"\n cy=\"50\"\n fill=\"none\"\n r=\"20\"\n stroke-miterlimit=\"10\"\n stroke-width=\"3\"\n ></circle>\n </svg>\n </span>\n <span *ngIf=\"filter.icon\" class=\"os-icon {{filter.icon}}\"></span>\n {{ filter.label }}\n </div>\n </div>\n</div>\n\n<div *ngIf=\"showDateTimePicker\" class=\"date-time-container data-table-date-time\" [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\" (clickOutside)=\"closeDateTime($event)\">\n <p-calendar\n [(ngModel)]=\"dateValue\"\n (onSelect)=\"setDateRangeFilter('custom')\"\n dateFormat=\"mm/dd/yy\"\n selectionMode=\"range\"\n placeholder=\"Select Time Range\"\n #calendar\n >\n <ng-template pTemplate=\"header\">\n <div class=\"filter-button-container\">\n <div\n class=\"toggleButton\"\n [ngClass]=\"{selected: selectedRange === 'hour'}\"\n (click)=\"setDateRangeFilter('hour')\"\n >\n Last Hour\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('day')\"\n [ngClass]=\"{selected: selectedRange === 'day'}\"\n >\n Last Day\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('week')\"\n [ngClass]=\"{selected: selectedRange === 'week'}\"\n >\n Last Week\n </div>\n <div\n class=\"toggleButton\"\n (click)=\"setDateRangeFilter('month')\"\n [ngClass]=\"{selected: selectedRange === 'month'}\"\n >\n Last Month\n </div>\n </div>\n </ng-template>\n </p-calendar>\n</div>\n\n<div *ngIf=\"showTagSelector\" class=\"tag-selector-container data-table-tag-selector\" [ngStyle]=\"{ left: menuLeft + 'px', top: menuTop + 'px' }\" (clickOutside)=\"closeTagSelector($event)\">\n <div class=\"buttonBall icon-close\" (click)=\"closeTagSelector($event)\"></div>\n <div class=\"tag-selector-label\">\n <span>Select an Attribute:</span>\n </div>\n <lib-tag-selector\n [focusOnInit]=\"true\"\n [availableRoleAttributes]=\"roleAttributes\"\n [availableNamedAttributes]=\"namedAttributes\"\n [(selectedRoleAttributes)]=\"selectedRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedNamedAttributes\"\n (selectedNamedAttributesChange)=\"tagSelectionChanged($event, false)\"\n (selectedRoleAttributesChange)=\"tagSelectionChanged($event, true)\"\n ></lib-tag-selector>\n</div>\n<ng-template #nodata>\n <lib-no-items\n (clickEmit)=\"openCreate()\"\n [image]=\"noItemsImage\"\n [isEmpty]=\"!rowData || rowData.length === 0\"\n [typeName]=\"this.entityTypeLabel\"\n ></lib-no-items>\n</ng-template>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {ConsoleEventsService} from \"../../services/console-events.service\";\n\n@Component({\n selector: 'lib-side-modal',\n templateUrl: './side-modal.component.html',\n styleUrls: ['./side-modal.component.scss']\n})\nexport class SideModalComponent implements OnInit {\n\n @Input() showClose = false;\n @Input() open = false;\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private consoleEvents: ConsoleEventsService) {}\n\n ngOnInit(): void {}\n\n close() {\n this.open = false;\n this.openChange.emit(this.open);\n }\n}\n","<div class=\"side-modal-container\" [ngClass]=\"{'side-modal-open': open}\">\n <div class=\"close icon-close\" *ngIf=\"showClose\" (click)=\"close()\"></div>\n <ng-content></ng-content>\n</div>\n\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, OnInit} from '@angular/core';\nimport {DataTableFilterService} from \"../../features/data-table/data-table-filter.service\";\nimport {ConfigurationsPageService} from \"./configurations-page.service\";\nimport {TabNameService} from \"../../services/tab-name.service\";\nimport {ListPageComponent} from \"../../shared/list-page-component.class\";\nimport {ConsoleEventsService} from \"../../services/console-events.service\";\nimport {MatDialog} from \"@angular/material/dialog\";\n\n\n@Component({\n selector: 'lib-configurations',\n templateUrl: './configurations-page.component.html',\n styleUrls: ['./configurations-page.component.scss']\n})\nexport class ConfigurationsPageComponent extends ListPageComponent implements OnInit {\n title = 'Configuration Management'\n tabs: { url: string, label: string }[] ;\n isLoading: boolean;\n formDataChanged = false;\n\n constructor(\n override svc: ConfigurationsPageService,\n filterService: DataTableFilterService,\n private tabNames: TabNameService,\n consoleEvents: ConsoleEventsService,\n dialogForm: MatDialog\n ) {\n super(filterService, svc, consoleEvents, dialogForm);\n }\n\n override ngOnInit() {\n this.tabs = this.tabNames.getTabs('services');\n this.svc.refreshData = this.refreshData;\n this.svc.getConfigTypes().then((result) => {\n console.log(result);\n });\n super.ngOnInit();\n }\n\n headerActionClicked(action: string) {\n switch (action) {\n case 'add':\n this.svc.openUpdate();\n break;\n case 'edit':\n this.svc.openUpdate(action);\n break;\n case 'delete':\n const selectedItems = this.rowData.filter((row) => {\n return row.selected;\n });\n const label = selectedItems.length > 1 ? 'configurations' : 'configuration';\n this.openBulkDelete(selectedItems, label);\n break;\n default:\n }\n }\n\n tableAction(event: any) {\n switch(event?.action) {\n case 'toggleAll':\n case 'toggleItem':\n this.itemToggled(event.item)\n break;\n case 'update':\n this.svc.openUpdate(event.item);\n break;\n case 'create':\n this.svc.openUpdate();\n break;\n case 'delete':\n this.deleteItem(event.item)\n break;\n default:\n break;\n }\n }\n\n deleteItem(item: any) {\n this.openBulkDelete([item], 'config');\n }\n\n closeModal(event: any) {\n this.svc.sideModalOpen = false;\n if(event?.refresh) {\n this.refreshData();\n }\n }\n\n dataChanged(event) {\n this.formDataChanged = event;\n }\n}\n","<div class=\"ziti-page-container ziti-configs-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'configurations'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n\n <lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-configuration\n *ngIf=\"svc.sideModalOpen\"\n [formData]=\"svc.selectedConfig\"\n (close)=\"closeModal($event)\"\n (dataChange)=\"dataChanged($event)\">\n </lib-configuration>\n </lib-side-modal>\n</div>\n","import {AfterViewInit, Component, ContentChild, EventEmitter, HostListener, Input, Output} from '@angular/core';\nimport {ExtendableComponent} from \"../../extendable/extendable.component\";\nimport {ProjectableForm} from \"../../projectable-forms/projectable-form.class\";\n\nexport type CallbackResults = { passed: boolean, errors?: any }\nexport type ValidatorCallback = (data: any, payload?:any) => Promise<CallbackResults>;\n\n@Component({\n selector: 'lib-list-page-form',\n template: `\n <div *ngIf=\"_show\" class=\"fullModal\" [ngClass]=\"formClass\">\n <div class=\"buttonBall close icon-close\" (click)=\"closeThisForm()\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n <div class=\"innerblock\">\n <ng-container #beforetitleext></ng-container>\n <div class=\"title\">{{title}}</div>\n <ng-container #aftertitleext></ng-container>\n <ng-container #beforesubtitleext></ng-container>\n <div class=\"subtitle\">{{subTitle}}</div>\n <ng-container #aftersubtitleext></ng-container>\n <ng-content></ng-content>\n <ng-container #beforebuttonsext></ng-container>\n <div class=\"buttons\" *ngIf=\"showButtons\">\n <div class=\"linkButton closer\" (click)=\"closeThisForm()\">Oops, No get me out of here</div>\n <div id=\"SaveButton\" class=\"button\" (click)=\"updateItem()\">Save</div>\n </div>\n <ng-container #afterbuttonsext></ng-container>\n </div>\n </div>\n `,\n styleUrls: ['./list-page-form.component.scss']\n})\nexport class ListPageFormComponent extends ExtendableComponent implements AfterViewInit {\n\n @ContentChild('projectable') public contentChild!: ProjectableForm;\n @Input() title = 'Form Title';\n @Input() subTitle = 'Form Subtitle';\n @Input() buttonLabel = 'Create';\n @Input() showButtons = true;\n @Input() formClass: any | undefined;\n @Input() validator: ValidatorCallback | undefined;\n @Output() close = new EventEmitter<void>();\n @Output() afterOpen = new EventEmitter<void>();\n @Output() update = new EventEmitter<any>();\n @Output() showChange = new EventEmitter<boolean>()\n\n constructor() {\n super();\n }\n\n @Input() set data(d: any) {\n if (this.contentChild)\n this.contentChild.formData = d;\n }\n\n _show = false;\n\n @Input() set show(val: boolean) {\n if (val && !this._show) this.openThisForm();\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n this.closeThisForm();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n }\n\n closeThisForm() {\n this.close.emit();\n this.contentChild?.clear();\n this._show = false;\n this.showChange.emit(false);\n }\n\n openThisForm() {\n this._show = true;\n this.afterOpen.emit();\n }\n\n updateItem() {\n if (this.validator) {\n this.validator(this.contentChild.formData)\n .then((results: CallbackResults) => {\n if (results.passed) this.updateAndClose();\n else this.contentChild.errors = results.errors;\n })\n } else this.updateAndClose();\n }\n\n updateAndClose() {\n this.update.emit(this.contentChild.formData);\n this.closeThisForm();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport _ from 'lodash';\n\nclass Link {\n source;\n sourceName;\n target;\n targetName;\n weight;\n status;\n}\n\nclass Node {\n id;\n name;\n provider;\n group;\n posx;\n posy;\n status;\n online;\n apiSession;\n routerConnection;\n tunnelerEnabled;\n os;\n mfaEnabled;\n type;\n usage;\n}\n\nclass ServiceHostNode {\n id;\n name;\n group;\n posx;\n posy;\n interceptIps;\n interceptPorts;\n interceptProtocols;\n forwardedHost;\n hostNames;\n forwardedPort;\n hostPorts;\n forwardedProtocol;\n hostProtocols;\n status;\n type;\n usage;\n intercept = [];\n configAddress;\n configPorts;\n}\n\nexport class ServiceData {\n id;\n name;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IdentityServicePathHelper {\n posy_for_group3 = 0;\n\n constructor(\n ) {}\n\n public getEndpointGraphObj(\n endpoint,\n bindIdnetities,\n edgerouters,\n selectedServiceOb,\n serviceConfigs,\n filterText = ''\n ) {\n let endpointNodeOb = null;\n const rootOb = new RootJson();\n const bindNode = bindIdnetities.find( (nd) => nd.id === endpoint.id );\n if (!bindNode) {\n endpointNodeOb = createEndpoint(endpoint);\n endpointNodeOb.group = '1';\n endpointNodeOb.posx = 50;\n endpointNodeOb.posy = 200;\n rootOb.addNode(endpointNodeOb);\n }\n let publicRouterNodes = [];\n let posy = 0;\n _.isArray(edgerouters) && edgerouters.forEach((nd) => {\n const nodeOb = createERNode(nd);\n nodeOb.group = '2a';\n nodeOb.posx = 250;\n posy = posy + 100;\n nodeOb.posy = posy;\n publicRouterNodes.push(nodeOb);\n rootOb.addNode(nodeOb);\n });\n\n let publicRouterNodesForEndpointTunnelers = [];\n\n const posx_for_group3 = 550;\n this.posy_for_group3 = 0;\n let group3Ids = [];\n let posy_for_group4 = 150;\n const group4Nodes = [];\n const serviceIPPorts = [];\n const srNode = new ServiceHostNode();\n srNode.id = selectedServiceOb.id;\n srNode.name = selectedServiceOb.name;\n srNode.intercept = serviceConfigAlias(serviceConfigs);\n srNode.type = 'Config Service';\n srNode.group = '4';\n srNode.status = '1';\n group4Nodes.push(srNode);\n rootOb.addNode(srNode);\n _.isArray(bindIdnetities) && bindIdnetities.forEach((ePoint) => {\n if (group3Ids.indexOf(ePoint.id) < 0) {\n group3Ids.push(ePoint.id);\n }\n });\n\n // create links between nodes\n\n // in group3, remove routers/ep that exist in group2\n this.posy_for_group3 = 165;\n let grp3Yincrement = 100;\n\n const group3Nodes = [];\n let countgrp3 = 0;\n group3Ids.find((nid) => {\n // let's check if the service hosted is an Endpoint\n let grp3Node = findEndpoint(nid, bindIdnetities);\n if(grp3Node) {\n grp3Node.group = '3';\n grp3Node.posx = posx_for_group3;\n grp3Node.posy = this.posy_for_group3;\n this.posy_for_group3 = this.posy_for_group3 + 125;\n group3Nodes.push(grp3Node);\n countgrp3++;\n rootOb.addNode(grp3Node);\n }\n });\n\n grp3Yincrement = countgrp3 > 2 ? 75 : 100;\n if (countgrp3 === 1) {\n this.posy_for_group3 = 160;\n } else if (countgrp3 === 2) {\n this.posy_for_group3 = 120;\n } else if (countgrp3 >= 5) {\n this.posy_for_group3 = 50;\n grp3Yincrement = 75;\n } else {\n this.posy_for_group3 = 73;\n }\n\n if (group3Nodes)\n group3Nodes.find((node3) => {\n if (node3.group === '3') {\n node3.posy = this.posy_for_group3;\n this.posy_for_group3 = this.posy_for_group3 + grp3Yincrement;\n }\n });\n\n if (group4Nodes && group4Nodes.length === 1) {\n posy_for_group4 = 200;\n }\n\n group4Nodes.find((nd4) => {\n // nd4.posx = group3Nodes && group3Nodes.length > 0 && !group3Nodes[0].type.includes(\"Public Hosted\") ? posx_for_group3 + 175 : posx_for_group3;\n nd4.posx = posx_for_group3 + 175;\n nd4.posy = posy_for_group4;\n posy_for_group4 = posy_for_group4 + 100;\n });\n\n let countPublicNodes = 0;\n rootOb.nodes.find((pNode) => {\n if (pNode.group.includes('2')) {\n countPublicNodes = countPublicNodes + 1;\n }\n });\n\n publicRouterNodes = [];\n let posy_group2 = 100;\n let yIncrement = 0;\n if (countPublicNodes === 1) {\n posy_group2 = 200;\n } else if (countPublicNodes >= 2 && countPublicNodes < 5) {\n posy_group2 = 60;\n yIncrement = 80;\n } else if (countPublicNodes >= 5 && countPublicNodes < 10) {\n posy_group2 = 40;\n yIncrement = 50;\n } else {\n posy_group2 = 40;\n yIncrement = 40;\n }\n\n rootOb.nodes.find((publicNode) => {\n if (publicNode.group.includes('2')) {\n publicNode.posx = 275;\n publicNode.posy = posy_group2;\n posy_group2 = posy_group2 + yIncrement;\n publicRouterNodes.push(publicNode);\n if (publicNode.group === '2b') {\n group3Nodes.push(publicNode);\n }\n }\n });\n\n\n for (let k1 = 0; k1 < rootOb.nodes.length; k1++) {\n const nd = rootOb.nodes[k1];\n if (endpointNodeOb !==null && (nd.group === '2a' || nd.group === '2ab' || nd.group === '2ac')) {\n const lnk = new Link();\n lnk.source = endpointNodeOb.id;\n lnk.sourceName = endpointNodeOb.name;\n lnk.target = nd.id;\n lnk.targetName = nd.name;\n lnk.status = getEndpointToRouterLinkState(endpointNodeOb, nd);\n lnk.weight = getWeight(lnk.status);\n rootOb.addLink(lnk);\n }\n }\n\n for (let k1 = 0; k1 < rootOb.nodes.length; k1++) {\n const nd1 = rootOb.nodes[k1];\n\n if (nd1.group.includes('2')) {\n for (let k2 = 0; k2 < group3Nodes.length; k2++) {\n const nd2 = group3Nodes[k2];\n if (nd2.group === '2b' || nd2.group === '2ab') {\n continue;\n } // link not required.\n\n const lnk = new Link();\n lnk.source = nd1.id;\n lnk.sourceName = nd1.name;\n lnk.target = nd2.id;\n lnk.targetName = nd2.name;\n\n if (nd1.type.includes('Router') && nd2.type.includes('Router')) {\n lnk.status =\n nd1.status === 'PROVISIONED' &&\n nd1.online === 'Yes' &&\n nd2.status === 'PROVISIONED' &&\n nd2.online === 'Yes'\n ? 1\n : 0;\n } else {\n lnk.status = getEndpointToRouterLinkState(nd2, nd1);\n }\n lnk.weight = getWeight(lnk.status);\n rootOb.addLink(lnk);\n }\n }\n }\n\n for (let k0 = 0; k0 < group4Nodes.length; k0++) {\n for (let k1 = 0; k1 < group3Nodes.length; k1++) {\n const lnk = new Link();\n lnk.source = group3Nodes[k1].id;\n lnk.sourceName = group3Nodes[k1].name;\n lnk.target = group4Nodes[k0].id;\n lnk.targetName = group4Nodes[k0].name;\n lnk.weight = 1;\n const foundNd = rootOb.nodes.find( function (rnd) {\n // if (rnd.id === group3Nodes[k1].id) {\n return rnd.id === group3Nodes[k1].id;\n // }\n });\n if (foundNd.type.includes('Router')) {\n lnk.status = foundNd.status === 'PROVISIONED' && foundNd.online === 'Yes' ? 1 : 0;\n } else {\n lnk.status = getServiceToEndpointLinkState(group3Nodes[k1], group4Nodes[k0]);\n lnk.weight = getWeight(lnk.status);\n }\n rootOb.addLink(lnk);\n }\n }\n\n function serviceConfigAlias(configs) {\n let intercept = [];\n _.isArray(configs) && configs.forEach( (conf) => {\n let addresses = '';\n let ports = '';\n if (conf.data.addresses) {\n addresses = conf.data.addresses.toString();\n } else {\n addresses = conf.data.address;\n }\n\n if (_.isArray(conf.data.portRanges) ) {\n conf.data.portRanges.forEach( (portsJson) => {\n for (const key in portsJson) {\n ports = ports + key +':'+portsJson[key] +' ' ;\n }\n ports = ports + ';';\n });\n } else {\n ports = conf.data.port;\n }\n intercept.push(addresses);\n intercept.push(ports);\n });\n return intercept;\n }\n\n function findEndpoint(endpointId, endpoints) {\n let node = null;\n if (endpointId === null) {\n return null;\n }\n const ePoint = endpoints.find( function (er) {\n return er.id === endpointId;\n });\n\n if (ePoint) {\n node = createEndpoint(ePoint);\n node.type = 'Hosted Identity';\n }\n return node;\n } // end of findEndpoint\n\n function createEndpoint(ePoint) {\n const node = new Node();\n node.id = ePoint.id;\n node.name = ePoint.name;\n node.type = 'Identity';\n node.apiSession = ePoint.hasApiSession === false ? 'No' : 'Yes';\n node.routerConnection = ePoint.hasEdgeRouterConnection === false ? 'No' : 'Yes';\n node.os = ePoint.envInfo? ePoint.envInfo.os : '';\n node.mfaEnabled = ePoint.isMfaEnabled;\n node.status = ePoint.envInfo && ePoint.envInfo.os !== null ? 'Registered' : 'Un-Registered';\n return node;\n }\n\n function createERNode(erouter) {\n const nodeOb = new Node();\n nodeOb.id = erouter.id;\n nodeOb.name = erouter.name;\n nodeOb.status = erouter.isVerified === true? 'Registered':'Un-Registered';\n nodeOb.online = erouter.isOnline === false ? 'No' : 'Yes';\n nodeOb.tunnelerEnabled = erouter.isTunnelerEnabled === false ? 'No' : 'Yes';\n nodeOb.type = 'EdgeRouter';\n return nodeOb;\n }\n\n function findEdgeRouterForId(routerId, edgerouters) {\n const erouter = edgerouters.find((er) => {\n // if (er.id === routerId) {\n return er.id === routerId;\n // }\n });\n\n if (erouter) {\n return createERNode(erouter);\n } else {\n return null;\n }\n } // end of findEdgeRouterForId\n\n function getEndpointToRouterLinkState(endpointNode, routerNode) {\n let linkstate = 0;\n if (routerNode.status === 'ERROR') {\n linkstate = 0;\n } else if (endpointNode.status === 'Un-Registered') {\n linkstate = -1;\n } else if (endpointNode.apiSession === 'No') {\n linkstate = 0;\n } else if (endpointNode.routerConnection === 'No') {\n linkstate = -1;\n } else if (routerNode.online === 'Yes' && endpointNode.routerConnection === 'Yes') {\n linkstate = 1;\n } else {\n linkstate = -1;\n }\n return linkstate;\n }\n\n function getServiceToEndpointLinkState(endpointNode, serviceNode) {\n let linkstate = 0;\n if (endpointNode.status === 'Un-Registered' || serviceNode.intercept.includes('No')) {\n linkstate = -1;\n } else if (endpointNode.apiSession === 'No') {\n linkstate = 0;\n } else if (endpointNode.status === 'Registered' && endpointNode.apiSession === 'Yes') {\n linkstate = 1;\n } else {\n linkstate = 0;\n }\n return linkstate;\n }\n\n function getWeight(linkState) {\n return linkState === -1 ? 5 : 1;\n }\n return rootOb;\n } // end of NEW Function\n\n}\n\n class RootJson {\n nodes:any = [];\n links:any = [];\n addNode (newObject) {\n const foundObj = this.nodes.find( function (nd) {\n // if (nd.id === newObject.id) {\n // nd = newObject;\n return nd.id === newObject.id;\n // }\n });\n if (!foundObj) {\n this.nodes.push(newObject);\n }\n };\n replaceNode (newObject) {\n const indx = this.nodes.findIndex(nd => nd.id === newObject.id);\n if (indx >= 0) {\n this.nodes[indx] = newObject;\n }\n };\n addLink (newObject) {\n this.links.push(newObject);\n };\n\n }\n","/* eslint prefer-const: 1 */\nimport {\n Component,\n ViewChild,\n Inject,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport {\n SETTINGS_SERVICE,\n SettingsService,\n} from '../../../services/settings.service';\nimport {\n ZITI_DATA_SERVICE,\n ZitiDataService,\n} from '../../../services/ziti-data.service';\nimport { IdentityServicePathHelper } from './identity-service-path.helper';\nimport * as d3 from 'd3';\nimport $ from 'jquery';\nimport _ from 'lodash';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { take, tap } from 'rxjs/operators';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'app-identity-visualizer',\n encapsulation: ViewEncapsulation.None,\n templateUrl: './identity-service-path.component.html',\n styleUrls: ['./identity-service-path.component.scss'],\n})\nexport class IdentityServicePathComponent implements OnInit {\n public d3;\n refreshRotate = false;\n closeRotate = true;\n filterText = 'fetching services..';\n noSearchResults = false;\n autocompleteOptions = [];\n fullScreen = false;\n serviceOptions: any;\n endpointData;\n networkGraph;\n graphJsonObj;\n services;\n edgerouters;\n endpoints = [];\n selectedService = '';\n serviceSelectError;\n doEndpointHasAppwans = false;\n doEndpointHasPublicRouters = false;\n doEndpointHasServicesInPrivateNw = false;\n isLoading = false;\n countGrp2Nds = 0;\n countGrp3Nds = 0;\n\n constructor(\n private identityServicePathHelper: IdentityServicePathHelper,\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n private router: Router,\n private dialogRef: MatDialogRef<IdentityServicePathComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.endpointData = data.identity;\n }\n\n ngOnInit(): void {\n this.getEndpointNetworkAsCode();\n this.autocompleteOptions = [];\n this.isLoading = true;\n }\n\n getEndpointNetworkAsCode() {\n const pagesize = 500;\n const services_paging = {\n searchOn: 'name',\n filter: '',\n total: pagesize,\n page: 1,\n sort: 'name',\n order: 'asc',\n };\n\n this.zitiService\n .get(`identities/${this.endpointData.id}/services`, services_paging, [])\n .then((result) => {\n this.services = result.data;\n this.closeRotate = false;\n\n if (!this.services || this.services.length === 0) {\n this.services = [];\n this.serviceOptions = [];\n this.serviceOptions.push(noServices());\n this.selectedService = 'Services not found for a selected identity';\n this.isLoading = false;\n } else {\n const pages = Math.ceil(result.meta.pagination.totalCount / pagesize);\n const promises = [];\n for (let page = 2; page <= pages; page++) {\n services_paging.page = page;\n const tmp_promise = this.zitiService\n .get(\n `identities/${this.endpointData.id}/services`,\n services_paging,\n []\n )\n .then((pageResult) => {\n pageResult.data.forEach((serv) => {\n this.services.push(serv);\n });\n });\n promises.push(tmp_promise);\n }\n Promise.all(promises).then(() => {\n this.zitiService\n .get(`identities/${this.endpointData.id}/edge-routers`, {}, [])\n .then((result) => {\n this.edgerouters = [];\n result.data.forEach((rec) => {\n this.edgerouters.push(rec);\n });\n });\n this.serviceOptions = createServiceOptions(this.services);\n this.filterText =\n this.serviceOptions.length === 0\n ? ''\n : this.serviceOptions[0].name;\n this.selectedService =\n this.serviceOptions.length === 0\n ? 'Services not found for a selected identity'\n : this.serviceOptions[0].name;\n this.autocompleteOptions = this.serviceOptions;\n this.serviceChanged();\n });\n }\n });\n\n function createServiceOptions(_services) {\n const options = [];\n const serviceNames = [];\n _services?.find((srvice) => {\n if (!serviceNames.includes(srvice.name)) {\n serviceNames.push(srvice.name);\n const sd = new ServiceData();\n sd.id = srvice.id;\n sd.name = srvice.name;\n options.push(sd);\n }\n });\n return options;\n }\n\n function noServices() {\n const sd = new ServiceData();\n sd.id = '';\n sd.name = 'NO SERVICES';\n return sd;\n }\n } // end of getEndpointNetworkAsCode\n\n filterSearchArray() {\n this.autocompleteOptions = [];\n this.autocompleteOptions = this.serviceOptions.filter((option) =>\n option.name.toLowerCase().includes(this.selectedService.toLowerCase())\n );\n }\n\n clearSearchFilter() {\n this.filterText = 'You can filter services by typing here';\n this.autocompleteOptions = this.serviceOptions;\n this.selectedService = '';\n }\n\n autocompleteSearch(event) {\n this.serviceChanged();\n }\n\n serviceChanged() {\n this.isLoading = true;\n const allPromises = [];\n let serviceOb = null;\n let service_configs = [];\n\n serviceOb = this.services && this.services.find((rec) => {\n return (rec.name === this.selectedService);\n });\n\n if (!serviceOb) {\n this.isLoading = false;\n return;\n }\n\n const configs_url = this.getLinkForResource(serviceOb, 'configs');\n\n const configPromise = this.zitiService\n .get(configs_url, {}, [])\n .then((configs) => {\n service_configs = configs && configs.data ? configs.data : [];\n });\n const service_edge_router_policies_url = this.getLinkForResource(\n serviceOb,\n 'service-edge-router-policies'\n );\n const service_policies_url = this.getLinkForResource(\n serviceOb,\n 'service-policies'\n ).replace('./', ''); // dial, Bind info\n\n let bindPolicies = [];\n let bindIdnetities = [];\n const promise2 = this.zitiService\n .get(service_policies_url, {}, [])\n .then((policies) => {\n const identityPromises = [];\n _.isArray(policies.data) && policies.data.forEach((policy) => {\n if (policy.type === 'Bind') {\n const bindIdentitiesUrl = this.getLinkForResource(\n policy,\n 'identities'\n );\n const promse = this.zitiService\n .get(bindIdentitiesUrl.replace('./', ''), {}, [])\n .then((res) => {\n if (res && res.data.length > 0) {\n res.data.forEach((rs) => {\n this.addItemToArray(bindIdnetities, rs);\n });\n } else {\n this.addItemToArray(bindIdnetities, res.data);\n }\n });\n identityPromises.push(promse);\n }\n });\n Promise.all(identityPromises).then(() => {\n this.startVisProcess(bindIdnetities, serviceOb, service_configs);\n this.isLoading = false;\n });\n });\n }\n\n addItemToArray(bindIdnetities, ob) {\n if (!bindIdnetities.find((item) => item.id === ob.id)) {\n bindIdnetities.push(ob);\n }\n return bindIdnetities;\n }\n\n getLinkForResource(ob, resource) {\n return ob['_links'][resource]['href'];\n }\n\n startVisProcess(bindIdnetities, selectedServiceOb, serviceConfigs) {\n this.countGrp2Nds = 0;\n this.countGrp3Nds = 0;\n if (_.isEmpty(this.selectedService)) {\n this.serviceSelectError = !_.isEmpty(this.selectedService);\n return;\n }\n try {\n this.graphJsonObj = this.identityServicePathHelper.getEndpointGraphObj(\n this.endpointData,\n bindIdnetities,\n this.edgerouters,\n selectedServiceOb,\n serviceConfigs\n );\n } catch (err) {\n console.log('Error in creating graph', err);\n return;\n }\n\n let countGrp1Nds = 0;\n this.doEndpointHasServicesInPrivateNw = false;\n this.doEndpointHasPublicRouters = false;\n this.doEndpointHasAppwans = false;\n this.graphJsonObj.nodes.forEach((nd) => {\n if (nd.group === '3') {\n this.countGrp3Nds++;\n }\n if (nd.group.includes('2')) {\n this.countGrp2Nds++;\n }\n if (nd.group === '1') {\n countGrp1Nds++;\n }\n });\n\n if (this.countGrp3Nds > 0) {\n this.doEndpointHasServicesInPrivateNw = true; // show private/customer network box, will be decided with this variable.\n }\n if (this.countGrp2Nds > 0) {\n this.doEndpointHasPublicRouters = true; // show public network box, will be decided with this variable.\n }\n\n if (countGrp1Nds > 0) {\n this.doEndpointHasAppwans = true; // show private network box, will be decided with this variable.\n }\n this.initTopoView();\n }\n\n toggleModalSize() {\n this.fullScreen = !this.fullScreen;\n }\n\n hide() {\n this.dialogRef.close();\n }\n\n initTopoView() {\n const margin = { top: 10, right: 90, bottom: 30, left: 0 };\n const width = 1100 - margin.left - margin.right;\n const height = 1100 - margin.top - margin.bottom;\n const colors = d3.scaleOrdinal(d3.schemeCategory10);\n const tooltip = d3.select('#epTooltip');\n\n let svg = d3.select('#IdentityTopology'),\n node,\n link;\n\n const handleZoom = (e) => svg.attr('transform', e.transform);\n const zoom = d3.zoom().on('zoom', handleZoom);\n\n svg\n .attr('width', '100%')\n .attr('height', '100%')\n // .call(zoom)\n .attr('viewBox', '0 ' + -10 + ' ' + width + ' ' + height)\n .append('g')\n .attr('transform', 'translate(' + -300 + ',' + 225 + ')');\n\n svg.selectAll('g').remove();\n\n const simulation: any = d3\n .forceSimulation()\n .force(\n 'link',\n d3\n .forceLink()\n .id(function (d: any) {\n return d.id;\n })\n .distance(100)\n .strength(1)\n )\n .force('charge', d3.forceManyBody())\n .force('center', d3.forceCenter(width / 2, height / 2));\n\n const links = this.graphJsonObj.links;\n const nodes = this.graphJsonObj.nodes;\n\n link = svg\n .selectAll('g.line.line')\n .data(links)\n .enter()\n .append('g')\n .attr('class', 'link')\n .attr('marker-end', 'url(#arrowhead)');\n\n link\n .append('line')\n .style('stroke-width', function (d) {\n if (d.status === 1 || d.status === -1) {\n return 1.5; //Math.sqrt(d.weight);\n } else {\n return 1;\n }\n })\n .style('stroke', function (d) {\n if (d.status === 1) {\n let doInUsage = false;\n return '#00cd13';\n } else if (d.status === -1) {\n return '#d8dce7';\n } else {\n return '#ff004e';\n }\n });\n\n link.each(function (this: any, d: any, i) {\n const _this = d3.select(this);\n if (d.status === 1) {\n let doInUsage = true; // false;\n _this\n .append('text')\n // .text(d.netspeed)\n .style('fill', 'rgb(255,198,22)')\n .style('font-size', '11');\n _this\n .append('rect')\n .attr('fill', function (d) {\n return '#555';\n })\n .attr('width', function (d) {\n if (doInUsage) {\n return 3;\n } else {\n return 0.1;\n }\n })\n .attr('height', function (d) {\n if (doInUsage) {\n return 3;\n } else {\n return 0.1;\n }\n })\n .append('animate');\n\n _this.select('rect').append('animate');\n } else if (d.status === 0) {\n _this\n .append('image')\n .attr('xlink:href', function () {\n return '/assets/images/visualizer/link-cut.png';\n })\n .attr('width', '20')\n .attr('height', '24');\n }\n });\n\n node = svg\n .selectAll('.node')\n .data(nodes)\n .enter()\n .append('g')\n .attr('class', 'node');\n\n node\n .append('image')\n .attr('xlink:href', function (d) {\n const routerImagePath = '/assets/images/visualizer/Routers.png';\n const nonProvisionedRouterImagePath =\n '/assets/images/visualizer/ER.png';\n const errRouterImagePath = '/assets/images/visualizer/error_er.png';\n const errEndpointImagePath = '/assets/images/visualizer/host-error.png';\n const unregisteredEndpointImagePath =\n '/assets/images/visualizer/host_unregistered.png';\n const endPointPath = '/assets/images/visualizer/host.png';\n\n if (d.type.includes('Identity') && d.status === 'Un-Registered') {\n return unregisteredEndpointImagePath;\n } else if (\n d.type.includes('Identity') &&\n d.apiSession === 'Yes' &&\n d.status === 'Registered'\n ) {\n return endPointPath;\n } else if (\n d.type.includes('Identity') &&\n (d.routerConnection === 'No' || d.apiSession === 'No')\n ) {\n return errEndpointImagePath;\n } else if (d.type.includes('Identity')) {\n return endPointPath;\n } else if (\n d.type.includes('Router') &&\n (d.status === 'ERROR' || d.online === 'No')\n ) {\n return errRouterImagePath;\n } else if (d.type.includes('Router') && d.status === 'PROVISIONED') {\n return routerImagePath;\n } else if (d.type.includes('Router')) {\n return nonProvisionedRouterImagePath;\n }\n\n if (d.group === '4') {\n return '/assets/images/visualizer/service.png';\n } else {\n return '';\n }\n })\n .attr('x', -25)\n .attr('y', -25)\n .attr('width', '40')\n .attr('height', '40');\n\n // node.append('title') .text(function (d) {return d.name;});\n\n node\n .append('text')\n .attr('x', 10)\n .attr('y', 12)\n .style('font-weight', '600')\n .text(function (d) {\n // const name = d.type.includes('Service') ? d.alias : d.name;\n return d.name;\n });\n\n simulation.nodes(nodes).on('tick', ticked);\n\n simulation.force('link').links(links);\n node.on('mouseover', (event, d) => {\n const endpointUtlizationJson = {};\n drawTooltip(event, d, endpointUtlizationJson);\n });\n\n node.on('mouseout', function () {\n removeTooltip();\n });\n\n function ticked() {\n node.attr('transform', function (d) {\n return 'translate(' + d.posx + ',' + d.posy + ')';\n });\n\n link\n .select('line')\n .attr('x1', function (d) {\n return d.source.posx;\n })\n .attr('y1', function (d) {\n return d.source.posy;\n })\n .attr('x2', function (d) {\n return d.target.posx;\n })\n .attr('y2', function (d) {\n return d.target.posy;\n });\n\n link\n .select('image')\n .attr('x', function (d) {\n const x1 = d.source.posx,\n x2 = d.target.posx,\n x = x1 - (x1 - x2) / 2;\n\n return x - 8;\n })\n .attr('y', function (d) {\n const y1 = d.source.posy,\n y2 = d.target.posy,\n y = y1 - (y1 - y2) / 2;\n\n return y - 12;\n });\n\n link\n .select('rect')\n .attr('opacity', 1)\n .attr('x', function (d) {\n return d.source.posx;\n })\n .attr('y', function (d) {\n return d.source.posy;\n })\n .selectAll('animate')\n .each(function (this: any, d: any, i) {\n if (i === 0) {\n d3.select(this)\n .attr('attributeName', function (d) {\n return 'x';\n })\n .attr('from', function (d: any) {\n const n = d.source.posx - 1;\n return n;\n })\n .attr('to', function (d: any) {\n return d.target.posx;\n });\n } else {\n d3.select(this)\n .attr('attributeName', function (d: any) {\n return 'y';\n })\n .attr('from', function (d: any) {\n return d.source.posy;\n })\n .attr('to', function (d: any) {\n return d.target.posy;\n });\n }\n\n d3.select(this)\n .attr('attributeType', 'XML')\n .attr('begin', '0.5s')\n .attr('dur', function (d) {\n return '1.0s';\n })\n .attr('repeatCount', 'indefinite');\n });\n } // end of ticked\n\n function removeTooltip() {\n if (tooltip) {\n tooltip.style('display', 'none');\n }\n }\n\n function drawTooltip(event, d, endpointUtlizationJson) {\n document.getElementById('epTooltip').innerHTML = readKeyValues(\n d,\n endpointUtlizationJson\n ); // readObjectValues(d);\n tooltip.style('display', 'block');\n tooltip.style('white-space', 'pre-wrap');\n const x = event.pageX + 'px';\n const y = event.pageY + 'px';\n tooltip.style('left', x);\n tooltip.style('top', y);\n }\n\n function readKeyValues(d, endpointUtlizationJson) {\n let info =\n \"<div class='tool-tip-container' style='font-size:14px;font-family:Open Sans; font-weight: 600; font-color: var(--tableText);'>\";\n const keys = Object.keys(d);\n\n keys.forEach(function (k) {\n if (\n k === 'status' ||\n k === 'posy' ||\n k === 'posx' ||\n k === 'group' ||\n k === 'hostedEdgeId' ||\n k === 'value' ||\n k === 'index' ||\n k === 'parent' ||\n k === 'depth' ||\n k === 'x' ||\n k === 'y' ||\n k === 'id' ||\n k === 'x0' ||\n k === 'y0' ||\n k === 'vy' ||\n k === 'vx'\n ) {\n // continue;\n } else if (k === 'children') {\n const kVal: any = d[k];\n if (kVal && kVal !== '') {\n info = info + '<div class=\"prop-row\"><div class=\"prop-name\">' + k + ':</div><div class=\"prop-val\">' + kVal.length + '</div></div>';\n }\n } else {\n if (isAnObject(d[k])) {\n const kVal: any = d[k];\n if (kVal && kVal !== '') {\n info = info + '<div class=\"prop-row\"><div class=\"prop-name\">' + k + ':</div><div class=\"prop-val\">' + kVal.name + '</div></div>';\n }\n } else if (d[k] instanceof Array) {\n info =\n info +\n '<div class=\"prop-row\"><div class=\"prop-name\">' +\n k +\n ':</div><div class=\"prop-val\">' +\n d[k].join('<br> ') +\n '</div></div>';\n } else {\n const vo = d[k];\n if (vo && vo !== '') {\n info =\n info +\n '<div class=\"prop-row\"><div class=\"prop-name\">' +\n k +\n ':</div><div class=\"prop-val\">' +\n (vo !== null || vo !== '' ? d[k] : 'N/A') +\n '</div></div>';\n }\n }\n }\n });\n\n return info + '</div>';\n }\n\n function isAnObject(o) {\n return o instanceof Object && o.constructor === Object;\n }\n\n this.refreshRotate = false;\n } // end of initTopoView\n}\n\nclass ServiceData {\n id;\n name;\n}\n\n","<div [ngClass]=\"{ 'full-screen': fullScreen }\" class=\"modal solid\" id=\"IdentityVisualizerDataModal\">\n <div class=\"tp-data-header\">\n <div class=\"modaltitle\">Identity Service Path</div>\n <div (click)=\"hide()\" class=\"buttonBall icon-close\" id=\"EscZEndpointClose\"></div>\n <div (click)=\"toggleModalSize()\" class=\"buttonBall resize\" id=\"ResizeModalButton\"></div>\n </div>\n\n <div class=\"identity-topology-container\">\n\n <div style=\"width: 100%; height: 80px; float: left\">\n <div class=\"ep-topology-filter-container listBox row\">\n <input\n (keyup)=\"filterSearchArray()\"\n [(ngModel)]=\"selectedService\"\n [matAutocomplete]=\"auto\"\n class=\"topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to search identity accessible services.\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText\"\n class=\"clear-svc-icon icon-close\"\n id=\"ClearSearchFilter\"\n ></div>\n <div [hidden]=\"!noSearchResults\" class=\"no-results-warning\">No Results Found</div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option.name\">\n {{ option.name }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"epTooltip\"></div>\n\n <svg style='pointer-events:all' height=\"1000\" id=\"IdentityTopology\" width=\"1200\">\n </svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n\n <div class=\"topology-legendA\">\n <div class=\"legend-item-head\">\n <div class=\"legend-text-heading\">Component Status</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle unregistered\"></div>\n <div class=\"legend-text\">Unregistered / Offline</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_in_use\"></div>\n <div class=\"legend-text\">Registered, Online</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle errored\"></div>\n <div class=\"legend-text\">Errored</div>\n </div>\n </div>\n\n <div class=\"topology-legendB\">\n <div class=\"legend-item-head\">\n <div class=\"legend-text-heading\">Link Status</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle unregistered\"></div>\n <div class=\"legend-text\">Offline</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_in_use\"></div>\n <div class=\"legend-text\">In Usage</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_not_in_use\"></div>\n <div class=\"legend-text\">Usage Date N/A</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle linkerrored\"></div>\n <div class=\"legend-text\">Errored</div>\n </div>\n </div>\n\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'lib-preview-list',\n templateUrl: './preview-list.component.html',\n styleUrls: ['./preview-list.component.scss']\n})\nexport class PreviewListComponent {\n @Input() hideOption: string;\n @Input() public label = '';\n @Input() public clickable = false;\n @Input() isLoading = false;\n @Input() allNames = [];\n @Input() allowRemove = false\n @Input() tooltip = '';\n @Output() itemSelected = new EventEmitter<string>();\n @Output() itemRemoved = new EventEmitter<string>();\n public names = [];\n filterFor = '';\n\n ngOnInit() {\n this.names = [];\n this.names.push(...this.allNames);\n this.names = this.names.filter((item) => item !== this.hideOption);\n this.sort();\n }\n\n ngOnChanges() {\n this.names = [];\n this.names.push(...this.allNames);\n this.names = this.names.filter((item) => item !== this.hideOption);\n this.sort();\n }\n\n onKeydownEvent() {\n this.names = [];\n for (let i = 0; i < this.allNames.length; i++) {\n if (this.allNames[i].indexOf(this.filterFor) >= 0) {\n this.names.push(this.allNames[i]);\n }\n }\n this.sort();\n }\n\n sort() {\n this.names.sort((item1, item2) => item1.localeCompare(item2));\n }\n\n selected(name: string) {\n if (this.clickable) this.itemSelected.emit(name);\n }\n\n remove(name) {\n this.itemRemoved.emit(name);\n }\n}\n","<div class=\"listBox row\">\n <input (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <span *ngIf=\"isLoading\" class=\"spinner\"></span>\n\n <div class=\"text row\">\n <div (click)=\"selected(name)\" *ngFor=\"let name of names\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(name)\"></div>\n <span class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"above\">{{ name }}</span>\n </div>\n </div>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'lib-form-field-toggle',\n templateUrl: './form-field-toggle.component.html',\n styleUrls: ['./form-field-toggle.component.scss']\n})\nexport class FormFieldToggleComponent {\n\n @Input() label = 'Show More Options';\n @Input() orientation = 'row';\n @Input() labelOn = 'ON';\n @Input() labelOff = 'OFF';\n @Input() toggleOn = false;\n @Output() toggleOnChange = new EventEmitter<boolean>();\n\n enterKeyPressed(event) {\n this.toggleSwitch();\n }\n\n toggleSwitch() {\n this.toggleOn = !this.toggleOn;\n this.toggleOnChange.emit(this.toggleOn);\n }\n\n}\n","<div class=\"form-field-toggle-container\" tabindex=0 (keyup.space)=\"enterKeyPressed($event)\" (click)=\"toggleSwitch()\">\n <span *ngIf=\"orientation === 'row'\" class=\"form-field-label\">{{label}}</span>\n <div class=\"form-field-line\"></div>\n <div\n [ngClass]=\"{ on: toggleOn }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!toggleOn\" class=\"on-label\">{{labelOn}}</span>\n <span [hidden]=\"toggleOn\" class=\"off-label\">{{labelOff}}</span>\n <div class=\"switch\"></div>\n </div>\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {isEmpty, map, unset} from \"lodash\";\n\n@Component({\n selector: 'lib-custom-tags',\n templateUrl: './custom-tags.component.html',\n styleUrls: ['./custom-tags.component.scss']\n})\nexport class CustomTagsComponent implements OnInit {\n\n @Input() tags: any = {};\n @Output() tagsChange: EventEmitter<any> = new EventEmitter<any>();\n\n tagsArray = [];\n newTagName = '';\n newTagValue = '';\n errors: any = {};\n object = Object;\n\n constructor() {}\n\n ngOnInit() {\n this.updateTagsArray();\n }\n\n updateTagsArray() {\n this.tagsArray = map(this.tags, (value, key) => {\n return {name: key, value: value}\n });\n this.tagsChange.emit(this.tags);\n }\n\n addTag() {\n this.errors = {};\n if(isEmpty(this.newTagName)) {\n this.errors['name'] = true;\n }\n if(isEmpty(this.newTagValue)) {\n this.errors['value'] = true;\n }\n if(!isEmpty(this.errors)) {\n return;\n }\n this.tags[this.newTagName] = this.newTagValue;\n this.newTagName = '';\n this.newTagValue = '';\n this.updateTagsArray();\n }\n\n removeTag(tagName: string) {\n unset(this.tags, tagName);\n this.updateTagsArray();\n }\n\n enterKeyPressed(event) {\n this.addTag();\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","<div id=\"TagExtended\">\n <div class=\"grid tags\">\n <label>Name</label><label>Value</label>\n </div>\n <div id=\"NewTags\" >\n <div class=\"grid tags\" *ngFor=\"let tag of tagsArray\">\n <input\n id=\"NewKey\"\n maxlength=\"100\"\n placeholder=\"enter the tag key\"\n [(ngModel)]=\"tag['name']\"\n (keyup.enter)=\"enterKeyPressed($event)\"\n >\n <input\n id=\"NewValue\"\n placeholder=\"enter the value\"\n type=\"text\"\n maxlength=\"100\"\n [(ngModel)]=\"tag['value']\"\n (keyup.enter)=\"enterKeyPressed($event)\"\n >\n <div class=\"removeIcon icon-clear\" (click)=\"removeTag(tag.name)\"></div>\n </div>\n </div>\n <div class=\"grid tags\">\n <input id=\"NewKey\" (keyup.enter)=\"enterKeyPressed($event)\" [(ngModel)]=\"newTagName\" [ngClass]=\"{invalid: this.errors.name}\" maxlength=\"100\" placeholder=\"enter the tag key\">\n <input id=\"NewValue\" (keyup.enter)=\"enterKeyPressed($event)\" [(ngModel)]=\"newTagValue\" [ngClass]=\"{invalid: this.errors.value}\" placeholder=\"enter the value\" maxlength=\"100\">\n <div id=\"AddCustomButton\" class=\"addIcon icon-add\" (click)=\"addTag()\"></div>\n </div>\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n OnChanges,\n SimpleChanges,\n AfterViewInit,\n Inject\n} from '@angular/core';\nimport {ProjectableForm} from \"../projectable-form.class\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\n\nimport {isEmpty, isNil, forOwn, cloneDeep, set} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {IDENTITY_EXTENSION_SERVICE, IdentityFormService} from './identity-form.service';\nimport {MatDialogRef} from \"@angular/material/dialog\";\nimport {IdentitiesPageService} from \"../../../pages/identities/identities-page.service\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\n\n\n@Component({\n selector: 'lib-identity-form',\n templateUrl: './identity-form.component.html',\n styleUrls: ['./identity-form.component.scss'],\n providers: [\n {\n provide: MatDialogRef,\n useValue: {}\n }\n ]\n})\nexport class IdentityFormComponent extends ProjectableForm implements OnInit, OnChanges, AfterViewInit {\n @Input() formData: any = {};\n @Input() identityRoleAttributes: any[] = [];\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n override entityType = 'identity';\n\n isEditing = false;\n enrollmentExpiration: any;\n jwt: any;\n isLoading = false;\n associatedServicePolicies: any = [];\n associatedServicePolicyNames: any = [];\n associatedServices: any = [];\n associatedServiceNames: any = [];\n servicesLoading = false;\n servicePoliciesLoading = false;\n authPolicies: any = [];\n\n showMore = false;\n formView = 'simple';\n enrollmentType = 'ott';\n enrollmentCA;\n enrollmentUPDB = '';\n settings: any = {};\n testResult: string = '';\n testResultOpen = false;\n\n cas = [];\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n public svc: IdentityFormService,\n public identitiesService: IdentitiesPageService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n growlerService: GrowlerService,\n @Inject(IDENTITY_EXTENSION_SERVICE) extService: ExtensionService\n ) {\n super(growlerService, extService);\n this.identityRoleAttributes = [];\n }\n\n ngOnInit(): void {\n this.settingsService.settingsChange.subscribe((results:any) => {\n this.settings = results;\n });\n this.jwt = this.identitiesService.getJWT(this.formData);\n this.enrollmentExpiration = this.identitiesService.getEnrollmentExpiration(this.formData);\n this.initEnrollmentType();\n this.getAssociatedServices();\n this.getAssociatedServicePolicies();\n this.getAuthPolicies();\n this.getCertificateAuthorities();\n this.initData = cloneDeep(this.formData);\n this.loadTags();\n this.extService.updateFormData(this.formData);\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.nameFieldInput.nativeElement.focus();\n this.resetTags();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.isEditing = !isEmpty(this.formData.id);\n }\n\n refreshIdentity() {\n this.svc.refreshIdentity(this.formData.id).then(result => {\n this.formData = result.data;\n this.initData = cloneDeep(this.formData);\n this.enrollmentExpiration = this.identitiesService.getEnrollmentExpiration(this.formData);\n this.jwt = this.identitiesService.getJWT(this.formData);\n this.extService.updateFormData(this.formData);\n })\n }\n\n initEnrollmentType() {\n if (this.formData?.enrollment?.ott) {\n this.enrollmentType = 'ott';\n } else if (this.formData?.enrollment?.updb) {\n this.enrollmentType = 'updb';\n } else if (this.formData?.enrollment?.ottca) {\n this.enrollmentType = 'CA';\n }\n }\n\n getAssociatedServices() {\n this.zitiService.getSubdata('identities', this.formData.id, 'services').then((result: any) => {\n this.associatedServices = result.data;\n this.associatedServiceNames = this.associatedServices.map((svc) => {\n return svc.name;\n });\n });\n }\n\n getAssociatedServicePolicies() {\n this.zitiService.getSubdata('identities', this.formData.id, 'service-policies').then((result: any) => {\n this.associatedServicePolicies = result.data;\n this.associatedServicePolicyNames = this.associatedServicePolicies.map((policy) => {\n return policy.name;\n });\n });\n }\n\n getCertificateAuthorities() {\n const paging = {\n filter: \"\",\n noSearch: true,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 100\n }\n this.zitiService.get('cas', paging, []).then((result: any) => {\n this.cas = [...result.data];\n if (this.cas.length > 0) {\n this.enrollmentCA = this.cas[0].id;\n }\n });\n }\n\n getAuthPolicies() {\n const paging = {\n filter: \"\",\n noSearch: true,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 100\n }\n this.zitiService.get('auth-policies', paging, []).then((result: any) => {\n this.authPolicies = [...result.data];\n });\n }\n\n get hasAuthenticator() {\n return this.identitiesService.hasAuthenticator(this.formData);\n }\n\n get hasEnrolmentToken() {\n return this.identitiesService.hasEnrolmentToken(this.formData);\n }\n\n get jwtExpired() {\n return false;\n }\n\n headerActionRequested(action) {\n switch(action.name) {\n case 'save':\n this.save();\n break;\n case 'close':\n this.closeModal();\n break;\n case 'toggle-view':\n this.formView = action.data;\n this.resetTags();\n break;\n }\n }\n\n updateEnrollment() {\n switch (this.enrollmentType) {\n case 'ott':\n this.formData.enrollment = {ott: true}\n break;\n case 'CA':\n this.formData.enrollment = {ottca: this.enrollmentCA};\n break;\n case 'updb':\n this.formData.enrollment = {updb: this.enrollmentUPDB};\n break;\n default:\n this.formData.enrollment = {ott: true}\n break;\n }\n }\n\n save(event?) {\n if(!this.validate()) {\n return;\n }\n const tagVals = this.getTagValues();\n if (!isEmpty(tagVals)) {\n forOwn(tagVals, (value, key) => {\n this.formData.tags[key] = value;\n });\n }\n this.isLoading = true;\n this.svc.save(this.formData).then((result) => {\n this.closeModal(true, true);\n }).finally(() => {\n this.isLoading = false;\n });\n }\n\n validate() {\n this.errors = {};\n if (isEmpty(this.formData.name)) {\n this.errors['name'] = true;\n }\n if (this.enrollmentType === 'CA' && (isEmpty(this.enrollmentCA) || isNil(this.enrollmentCA))) {\n this.errors['enrollmentCA'] = true;\n }\n if (this.enrollmentType === 'updb' && (isEmpty(this.enrollmentUPDB) || isNil(this.enrollmentUPDB))) {\n this.errors['enrollmentUPDB'] = true;\n }\n return isEmpty(this.errors);\n }\n\n get enrollmentTypeTitle() {\n return this.enrollmentType === 'CA' ? 'CERTIFICATE AUTHORITY' : (this.enrollmentType === 'updb' && !this.isEditing) ? 'UPDB USERNAME' : undefined;\n }\n get apiCallURL() {\n return this.settings.selectedEdgeController + '/edge/management/v1/identities' + (this.formData.id ? `/${this.formData.id}` : '');\n }\n\n get apiData() {\n const data: any = {\n name: this.formData?.name || '',\n type: this.formData?.type?.name || this.formData?.type || '',\n appData: this.formData?.appData || '',\n isAdmin: this.formData?.isAdmin || '',\n roleAttributes: this.formData.roleAttributes || '',\n authPolicyId: this.formData.authPolicyId || '',\n externalId: this.formData.externalId || '',\n defaultHostingCost: this.formData.defaultHostingCost || '0',\n defaultHostingPrecedence: this.formData.defaultHostingPrecedence || 'defaultHostingPrecedence',\n tags: this.formData.tags || ''\n };\n if (!this.isEditing) {\n data.enrollment = this.formData.enrollment || {ott: true};\n }\n return data;\n }\n\n _apiData = {};\n set apiData(data) {\n this._apiData = data;\n }\n\n serviceSelected(serviceName) {\n let service: any = {};\n this.associatedServices.forEach((svc) => {\n if(svc.name === serviceName) {\n service = svc;\n }\n });\n this.svc.testService(this.formData.id, service.id).then((result) => {\n this.testResult = result;\n this.testResultOpen = true;\n });\n }\n\n toggleIsAdmin() {\n this.formData.isAdmin = !this.formData.isAdmin;\n }\n\n get identityType() {\n return this.isEditing ? this.formData.type.name : this.formData.type;\n }\n\n set identityType(type) {\n if (this.isEditing) {\n set(this.formData, 'type.name', type);\n } else {\n set(this.formData, 'type', type);\n }\n }\n\n closeTestResult() {\n this.testResultOpen = false;\n }\n\n clear(): void {\n }\n}\n","<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Identity: ' : 'Create New Identity'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"identity-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Identity Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this identity\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Identity attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Identities to form a group of Identities.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"identityRoleAttributes\"\n [placeholder]=\"'Add attributes to group Identities'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Auth Policy'\"\n [label]=\"'OPTIONAL'\"\n [helpText]=\"'Authentication Policies restrict the authentication methods available to identities.'\"\n >\n <select\n [(ngModel)]=\"formData.authPolicyId\"\n id=\"authPolicyId\"\n class=\"form-field-dropdown\"\n >\n <option value=\"\">Select an Authentication Policy</option>\n <option\n *ngFor=\"let policy of authPolicies\"\n [value]=\"policy.id\"\n >\n {{ policy.name }}\n </option>\n </select>\n <input class=\"form-field-input\" placeholder=\"Optional External ID\" [(ngModel)]=\"formData.externalId\"/>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Enrollment Type'\"\n [title2]=\"enrollmentTypeTitle\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <select\n id=\"EnrollmentType\"\n class=\"form-field-dropdown\"\n [ngClass]=\"{disabled: isEditing}\"\n [(ngModel)]=\"enrollmentType\"\n (change)=\"updateEnrollment()\"\n >\n <option value=\"ott\">One Time Token</option>\n <option value=\"CA\">Certificate Authority</option>\n <option value=\"updb\">UPDB</option>\n </select>\n <select\n id=\"CertAuthorities\"\n class=\"form-field-dropdown\"\n *ngIf=\"enrollmentType === 'CA'\"\n [ngClass]=\"{disabled: isEditing}\"\n [(ngModel)]=\"enrollmentCA\"\n [ngClass]=\"{error: errors.enrollmentCA}\"\n (change)=\"updateEnrollment()\"\n >\n <option *ngFor=\"let ca of cas\" [value]=\"ca.id\">{{ca.name}}</option>\n </select>\n <input\n *ngIf=\"enrollmentType === 'updb' && !isEditing\"\n [ngClass]=\"{disabled: isEditing, error: errors.enrollmentUPDB}\"\n [(ngModel)]=\"enrollmentUPDB\"\n (keyup)=\"updateEnrollment()\"\n class=\"form-field-input\"\n id=\"UPDBName\"\n type=\"text\"\n maxlength=\"500\"\n placeholder=\"Enter a name\"\n >\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Admin'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced is-admin-container\"\n >\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">IS ADMIN</div>\n <div\n (click)=\"toggleIsAdmin()\"\n [ngClass]=\"{ on: formData.isAdmin }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.isAdmin\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isAdmin\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Hosting Cost'\"\n [title2]=\"'Precedence'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <input class=\"form-field-input\" [(ngModel)]=\"formData.defaultHostingCost\" type=\"number\"/>\n <select\n [(ngModel)]=\"formData.defaultHostingPrecedence\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </lib-form-field-container>\n <lib-form-field-container *ngFor=\"let tagElement of tagElements\"\n [title]=\"tagElement.label\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <div [innerHTML]=\"tagElement.content | safe\"></div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n *ngIf=\"hasEnrolmentToken || hasAuthenticator\"\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"jwt\"\n [expiration]=\"enrollmentExpiration\"\n [authenticators]=\"formData.authenticators\"\n [type]=\"'identity'\"\n [canExpand]=\"true\"\n (doRefresh)=\"refreshIdentity()\"\n ></lib-qr-code>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Services'\"\n [count]=\"associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Identity is associated with.'\"\n >\n <lib-preview-list\n (itemSelected)=\"serviceSelected($event)\"\n [clickable]=\"true\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"associatedServiceNames\"\n ></lib-preview-list>\n <div class=\"svc-test-result\" [ngClass]=\"{'test-result-open': testResultOpen}\">\n <div class=\"close icon-close\" (click)=\"closeTestResult()\"></div>\n <div class=\"result-container\" [innerHTML]=\"testResult\" ></div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Service Policies'\"\n [count]=\"associatedServicePolicies.length\"\n [helpText]=\"'Preview list of all service policies that this Identity is associated with.'\"\n >\n <lib-preview-list\n (itemSelected)=\"serviceSelected($event)\"\n [clickable]=\"false\"\n [isLoading]=\"servicePoliciesLoading\"\n [allNames]=\"associatedServicePolicyNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Inject, Injectable} from \"@angular/core\";\nimport {GrowlerModel} from \"../messaging/growler.model\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {GrowlerService} from \"../messaging/growler.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OverridesService {\n\n overrides: any = [];\n\n constructor(\n @Inject(ZITI_DATA_SERVICE) private zitiDataService: ZitiDataService,\n private growlerService: GrowlerService\n ) {}\n\n loadOverrides(identity): Promise<any> {\n return this.zitiDataService.get(`identities/${identity.id}/service-configs`, {}, []).then((result) => {\n this.overrides = result.data;\n return this.overrides;\n });\n }\n\n loadServices(filter): Promise<any> {\n const paging = {\n searchOn: 'name',\n filter: filter,\n total: 30,\n page: 1,\n sort: 'name',\n order: 'asc'\n };\n return this.zitiDataService.get(`services`, paging, []).then((result) => {\n return result;\n });\n }\n\n loadConfigs(filter): Promise<any> {\n const paging = {\n searchOn: 'name',\n filter: filter,\n total: 30,\n page: 1,\n sort: 'name',\n order: 'desc'\n };\n return this.zitiDataService.get(`configs`, paging, []).then((result) => {\n return result;\n });\n }\n\n addOverride(identity, selectedServiceId, selectedConfigId): Promise<any> {\n if (this.overrideExists(selectedServiceId, selectedConfigId)) {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Already Added`,\n `Overrides has already been added to this identity`,\n );\n this.growlerService.show(growlerData);\n return Promise.resolve();\n }\n const data = [{\n serviceId: selectedServiceId,\n configId: selectedConfigId\n }];\n return this.zitiDataService.saveSubdata('identities' , identity.id, 'service-configs', data).then(() => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Override Added`,\n `Successfully added override to identity`,\n );\n this.growlerService.show(growlerData);\n return true;\n }).catch((error) => {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Override Failed`,\n `Failed to add override to identity`,\n );\n this.growlerService.show(growlerData);\n return false;\n });\n }\n\n overrideExists(selectedServiceId, selectedConfigId) {\n let exists = false;\n this.overrides.forEach((override) => {\n if (override.serviceId === selectedServiceId && override.configId === selectedConfigId) {\n exists = true;\n }\n })\n return exists;\n }\n\n removeOverride(identity, override): Promise<any> {\n const data = [{\n serviceId: override.service.id,\n configId: override.config.id\n }];\n return this.zitiDataService.deleteSubdata('identities' , identity.id, 'service-configs', data).then(() => {\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Override Removed`,\n `Successfully removed override from identity`,\n );\n this.growlerService.show(growlerData);\n }).catch((error) => {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Removal Failed`,\n `Failed to remove override from identity`,\n );\n this.growlerService.show(growlerData);\n });\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {OverridesService} from \"./overrides.service\";\nimport {isEmpty, debounce} from \"lodash\"\n\n@Component({\n selector: 'lib-overrides',\n templateUrl: './overrides.component.html',\n styleUrls: ['./overrides.component.scss']\n})\nexport class OverridesComponent implements OnInit {\n @Input() identity: any = {};\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n services: any = [];\n configs: any = [];\n overrides: any = [];\n selectedServiceId;\n selectedConfigId;\n showMore = false;\n\n filterServicesDebounced = debounce(this.filterServices, 200);\n filterConfigsDebounced = debounce(this.filterConfigs, 200);\n\n @ViewChild('servicesList') servicesList: any;\n @ViewChild('configList') configList: any;\n\n constructor(public svc: OverridesService) {}\n\n ngOnInit() {\n this.loadOverrides();\n this.getServices('');\n this.getConfigs('');\n }\n\n filterServices(event) {\n this.getServices(event.target.value);\n }\n\n filterConfigs(event) {\n this.getConfigs(event.target.value);\n }\n\n serviceSelectionChanged(event) {\n const selectedService = this.services.find((service) => {\n return service.id === event.value;\n });\n if (selectedService) {\n this.servicesList.editableInputViewChild.nativeElement.value = selectedService.name;\n }\n }\n\n configSelectionChanged(event) {\n const selectedConfig = this.configs.find((config) => {\n return config.id === event.value;\n });\n if (selectedConfig) {\n this.configList.editableInputViewChild.nativeElement.value = selectedConfig.name;\n }\n }\n\n getServices(filter = '') {\n this.svc.loadServices(filter).then((result) => {\n this.services = result.data;\n //this.showMore = result.totalCount > result.limit;\n });\n }\n\n getConfigs(filter = '') {\n this.svc.loadConfigs(filter).then((result) => {\n this.configs = result.data;\n });\n }\n\n loadOverrides() {\n this.svc.loadOverrides(this.identity).then((overrides) => {\n this.overrides = overrides;\n });\n }\n\n addOverride() {\n this.svc.addOverride(this.identity, this.selectedServiceId, this.selectedConfigId).then((result) => {\n if (!result) {\n return;\n }\n this.loadOverrides();\n this.selectedConfigId = undefined;\n this.selectedServiceId = undefined;\n this.servicesList.clear();\n this.servicesList.resetFilter();\n this.configList.clear();\n this.configList.resetFilter();\n this.getServices('');\n });\n }\n\n removeOverride(override) {\n this.svc.removeOverride(this.identity, override).then(() => {\n this.loadOverrides();\n });\n }\n\n get disableAddButton() {\n return isEmpty(this.selectedServiceId) || isEmpty(this.selectedConfigId);\n }\n}\n","<div id=\"OverrideModal\" class=\"overrides-wrapper\">\n <div class=\"overrides-container sized large\">\n <div class=\"form-title-container\">\n <div class=\"form-title-back-button\" (click)=\"close.emit()\">\n <div class=\"form-title-back-button-image\"></div>\n <div class=\"form-title-back-button-line\"></div>\n </div>\n <span class=\"title\">IDENTITY OVERRIDES</span>\n </div>\n <div class=\"subtitle\">Manage the Service Config Identity Overrides</div>\n <div class=\"darkened overrides\" *ngIf=\"overrides.length > 0\">Current Overrides</div>\n <div id=\"OverrideList\" class=\"grid splitRemove overrides\">\n <div id=\"OverrideTemplate\" class=\"row grid threedelete\" *ngFor=\"let override of overrides\">\n <div>{{override.service.name}}</div>\n <div>{{override.config.name}}</div>\n <div class=\"relative\">\n <div class=\"remove icon-minus removeAssoc\" (click)=\"removeOverride(override)\"></div>\n </div>\n </div>\n </div>\n <div class=\"darkened\">ADD OVERRIDE CONFIG</div>\n <div class=\"grid split override-list-container\">\n <div>\n <label for=\"ServiceList\">Service</label>\n <p-dropdown\n #servicesList\n id=\"ServiceList\"\n [options]=\"services\"\n [(ngModel)]=\"selectedServiceId\"\n placeholder=\"Select a service\"\n [editable]=\"true\"\n [optionValue]=\"'id'\"\n [optionLabel]=\"'name'\"\n (onFocus)=\"servicesList.show()\"\n (onChange)=\"serviceSelectionChanged($event)\"\n (keyup)=\"filterServicesDebounced($event)\"\n ></p-dropdown>\n </div>\n <div>\n <label for=\"ConfigList\">Configuration</label>\n <p-dropdown\n #configList\n id=\"ConfigList\"\n [options]=\"configs\"\n [(ngModel)]=\"selectedConfigId\"\n placeholder=\"Select a config\"\n [editable]=\"true\"\n [optionValue]=\"'id'\"\n [optionLabel]=\"'name'\"\n (onChange)=\"configSelectionChanged($event)\"\n (keyup)=\"filterConfigsDebounced($event)\"\n (onFocus)=\"configList.show()\"\n ></p-dropdown>\n </div>\n </div>\n <div class=\"buttons\">\n <div\n id=\"AssociateButton\"\n class=\"button confirm\"\n [ngClass]=\"{disabled: disableAddButton}\"\n (click)=\"addOverride()\"\n >\n Add\n </div>\n </div>\n </div>\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, OnInit, OnDestroy} from '@angular/core';\nimport {Router, NavigationEnd} from '@angular/router'\nimport {IdentitiesPageService} from \"./identities-page.service\";\nimport {DataTableFilterService} from \"../../features/data-table/data-table-filter.service\";\nimport {ListPageComponent} from \"../../shared/list-page-component.class\";\nimport {TabNameService} from \"../../services/tab-name.service\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {ZacWrapperServiceClass, ZAC_WRAPPER_SERVICE} from \"../../features/wrappers/zac-wrapper-service.class\";\nimport {ConsoleEventsService} from \"../../services/console-events.service\";\nimport {QrCodeComponent} from \"../../features/qr-code/qr-code.component\";\nimport {ResetEnrollmentComponent} from \"../../features/reset-enrollment/reset-enrollment.component\";\nimport {IDENTITY_EXTENSION_SERVICE} from \"../../features/projectable-forms/identity/identity-form.service\";\nimport {ExtensionService} from \"../../features/extendable/extensions-noop.service\";\nimport { IdentityServicePathComponent } from \"../../features/visualizer/identity-service-path/identity-service-path.component\";\n\n@Component({\n selector: 'lib-identities',\n templateUrl: './identities-page.component.html',\n styleUrls: ['./identities-page.component.scss']\n})\nexport class IdentitiesPageComponent extends ListPageComponent implements OnInit, OnDestroy {\n\n title = 'Identity Management'\n tabs: { url: string, label: string }[] ;\n isLoading = false;\n identityRoleAttributes: any[] = [];\n formDataChanged = false;\n\n constructor(\n public override svc: IdentitiesPageService,\n filterService: DataTableFilterService,\n dialogForm: MatDialog,\n private tabNames: TabNameService,\n @Inject(ZAC_WRAPPER_SERVICE)private zacWrapperService: ZacWrapperServiceClass,\n private router: Router,\n consoleEvents: ConsoleEventsService,\n @Inject(IDENTITY_EXTENSION_SERVICE) private extService: ExtensionService\n ) {\n super(filterService, svc, consoleEvents, dialogForm);\n }\n\n override ngOnInit() {\n this.tabs = this.tabNames.getTabs('identities');\n this.svc.refreshData = this.refreshData;\n this.subscription.add(\n this.zacWrapperService.zitiUpdated.subscribe(() => {\n this.refreshData();\n })\n );\n this.subscription.add(\n this.router.events.subscribe((event: any) => {\n if (event instanceof NavigationEnd) {\n this.refreshData();\n }\n })\n );\n this.zacWrapperService.resetZacEvents();\n this.getIdentityRoleAttributes();\n super.ngOnInit();\n }\n\n headerActionClicked(action: string) {\n switch(action) {\n case 'add':\n this.svc.openUpdate();\n break;\n case 'edit':\n this.svc.openUpdate();\n break;\n case 'delete':\n const selectedItems = this.rowData.filter((row) => {\n return row.selected;\n });\n const label = selectedItems.length > 1 ? 'identities' : 'identity';\n this.openBulkDelete(selectedItems, label);\n break;\n default:\n }\n }\n\n closeModal(event?) {\n this.svc.sideModalOpen = false;\n if(event?.refresh) {\n this.refreshData();\n this.getIdentityRoleAttributes();\n }\n }\n\n dataChanged(event) {\n this.formDataChanged = event;\n }\n\n tableAction(event: any) {\n if (this.extService?.listActions?.length > 0) {\n let extensionFound = false;\n this.extService?.listActions?.forEach((extAction) => {\n if (extAction?.action === event?.action) {\n extAction.callback(event.item);\n extensionFound = true;\n }\n });\n if (extensionFound) {\n return;\n }\n }\n switch(event?.action) {\n case 'toggleAll':\n case 'toggleItem':\n this.itemToggled(event.item)\n break;\n case 'update':\n this.svc.openUpdate(event.item);\n break;\n case 'create':\n this.svc.openUpdate();\n break;\n case 'override':\n this.svc.openOverridesModal(event.item);\n break;\n case 'delete':\n this.deleteItem(event.item)\n break;\n case 'download-enrollment':\n this.downloadJWT(event.item)\n break;\n case 'reset-enrollment':\n this.resetEnrollment(event.item);\n break;\n case 'reissue-enrollment':\n this.reissueEnrollment(event.item);\n break;\n case \"identity-service-path\":\n this.openIdentityVisualizer(event.item);\n break;\n case \"qr-code\":\n this.showQRCode(event.item);\n break;\n case 'download-all':\n this.svc.downloadAllItems();\n break;\n case 'download-selected':\n this.svc.downloadItems(this.selectedItems);\n break;\n default:\n break;\n }\n }\n\n downloadJWT(item: any) {\n const jwt = this.svc.getJWT(item);\n this.svc.downloadJWT(jwt, item.name);\n }\n\n showQRCode(item: any) {\n const data = {\n jwt: this.svc.getJWT(item),\n expiration: this.svc.getEnrollmentExpiration(item),\n qrCodeSize: 400,\n identity: item,\n };\n this.dialogRef = this.dialogForm.open(QrCodeComponent, {\n data: data,\n autoFocus: false,\n });\n }\n\n deleteItem(item: any) {\n this.openBulkDelete([item], 'identity');\n }\n\n getIdentityRoleAttributes() {\n this.svc.getIdentitiesRoleAttributes().then((result: any) => {\n this.identityRoleAttributes = result.data;\n });\n }\n\n openIdentityVisualizer(identity) {\n this.dialogRef = this.dialogForm.open(IdentityServicePathComponent, {\n data: {\n identity: identity,\n },\n autoFocus: false,\n });\n }\n\n resetEnrollment(identity) {\n this.dialogRef = this.dialogForm.open(ResetEnrollmentComponent, {\n data: {\n identity: identity,\n type: 'reset',\n },\n autoFocus: false,\n });\n this.dialogRef.afterClosed().subscribe((result) => {\n if(result) {\n this.refreshData(undefined, true);\n }\n });\n }\n\n reissueEnrollment(identity) {\n this.dialogRef = this.dialogForm.open(ResetEnrollmentComponent, {\n data: {\n identity: identity,\n type: 'reissue',\n },\n autoFocus: false,\n });\n this.dialogRef.afterClosed().subscribe((result) => {\n if(result) {\n this.refreshData(undefined, true);\n }\n })\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n canDeactivate() {\n if (this.formDataChanged && this.svc.sideModalOpen) {\n return confirm('You have unsaved changes. Do you want to leave this page and discard your changes or stay on this page?');\n }\n return true;\n }\n}\n","<div class=\"ziti-page-container ziti-identities-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'identities'\"\n [rowData]=\"rowData\"\n [isLoading]=\"isLoading\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [emptyMsg]=\"'No Identities defined, Click the plus to add an Identity.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n [noItemsImage]=\"'No_Clients'\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-identity-form\n *ngIf=\"svc.modalType === 'identity' && svc.sideModalOpen\"\n [formData]=\"svc.selectedIdentity\"\n [identityRoleAttributes]=\"identityRoleAttributes\"\n (close)=\"closeModal($event)\"\n (dataChange)=\"dataChanged($event)\"\n ></lib-identity-form>\n <lib-overrides\n *ngIf=\"svc.modalType === 'overrides' && svc.sideModalOpen\"\n [identity]=\"svc.selectedIdentity\"\n (close)=\"closeModal($event)\"\n ></lib-overrides>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n OnDestroy,\n Output,\n OnChanges,\n SimpleChanges,\n AfterViewInit,\n Inject\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {ProjectableForm} from \"../projectable-form.class\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\n\nimport {isEmpty, delay, cloneDeep, isEqual, set} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {EDGE_ROUTER_EXTENSION_SERVICE, EdgeRouterFormService} from './edge-router-form.service';\nimport {MatDialogRef} from \"@angular/material/dialog\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\n\n@Component({\n selector: 'lib-edge-router-form',\n templateUrl: './edge-router-form.component.html',\n styleUrls: ['./edge-router-form.component.scss'],\n providers: [\n {\n provide: MatDialogRef,\n useValue: {}\n }\n ]\n})\nexport class EdgeRouterFormComponent extends ProjectableForm implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n @Input() formData: any = {};\n @Input() edgeRouterRoleAttributes: any[] = [];\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n formView = 'simple';\n isEditing = false;\n isLoading = false;\n servicesLoading = false;\n identitiesLoading = false;\n authPolicies: any = [\n {id: 'default', name: 'Default'}\n ];\n\n showMore = false;\n settings: any = {};\n subscription: Subscription = new Subscription();\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n public svc: EdgeRouterFormService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n growlerService: GrowlerService,\n @Inject(EDGE_ROUTER_EXTENSION_SERVICE) extService: ExtensionService\n ) {\n super(growlerService, extService);\n }\n\n ngOnInit(): void {\n this.subscription.add(\n this.settingsService.settingsChange.subscribe((results:any) => {\n this.settings = results;\n })\n );\n this.svc.getAssociatedServices(this.formData.id);\n this.svc.getAssociatedIdentities(this.formData.id);\n this.svc.getAuthPolicies().then(result => {\n this.authPolicies = result;\n });\n this.initData = cloneDeep(this.formData);\n this.extService.updateFormData(this.formData);\n this.subscription.add(\n this.extService.formDataChanged.subscribe((data) => {\n if (data.isEmpty) {\n return;\n }\n this.formData = data;\n })\n );\n this.initData = cloneDeep(this.formData);\n }\n\n ngOnDestroy() {\n this.extService.closed.emit({});\n this.subscription.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.isEditing = !isEmpty(this.formData.id);\n }\n\n get hasEnrolmentToken() {\n return !isEmpty(this.formData.enrollmentJwt) || !isEmpty(this.formData.enrollmentToken);\n }\n\n headerActionRequested(action) {\n switch(action.name) {\n case 'save':\n this.save();\n break;\n case 'close':\n this.closeModal(true);\n break;\n case 'toggle-view':\n this.formView = action.data;\n break;\n }\n }\n\n async save(event?) {\n const isValid = this.validate();\n const isExtValid = await this.extService.validateData();\n if(!isValid || !isExtValid) {\n return;\n }\n\n this.isLoading = true;\n this.svc.save(this.formData).then((result) => {\n if (result?.close) {\n this.closeModal(true, true);\n }\n const data = result?.data?.id ? result.data : result;\n if (!isEmpty(data.id)) {\n this.formData = data || this.formData;\n this.initData = this.formData;\n } else {\n this.initData = this.formData;\n }\n }).finally(() => {\n this.isLoading = false;\n });\n }\n\n validate() {\n this.errors = {};\n if (isEmpty(this.formData.name)) {\n this.errors['name'] = true;\n }\n return isEmpty(this.errors);\n }\n\n get apiCallURL() {\n return this.settings.selectedEdgeController + '/edge/management/v1/edge-routers' + (this.formData.id ? `/${this.formData.id}` : '');\n }\n\n get apiData() {\n const data: any = {\n name: this.formData?.name || '',\n appData: this.formData?.appData || '',\n roleAttributes: this.formData.roleAttributes || '',\n isTunnelerEnabled: this.formData.isTunnelerEnabled,\n noTraversal: this.formData.noTraversal,\n cost: this.formData.cost || '0',\n tags: this.formData.tags || ''\n }\n if (!this.isEditing) {\n data.enrollment = this.formData.enrollment || {ott: true};\n }\n return data;\n }\n\n refreshEdgeRouter() {\n this.svc.refreshRouter(this.formData.id).then(result => {\n this.formData = result.data;\n this.initData = cloneDeep(this.formData);\n this.extService.updateFormData(this.formData);\n })\n }\n\n _apiData = {};\n set apiData(data) {\n this._apiData = data;\n }\n\n toggleTunnelerEnabled() {\n this.formData.isTunnelerEnabled = !this.formData.isTunnelerEnabled;\n }\n\n toggleNoTraversal() {\n this.formData.noTraversal = !this.formData.noTraversal;\n }\n\n clear(): void {\n }\n}\n","<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div *ngIf=\"showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div\n (click)=\"toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n <lib-form-field-container\n *ngIf=\"hasEnrolmentToken && !extService['hideZitiRegistration']\"\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>","import {Component, Inject, OnInit, OnDestroy} from '@angular/core';\n\nimport {EdgeRoutersPageService} from \"./edge-routers-page.service\";\nimport {DataTableFilterService} from \"../../features/data-table/data-table-filter.service\";\nimport {ListPageComponent} from \"../../shared/list-page-component.class\";\nimport {TabNameService} from \"../../services/tab-name.service\";\n\nimport {invoke, isEmpty, defer, unset, cloneDeep, result} from 'lodash';\nimport moment from 'moment';\nimport $ from 'jquery';\nimport {ConfirmComponent} from \"../../features/confirm/confirm.component\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {ZacWrapperServiceClass, ZAC_WRAPPER_SERVICE} from \"../../features/wrappers/zac-wrapper-service.class\";\nimport {SettingsService} from \"../../services/settings.service\";\nimport {ConsoleEventsService} from \"../../services/console-events.service\";\nimport {EdgeRouter} from \"../../models/edge-router\";\nimport {EDGE_ROUTER_EXTENSION_SERVICE} from \"../../features/projectable-forms/edge-router/edge-router-form.service\";\nimport {ExtensionService} from \"../../features/extendable/extensions-noop.service\";\n\n@Component({\n selector: 'lib-edge-routers',\n templateUrl: './edge-routers-page.component.html',\n styleUrls: ['./edge-routers-page.component.scss']\n})\nexport class EdgeRoutersPageComponent extends ListPageComponent implements OnInit, OnDestroy {\n\n title = 'Edge Router Management'\n tabs: { url: string, label: string }[] ;\n isLoading = false;\n edgeRouterRoleAttributes: any[] = [];\n formDataChanged = false;\n\n constructor(\n public override svc: EdgeRoutersPageService,\n filterService: DataTableFilterService,\n dialogForm: MatDialog,\n private tabNames: TabNameService,\n consoleEvents: ConsoleEventsService,\n @Inject(ZAC_WRAPPER_SERVICE)private zacWrapperService: ZacWrapperServiceClass,\n @Inject(EDGE_ROUTER_EXTENSION_SERVICE) private extService: ExtensionService\n ) {\n super(filterService, svc, consoleEvents, dialogForm);\n }\n\n override ngOnInit() {\n this.tabs = this.tabNames.getTabs('routers');\n this.svc.refreshData = this.refreshData;\n this.zacWrapperService.zitiUpdated.subscribe(() => {\n this.refreshData();\n });\n this.zacWrapperService.resetZacEvents();\n this.getEdgeRouterRoleAttributes();\n super.ngOnInit();\n }\n\n override ngOnDestroy() {\n this.closeModal();\n super.ngOnDestroy();\n }\n\n headerActionClicked(action: string) {\n switch(action) {\n case 'add':\n this.svc.openUpdate();\n break;\n case 'edit':\n this.svc.openUpdate();\n break;\n case 'delete':\n const selectedItems = this.rowData.filter((row) => {\n return row.selected;\n });\n const label = selectedItems.length > 1 ? 'routers' : 'router';\n this.openBulkDelete(selectedItems, label);\n break;\n default:\n }\n }\n\n closeModal(event?) {\n this.svc.sideModalOpen = false;\n if(event?.refresh) {\n this.refreshData();\n this.getEdgeRouterRoleAttributes();\n }\n }\n\n dataChanged(event) {\n this.formDataChanged = event;\n }\n\n tableAction(event: any) {\n if (this.extService?.listActions?.length > 0) {\n let extensionFound = false;\n this.extService?.listActions?.forEach((extAction) => {\n if (extAction?.action === event?.action) {\n extAction.callback(event.item);\n extensionFound = true;\n }\n });\n if (extensionFound) {\n return;\n }\n }\n switch(event?.action) {\n case 'toggleAll':\n case 'toggleItem':\n this.itemToggled(event.item)\n break;\n case 'update':\n this.svc.openUpdate(event.item);\n break;\n case 'create':\n this.svc.openUpdate();\n break;\n case 'delete':\n this.deleteItem(event.item)\n break;\n case 'download-enrollment':\n this.downloadJWT(event.item)\n break;\n case 'download-all':\n this.svc.downloadAllItems();\n break;\n case 'download-selected':\n this.svc.downloadItems(this.selectedItems);\n break;\n case 're-enroll':\n this.svc.reenroll(event.item).then((result) => {\n this.refreshData(this.svc.currentSort);\n });\n break;\n default:\n break;\n }\n }\n\n downloadJWT(item: any) {\n const jwt = this.svc.getJWT(item);\n this.svc.downloadJWT(jwt, item.name);\n }\n\n deleteItem(item: any) {\n this.openBulkDelete([item], 'router');\n }\n\n getEdgeRouterRoleAttributes() {\n this.svc.getEdgeRouterRoleAttributes().then((result: any) => {\n this.edgeRouterRoleAttributes = result.data;\n });\n }\n\n canDeactivate() {\n if (this.formDataChanged && this.svc.sideModalOpen) {\n return confirm('You have unsaved changes. Do you want to leave this page and discard your changes or stay on this page?');\n }\n return true;\n }\n}\n","<div class=\"ziti-page-container ziti-edge-routers-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'edge-routers'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Edge Routers defined, Click the plus to add an Edge Router.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n [noItemsImage]=\"'No_Routers'\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-edge-router-form\n *ngIf=\"svc.modalType === 'edge-router' && svc.sideModalOpen\"\n [formData]=\"svc.selectedEdgeRouter\"\n [edgeRouterRoleAttributes]=\"edgeRouterRoleAttributes\"\n (close)=\"closeModal($event)\"\n (dataChange)=\"dataChanged($event)\"\n >\n <ng-content select=\"[slot=column-1-slot-1]\" slot=\"column-1-slot-1\"></ng-content>\n <ng-content select=\"[slot=column-2-slot-1]\" slot=\"column-2-slot-1\"></ng-content>\n </lib-edge-router-form>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, Inject} from \"@angular/core\";\nimport {cloneDeep, isEmpty} from 'lodash';\nimport moment from 'moment';\nimport {DataTableFilterService, FilterObj} from \"../../features/data-table/data-table-filter.service\";\nimport {ListPageServiceClass} from \"../../shared/list-page-service.class\";\nimport {\n TableColumnDefaultComponent\n} from \"../../features/data-table/column-headers/table-column-default/table-column-default.component\";\nimport {CallbackResults} from \"../../features/list-page-features/list-page-form/list-page-form.component\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {CsvDownloadService} from \"../../services/csv-download.service\";\nimport {Service} from \"../../models/service\";\nimport {unset} from \"lodash\";\nimport {GrowlerModel} from \"../../features/messaging/growler.model\";\nimport {GrowlerService} from \"../../features/messaging/growler.service\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {SettingsServiceClass} from \"../../services/settings-service.class\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../../features/extendable/extensions-noop.service\";\n\nconst CSV_COLUMNS = [\n {label: 'Name', path: 'name'},\n {label: 'Created At', path: 'createdAt'}\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServicesPageService extends ListPageServiceClass {\n\n private paging = this.DEFAULT_PAGING;\n public modalType = 'service';\n\n serviceType = '';\n selectedService: any = new Service();\n columnFilters: any = {\n name: '',\n os: '',\n createdAt: '',\n };\n\n override menuItems = [\n {name: 'Edit', action: 'update'},\n {name: 'Delete', action: 'delete'},\n ]\n\n override tableHeaderActions = [\n {name: 'Download All', action: 'download-all'},\n {name: 'Download Selected', action: 'download-selected'},\n ]\n\n resourceType = 'services';\n constructor(\n @Inject(SETTINGS_SERVICE) settings: SettingsServiceClass,\n filterService: DataTableFilterService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n override csvDownloadService: CsvDownloadService,\n private growlerService: GrowlerService,\n private dialogForm: MatDialog,\n @Inject(SHAREDZ_EXTENSION) private extService: ExtensionService\n ) {\n super(settings, filterService, csvDownloadService, extService);\n }\n\n validate = (formData): Promise<CallbackResults> => {\n return Promise.resolve({ passed: true});\n }\n\n initTableColumns(): any {\n const rolesRenderer = (row) => {\n let roles = '';\n row?.data?.roleAttributes?.forEach((attr) => {\n roles += '<div class=\"hashtag\">'+attr+'</div>';\n });\n return roles;\n }\n\n return [\n {\n colId: 'name',\n field: 'name',\n headerName: 'Name',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: this.headerComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = 'advanced';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: this.nameColumnRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: true,\n filter: true,\n sortColumn: this.sort.bind(this),\n sortDir: 'asc',\n width: 300,\n },\n {\n colId: 'roles',\n field: 'roleAttributes',\n headerName: 'Roles',\n headerComponent: TableColumnDefaultComponent,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: rolesRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: false,\n filter: false,\n },\n {\n colId: 'createdAt',\n field: 'createdAt',\n headerName: 'Created At',\n headerComponent: TableColumnDefaultComponent,\n valueFormatter: this.createdAtFormatter,\n resizable: true,\n sortable: true,\n sortColumn: this.sort.bind(this),\n cellClass: 'nf-cell-vert-align tCol',\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n }\n ];\n }\n\n getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any> {\n // we can customize filters or sorting here before moving on...\n this.paging.page = page || this.paging.page;\n return super.getTableData('services', this.paging, filters, sort)\n .then((results: any) => {\n return this.processData(results);\n });\n }\n\n private processData(results: any) {\n if (!isEmpty(results?.data)) {\n //pre-process data before rendering\n results.data = this.addActionsPerRow(results);\n }\n if (!isEmpty(results?.meta?.pagination)) {\n this.totalCount = results.meta?.pagination.totalCount;\n }\n return results;\n }\n\n private addActionsPerRow(results: any): any[] {\n return results.data.map((row) => {\n row.actionList = ['update', 'delete'];\n return row;\n });\n }\n\n public getServiceRoleAttributes() {\n return this.zitiService.get('service-role-attributes', {}, []);\n }\n\n public getIdentityNamedAttributes() {\n return this.zitiService.get('identities', {}, []).then((result) => {\n const namedAttributes = result.data.map((identity) => {\n return identity.name;\n });\n return namedAttributes;\n });\n }\n\n public getIdentityRoleAttributes() {\n return this.zitiService.get('identity-role-attributes', {}, []);\n }\n\n downloadAllItems() {\n const paging = cloneDeep(this.paging);\n paging.total = this.totalCount;\n super.getTableData('services', paging, undefined, undefined)\n .then((results: any) => {\n return this.downloadItems(results?.data);\n });\n }\n\n downloadItems(selectedItems) {\n this.csvDownloadService.download(\n 'services',\n selectedItems,\n CSV_COLUMNS,\n false,\n false,\n undefined,\n false\n );\n }\n\n public openUpdate(item?: any) {\n this.modalType = 'service';\n if (item) {\n this.selectedService = item;\n this.selectedService.badges = [];\n unset(this.selectedService, '_links');\n } else {\n this.selectedService = new Service();\n }\n this.sideModalOpen = true;\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, Inject, InjectionToken} from \"@angular/core\";\nimport {isEmpty, isString, keys, some, defer, cloneDeep, filter, isNil, isBoolean} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\nimport {Service} from \"../../../models/service\";\nimport moment from 'moment';\nimport dynamic from \"ajv/dist/vocabularies/dynamic\";\nimport {SchemaService} from \"../../../services/schema.service\";\nimport {Subscription} from \"rxjs\";\nimport {ConfigEditorComponent} from \"../../config-editor/config-editor.component\";\nimport {ValidationService} from \"../../../services/validation.service\";\n\nexport const SERVICE_EXTENSION_SERVICE = new InjectionToken<any>('SERVICE_EXTENSION_SERVICE');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServiceFormService {\n\n paging = {\n filter: \"\",\n noSearch: true,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 100\n }\n\n formData: any;\n configData: any;\n selectedConfigId: any = '';\n configs: any = [];\n configTypes: any = [];\n filteredConfigs: any = [];\n showCfgPreviewOption = false;\n selectedConfigName: any = '';\n selectedConfigTypeId: any = '';\n selectedConfigType: any = {};\n addedConfigNames: any = [];\n addedTerminatorNames: any = [];\n addedTerminators: any = [];\n configJsonView = false;\n hideConfigJSON = false;\n configErrors: any = {};\n terminatorErrors: any = {};\n newConfigName: string = '';\n terminatorHost: string = '';\n terminatorPort: string = '';\n selectedSchema: any = {};\n items: any = [];\n routers: any = [];\n configDataLabel = 'Configuration Form';\n attachLabel = 'Create and Attach';\n errors: any = {};\n selectedRouterId: string = '';\n selectedRouter: any;\n selectedBindingId: string = '';\n terminatorProtocol = 'udp';\n saveDisabled = false;\n associatedConfigs: any = [];\n associatedConfigsMap: any = {};\n associatedTerminators: any = [];\n associatedServicePolicies: any = [];\n associatedServicePolicyNames: any = [];\n\n lColorArray = [\n 'white',\n 'white',\n 'white',\n ]\n\n bColorArray = [\n 'var(--formBase)',\n 'var(--formGroup)',\n 'var(--formSubGroup)'\n ]\n\n subscription: Subscription = new Subscription();\n\n configEditor: ConfigEditorComponent;\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n private growlerService: GrowlerService,\n @Inject(SERVICE_EXTENSION_SERVICE)private extService: ExtensionService,\n private schemaSvc: SchemaService,\n private validationService: ValidationService\n ) {}\n\n resetFormData() {\n this.selectedConfigName = '';\n this.selectedConfigTypeId = '';\n this.associatedConfigsMap = {};\n this.configData = {};\n this.associatedConfigs = [];\n this.errors = {};\n this.newConfigName = '';\n }\n\n save(formData): Promise<any> {\n const isUpdate = !isEmpty(formData.id);\n const data: any = this.getServiceDataModel(formData, isUpdate);\n let prom;\n if (isUpdate) {\n prom = this.zitiService.patch('services', data, formData.id, true);\n } else {\n prom = this.zitiService.post('services', data, true);\n }\n\n return prom.then(async (result: any) => {\n const id = isUpdate ? formData.id : (result?.data?.id || result?.id);\n let svc = await this.zitiService.getSubdata('services', id, '').then((svcData) => {\n return svcData.data;\n });\n return this.extService.formDataSaved(svc).then((formSavedResult: any) => {\n if (!formSavedResult) {\n return svc;\n }\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Services ${isUpdate ? 'Updated' : 'Created'}`,\n `Successfully ${isUpdate ? 'updated' : 'created'} Service: ${formData.name}`,\n );\n this.growlerService.show(growlerData);\n return svc;\n }).catch((result) => {\n return false;\n });\n }).catch((resp) => {\n let errorMessage;\n if (resp?.error?.error?.cause?.message) {\n errorMessage = resp?.error?.error?.cause?.message;\n } else if (resp?.error?.error?.cause?.reason) {\n errorMessage = resp?.error?.error?.cause?.reason;\n }else if (resp?.error?.message) {\n errorMessage = resp?.error?.message;\n } else {\n errorMessage = 'An unknown error occurred';\n }\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating Service`,\n errorMessage,\n );\n this.growlerService.show(growlerData);\n throw resp;\n })\n }\n\n getAssociatedServicePolicies() {\n this.zitiService.getSubdata('services', this.formData.id, 'service-policies').then((result: any) => {\n this.associatedServicePolicies = result.data;\n this.associatedServicePolicyNames = this.associatedServicePolicies.map((policy) => {\n return policy.name;\n });\n });\n }\n\n previewConfig(configName) {\n this.showCfgPreviewOption = true;\n this.configData = this.associatedConfigsMap[configName].data;\n this.selectedConfigName = this.associatedConfigsMap[configName].name;\n this.selectedConfigId = 'preview';\n this.selectedConfigTypeId = this.associatedConfigsMap[configName].configTypeId;\n this.configTypeChanged(false);\n this.selectedConfigId = 'preview';\n this.newConfigName = this.selectedConfigName;\n defer(() => {\n this.selectedConfigId = 'preview';\n })\n }\n\n addTerminators(serviceId) {\n const promises = [];\n this.addedTerminators.forEach((terminator) => {\n terminator.service = serviceId\n promises.push(this.zitiService.post('terminators', terminator));\n });\n }\n\n getServiceDataModel(formData, isUpdate) {\n const saveModel = new Service();\n const modelProperties = keys(saveModel);\n modelProperties.forEach((prop) => {\n switch(prop) {\n default:\n saveModel[prop] = formData[prop];\n }\n });\n return saveModel;\n }\n\n getConfigTypes() {\n this.zitiService.get('config-types', this.paging, []).then((result: any) => {\n this.configTypes = result.data;\n });\n }\n\n getConfigs() {\n return this.zitiService.get('configs', this.paging, []).then((result: any) => {\n this.configs = result.data;\n this.configTypeChanged();\n });\n }\n\n getRouters() {\n this.zitiService.get('edge-routers', this.paging, []).then((result: any) => {\n this.routers = result.data;\n });\n }\n\n getAssociatedConfigs() {\n this.zitiService.getSubdata('services', this.formData.id, 'configs').then((result: any) => {\n this.associatedConfigs = result.data;\n this.associatedConfigsMap = {};\n this.addedConfigNames = this.associatedConfigs.map((cfg) => {\n this.associatedConfigsMap[cfg.name] = cfg;\n return cfg.name;\n });\n });\n }\n\n getAssociatedTerminators() {\n this.zitiService.getSubdata('services', this.formData.id, 'terminators').then((result: any) => {\n this.associatedTerminators = result.data;\n this.addedTerminatorNames = this.associatedTerminators.map((cfg) => {\n return cfg.router?.name;\n });\n });\n }\n\n createConfig(configData) {\n return this.zitiService.post('configs', configData, true).then((result) => {\n return result;\n }).catch((response) => {\n let msg;\n if (isString(response?.error)) {\n msg = response?.error;\n } else {\n msg = response?.error?.error?.cause?.reason;\n }\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating New Config`,\n msg,\n );\n this.growlerService.show(growlerData);\n });\n }\n\n configTypeChanged(resetData?) {\n this.filteredConfigs = this.configs.filter((config) => {\n return config.configTypeId === this.selectedConfigTypeId;\n });\n this.configTypes.forEach((configType) => {\n if (this.selectedConfigTypeId === configType.id) {\n this.selectedConfigType = configType;\n }\n });\n if (this.selectedConfigId !== 'preview') {\n this.selectedConfigId = !isEmpty(this.selectedConfigTypeId) ? 'add-new' : '';\n }\n this.configChanged(resetData);\n }\n\n updatedAddedConfigs() {\n this.addedConfigNames = [];\n this.configs.forEach((availableConfig) => {\n const cfgExists = some(this.formData.configs, configId => {\n return availableConfig.id == configId;\n });\n if (cfgExists) {\n this.addedConfigNames.push(availableConfig.name);\n this.addedConfigNames = [...this.addedConfigNames];\n }\n })\n }\n\n toggleJSONView() {\n this.configJsonView = !this.configJsonView;\n this.configDataLabel = this.configJsonView ? 'JSON Configuration' : 'Configuration Form';\n if (this.configJsonView) {\n //this.configSubscriptions.unsubscribe();\n }\n }\n\n async attachConfig(addedConfigId) {\n let configId;\n if (this.selectedConfigId === 'add-new') {\n if (!this.validateConfig()) {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Validating Config`,\n 'The entered configuration is invalid. Please update missing/invalid fields and try again.',\n );\n this.growlerService.show(growlerData);\n return;\n }\n const newConfig: any = {\n configTypeId: this.selectedConfigTypeId,\n data: this.configData,\n name: this.newConfigName\n }\n newConfig.data = this.validationService.redefineObject(newConfig.data);\n configId = await this.createConfig(newConfig)\n .then((result) => {\n const cfg = result?.data;\n newConfig.id = result?.id ? result.id : result?.data?.id;\n this.associatedConfigsMap[newConfig.name] = {data: newConfig.data, name: newConfig.name, configTypeId: newConfig.configTypeId};\n return newConfig.id;\n })\n .catch((result) => {\n const errorField = result?.error?.error?.cause?.field;\n if (!isEmpty(errorField)) {\n this.configErrors[errorField] = true;\n }\n const errorMessage = result?.error?.error?.cause?.reason;\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating Config`,\n errorMessage,\n );\n this.growlerService.show(growlerData);\n return undefined;\n });\n if (!isEmpty(configId)) {\n this.saveDisabled = false;\n this.formData.configs.push(configId);\n this.addedConfigNames.push(this.newConfigName);\n this.addedConfigNames = [...this.addedConfigNames];\n this.getConfigs();\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `New Config Attached`,\n `New Config ${this.newConfigName} has been created and attached to the service`,\n );\n this.growlerService.show(growlerData);\n this.newConfigName = '';\n this.selectedConfigTypeId = '';\n this.selectedConfigId = '';\n this.configData = {};\n this.configEditor?.getConfigDataFromForm();\n return;\n }\n } else {\n let configAdded = false;\n this.formData.configs.forEach((configId) => {\n if (configId === addedConfigId) {\n configAdded = true;\n }\n });\n if (!configAdded) {\n let configName = '';\n this.configs.forEach((config) => {\n if (config.id === addedConfigId) {\n configName = config.name;\n }\n });\n if (!isEmpty(configName)) {\n this.addedConfigNames.push(configName);\n this.addedConfigNames = [...this.addedConfigNames];\n }\n this.formData.configs.push(addedConfigId);\n this.selectedConfigTypeId = '';\n this.selectedConfigId = '';\n this.saveDisabled = false;\n } else {\n const growlerData = new GrowlerModel(\n 'warning',\n 'Info',\n `Config Already Attached`,\n 'Config has already been attached to this service',\n );\n this.growlerService.show(growlerData);\n }\n }\n }\n\n removeConfig(nameToRemove) {\n let configIdToRemove;\n this.configs.forEach((availableConfig) => {\n if (availableConfig.name === nameToRemove) {\n configIdToRemove = availableConfig.id;\n }\n });\n if (configIdToRemove) {\n const newConfigs = filter(this.formData.configs, configId => {\n return configId !== configIdToRemove;\n });\n const newConfigNames = filter(this.addedConfigNames, (configName) => {\n return configName !== nameToRemove;\n });\n this.formData.configs = newConfigs;\n this.addedConfigNames = newConfigNames;\n if (this.selectedConfigId === 'preview' && nameToRemove === this.selectedConfigName) {\n this.selectedConfigId = '';\n this.selectedConfigTypeId = '';\n }\n }\n }\n\n async configChanged(resetData = true) {\n let selectedConfig: any = {};\n this.configData = resetData ? undefined : this.configData;\n let data;\n let attachLabel = 'Attach to Service';\n if (this.selectedConfigId === 'preview') {\n this.selectedSchema = await this.zitiService.schema(this.selectedConfigType.schema);\n } else if (this.selectedConfigId === 'add-new') {\n data = {};\n this.selectedSchema = await this.zitiService.schema(this.selectedConfigType.schema);\n attachLabel = 'Create and Attach';\n //this.createForm(dynamicForm);\n this.saveDisabled = true;\n } else if (this.selectedConfigId) {\n this.filteredConfigs.forEach((config) => {\n if (this.selectedConfigId === config.id) {\n selectedConfig = config;\n }\n });\n data = selectedConfig?.data || {};\n this.saveDisabled = true;\n } else {\n this.saveDisabled = false;\n }\n if (this.selectedConfigId !== 'preview') {\n if (!this.configData) {\n this.configData = data;\n } else {\n defer(() => {\n this.configData = cloneDeep(data);\n });\n }\n }\n //this.updateConfigData();\n this.attachLabel = attachLabel;\n }\n\n validate() {\n this.errors = {};\n if (isEmpty(this.formData.name)) {\n this.errors['name'] = true;\n }\n return isEmpty(this.errors);\n }\n\n validateConfig() {\n this.configErrors = {};\n this.configEditor?.validateConfig();\n if (isEmpty(this.newConfigName)) {\n this.configErrors['name'] = true;\n }\n return isEmpty(this.configErrors);\n }\n\n _apiData = {};\n set apiData(data) {\n this._apiData = data;\n }\n\n get apiData() {\n const data: any = {\n name: this.formData?.name || '',\n roleAttributes: this.formData?.roleAttributes || [],\n configs: this.formData?.configs || [],\n encryptionRequired: this.formData?.encryptionRequired,\n terminatorStrategy: this.formData?.terminatorStrategy || '',\n tags: this.formData?.tags || {}\n }\n return data;\n }\n\n}","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n OnDestroy,\n Output,\n OnChanges,\n SimpleChanges,\n ViewChild,\n ElementRef,\n AfterViewInit,\n Inject,\n ViewContainerRef\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {ProjectableForm} from \"../projectable-form.class\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\n\nimport {isEmpty, forEach, delay, unset, keys, defer, cloneDeep, isEqual, some, filter} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {SERVICE_EXTENSION_SERVICE, ServiceFormService} from './service-form.service';\nimport {MatDialogRef} from \"@angular/material/dialog\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\nimport {ConfigEditorComponent} from \"../../config-editor/config-editor.component\";\n\n@Component({\n selector: 'lib-service-form',\n templateUrl: './service-form.component.html',\n styleUrls: ['./service-form.component.scss'],\n providers: [\n {\n provide: MatDialogRef,\n useValue: {}\n }\n ]\n})\nexport class ServiceFormComponent extends ProjectableForm implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n @Input() set formData(data) {\n if (!data?.configs) {\n data.configs = [];\n }\n this.svc.formData = data;\n }\n\n get formData(): any {\n return this.svc.formData;\n }\n\n @Input() serviceRoleAttributes: any[] = [];\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n isEditing = false;\n enrollmentExpiration: any;\n jwt: any;\n token: any;\n isLoading = false;\n strategies = [\n {id: 'smartrouting', label: 'Smart Routing'},\n {id: 'weighted', label: 'Weighted'},\n {id: 'random', label: 'Random'},\n {id: 'ha', label: 'High Availability'},\n ];\n bindingTypes = [\n {id: 'udp', name: 'UDP'},\n {id: 'transport', name: 'Transport'},\n {id: 'edge', name: 'Edge'},\n ];\n protocols = [\n {id: 'udp', name: 'UDP'},\n {id: 'tcp', name: 'TCP'}\n ];\n\n showMore = false;\n formView = 'simple';\n formDataInvalid = false;\n settings: any = {};\n subscription: Subscription = new Subscription();\n\n @ViewChild(\"configEditor\", {read: ConfigEditorComponent}) configEditor!: ConfigEditorComponent;\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n public svc: ServiceFormService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n growlerService: GrowlerService,\n @Inject(SERVICE_EXTENSION_SERVICE) extService: ExtensionService\n ) {\n super(growlerService, extService);\n }\n\n ngOnInit(): void {\n this.subscription.add(\n this.settingsService.settingsChange.subscribe((results:any) => {\n this.settings = results;\n })\n );\n this.jwt = this.formData.enrollmentJwt;\n this.token = this.formData.enrollmentToken;\n this.enrollmentExpiration = this.formData?.enrollmentExpiresAt;\n this.svc.resetFormData();\n this.svc.getAssociatedConfigs();\n this.svc.getAssociatedTerminators();\n this.svc.getAssociatedServicePolicies();\n this.svc.errors = {};\n this.initData = cloneDeep(this.formData);\n this.subscription.add(\n this.extService.formDataChanged.subscribe((data) => {\n if (data.isEmpty) {\n return;\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.extService.closed.emit({});\n this.subscription.unsubscribe();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.nameFieldInput.nativeElement.focus();\n this.resetTags();\n this.svc.configEditor = this.configEditor;\n this.svc.getConfigTypes();\n this.svc.getConfigs().then(() => {\n this.svc.updatedAddedConfigs();\n });\n this.svc.getRouters();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.isEditing = !isEmpty(this.formData.id);\n }\n\n configChanged($event) {\n if (this.svc.selectedConfigId === 'add-new') {\n this.svc.newConfigName = '';\n }\n this.svc.configChanged();\n }\n\n configTypeChanged($event) {\n this.svc.selectedConfigId = '';\n this.svc.newConfigName = '';\n this.svc.configTypeChanged();\n }\n\n get showConfigData() {\n return this.svc.selectedConfigId === 'add-new' || this.svc.selectedConfigId === 'preview';\n }\n\n attachConfig() {\n this.configEditor.getConfigDataFromForm();\n this.svc.attachConfig(this.svc.selectedConfigId);\n }\n\n captureConfigEnterEvent(event) {\n event.stopPropagation();\n this.configEditor.getConfigDataFromForm();\n this.svc.attachConfig(this.svc.selectedConfigId);\n }\n\n headerActionRequested(action) {\n switch(action.name) {\n case 'save':\n this.save();\n break;\n case 'close':\n this.resetForm();\n this.closeModal(true);\n break;\n case 'toggle-view':\n this.formView = action.data;\n break;\n }\n }\n\n async save(event?) {\n const isValid = this.svc.validate();\n const isExtValid = await this.extService.validateData();\n const isEdit = !isEmpty(this.formData.id);\n if(!isValid || !isExtValid) {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Data Invalid`,\n `Service data is invalid. Please update and try again.`,\n );\n this.growlerService.show(growlerData);\n return;\n }\n\n this.isLoading = true;\n const serviceId = await this.svc.save(this.formData).then((result) => {\n if (!isEmpty(result?.id)) {\n this.formData = result;\n this.initData = this.formData;\n }\n return result?.id;\n }).finally(() => {\n this.isLoading = false;\n });\n if (serviceId && !isEdit) {\n await this.svc.addTerminators(serviceId)\n }\n if (serviceId) {\n this.closeModal(true, true);\n }\n }\n\n toggleEncryptionRequired() {\n this.formData.encryptionRequired = !this.formData.encryptionRequired;\n }\n\n get apiCallURL() {\n return this.settings.selectedEdgeController + '/edge/management/v1/services' + (this.formData.id ? `/${this.formData.id}` : '');\n }\n\n get saveButtonTooltip() {\n if (this.formDataInvalid) {\n return 'Service data is invalid. Please update and try again.'\n } else {\n return 'Complete and attach config definition, or remove before saving';\n }\n }\n\n resetForm() {\n this.svc.selectedConfigId = '';\n this.svc.selectedConfigTypeId = '';\n this.errors = {};\n this.svc.configErrors = {};\n }\n\n clear(): void {\n }\n}\n","<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Edit Service' : 'Create Service')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n [saveTooltip]=\"saveButtonTooltip\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Name'\" [label]=\"'Required'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this Service\"\n [ngClass]=\"{error: svc.errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Service attributes'\"\n [label]=\"'Optional'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to a resource. Apply the same tag to other Services to form a group of Services.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"serviceRoleAttributes\"\n [placeholder]=\"'Add attributes to group Services'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Add Configurations'\"\n [action]=\"false\"\n [actionLabel]=\"svc.attachLabel\"\n (actionRequested)=\"attachConfig()\"\n (keyup.enter)=\"captureConfigEnterEvent($event)\"\n [helpText]=\"'Configurations are used to define how to intercept and host a service. Ziti Networks come with built-in configuration types (ie. intercept.v1 and host.v1)'\"\n >\n <div class=\"form-field-input-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">Select a Config</span>\n </div>\n <select\n [(ngModel)]=\"svc.selectedConfigTypeId\"\n (change)=\"configTypeChanged($event)\"\n id=\"SelectedConfigType\"\n class=\"form-field-dropdown\"\n >\n <option value=\"\">Select configuration type...</option>\n <option\n *ngFor=\"let type of svc.configTypes\"\n [value]=\"type.id\"\n >\n {{ type.name }}\n </option>\n </select>\n <select\n [(ngModel)]=\"svc.selectedConfigId\"\n (change)=\"configChanged($event)\"\n id=\"SelectedConfig\"\n class=\"form-field-dropdown\"\n [ngClass]=\"{'disabled': !svc.selectedConfigTypeId || svc.selectedConfigTypeId === ''}\"\n >\n <option value=\"\">Select configuration...</option>\n <option value=\"add-new\">Add a New Config</option>\n <option value=\"preview\" *ngIf=\"svc.selectedConfigId === 'preview'\">View Config Data</option>\n <option\n *ngFor=\"let config of svc.filteredConfigs\"\n [value]=\"config.id\"\n >\n {{ config.name }}\n </option>\n </select>\n <div *ngIf=\"!showConfigData && svc.selectedConfigId && svc.selectedConfigId !== '' && svc.selectedConfigId !== 'preview'\" class=\"button-row-right\" >\n <div class=\"save-button\" (click)=\"svc.attachConfig(svc.selectedConfigId)\">\n {{svc.attachLabel}}\n </div>\n </div>\n <div [hidden]=\"!showConfigData\" class=\"form-field-extended-fields\" [ngClass]=\"{'cfg-preview': svc.selectedConfigId === 'preview'}\">\n <div *ngIf=\"showConfigData\" class=\"config-title-row\" style=\"margin-bottom: 10px;\">\n <span class=\"form-field-title\">Config Name</span>\n <div\n class=\"save-button\"\n (click)=\"attachConfig()\"\n *ngIf=\"svc.selectedConfigId !== 'preview'\"\n >{{svc.attachLabel}}\n </div>\n </div>\n <input\n *ngIf=\"showConfigData\"\n [(ngModel)]=\"svc.newConfigName\"\n class=\"form-field-input\"\n [placeholder]=\"'New Config Name'\"\n [ngClass]=\"{error: svc.configErrors['name']}\"\n style=\"margin-bottom: 20px;\"\n />\n <div class=\"config-title-row\" style=\"margin-bottom: 10px;\">\n <span class=\"form-field-title\">Configuration Data</span>\n <div class=\"form-header-toggle-container\" *ngIf=\"svc.selectedConfigId !== 'preview'\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': !svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"svc.toggleJSONView()\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': !svc.configJsonView, 'toggle-right': svc.configJsonView}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n JSON\n </span>\n </div>\n </div>\n <lib-config-editor\n [(configData)]=\"svc.configData\"\n [schema]=\"svc.selectedSchema\"\n [showJsonView]=\"svc.configJsonView\"\n [(configErrors)]=\"svc.configErrors\"\n #configEditor\n ></lib-config-editor>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div *ngIf=\"showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Terminator Strategy'\"\n [title2]=\"'Encryption'\"\n [layout]=\"'row'\"\n [helpText]=\"'Pick a strategy to determine how to rank available terminators for a service'\"\n [helpText2]=\"'Encrypts packets when entering or leaving the network.'\"\n class=\"form-field-advanced\"\n >\n <select\n [(ngModel)]=\"formData.terminatorStrategy\"\n id=\"authPolicyId\"\n class=\"form-field-dropdown\"\n >\n <option value=\"\">Select a Strategy....</option>\n <option\n *ngFor=\"let strat of strategies\"\n [value]=\"strat.id\"\n >\n {{ strat.label }}\n </option>\n </select>\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">Require Encryption</div>\n <div\n (click)=\"toggleEncryptionRequired()\"\n [ngClass]=\"{ on: formData.encryptionRequired }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!formData.encryptionRequired\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.encryptionRequired\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Selected Configurations'\"\n [count]=\"svc.addedConfigNames ? svc.addedConfigNames.length : 0\"\n [helpText]=\"'Preview list of all service configurations that this service is associated with.'\"\n >\n <lib-preview-list\n [allNames]=\"svc.addedConfigNames\"\n [allowRemove]=\"true\"\n [clickable]=\"true\"\n [tooltip]=\"'View Config Data'\"\n (itemRemoved)=\"svc.removeConfig($event)\"\n (itemSelected)=\"svc.previewConfig($event)\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n *ngIf=\"formData.id\"\n [title]=\"'Associated Service Policies'\"\n [count]=\"svc.associatedServicePolicies.length\"\n [helpText]=\"'Preview list of all service policies that this service is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [allNames]=\"svc.associatedServicePolicyNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n [class]=\"'api-call-container'\"\n [helpText]=\"'Preview of the API URL and data model that is used to create/update this service'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"svc.apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\" [(jsonInvalid)]=\"formDataInvalid\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'lib-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss']\n})\nexport class CardComponent {\n\n @Input() imageUrl = 'test';\n @Input() title = '';\n @Input() content = '';\n @Input() buttonText = '';\n @Input() id = '';\n}\n","<div class=\"service-card-container\">\n <div class=\"buttonCard selectType\" [id]=\"id\">\n <div style=\"background-image: url({{imageUrl}})\" class=\"icon\"></div>\n <div class=\"title\">{{title}}</div>\n <div class=\"content\">\n {{ content }}\n </div>\n <div class=\"row center buttonArea\">\n <button class=\"save\">{{buttonText}}</button>\n </div>\n </div>\n</div>","import {Component, EventEmitter, Inject, Output} from '@angular/core';\nimport {ProjectableForm} from \"../projectable-forms/projectable-form.class\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {SERVICE_EXTENSION_SERVICE, ServiceFormService} from \"../projectable-forms/service/service-form.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {ExtensionService} from \"../extendable/extensions-noop.service\";\n\n@Component({\n selector: 'lib-card-list',\n templateUrl: './card-list.component.html',\n styleUrls: ['./card-list.component.scss']\n})\nexport class CardListComponent extends ProjectableForm {\n formData: any = {};\n\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n @Output() selected: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n public svc: ServiceFormService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n growlerService: GrowlerService,\n @Inject(SERVICE_EXTENSION_SERVICE) extService: ExtensionService\n ) {\n super(growlerService, extService);\n }\n clear(): void {\n }\n\n save(): void {\n }\n\n cardSelected(type) {\n this.selected.emit(type)\n }\n}\n","<div class=\"card-list-wrapper fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n ></lib-card>\n </div>\n <div (click)=\"closeModal()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n","import {Component, Inject} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from \"@angular/material/dialog\";\nimport {isEmpty, isNil} from \"lodash\";\nimport {ConfirmComponent} from \"../confirm/confirm.component\";\nimport {GrowlerModel} from \"../messaging/growler.model\";\nimport {GrowlerService} from \"../messaging/growler.service\";\n\n@Component({\n selector: 'lib-creation-summary-dialog',\n templateUrl: './creation-summary-dialog.component.html',\n styleUrls: ['./creation-summary-dialog.component.scss']\n})\nexport class CreationSummaryDialogComponent {\n\n selectedApiData = '';\n selectedApiUrl = '';\n selectedCliCommand = '';\n selectedEntityType = 'service';\n selectedEntityName = '';\n\n summaryData: any = [];\n showAPI = false;\n hasError = false;\n hideSummaryNextTime = false;\n\n constructor(private dialogRef: MatDialogRef<ConfirmComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private growlerService: GrowlerService) {\n this.summaryData = data.summaryData;\n }\n\n get hasCreationError() {\n let hasError = false;\n this.summaryData.forEach((group) => {\n group.entities.forEach((entity) => {\n if (entity.status === 'error') {\n hasError = true;\n }\n });\n });\n return hasError;\n }\n\n selectZitiEntity(entity, type) {\n this.selectedEntityName = entity.name;\n this.selectedCliCommand = entity.cliCommand;\n this.selectedApiUrl = entity.apiUrl;\n this.selectedApiData = entity.apiData;\n this.selectedEntityType = type;\n }\n\n toggleAPIView() {\n this.showAPI = !this.showAPI;\n }\n\n copyCliCommands() {\n let clipboardContent = '';\n this.summaryData.forEach((group) => {\n group.entities.forEach((entity) => {\n clipboardContent += (entity.cliCommand + '\\r\\n');\n });\n });\n navigator.clipboard.writeText(clipboardContent);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `CLI commands copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n\n copyAPIRequests() {\n let clipboardContent = '';\n this.summaryData.forEach((group) => {\n group.entities.forEach((entity) => {\n clipboardContent += (entity.apiRequest + '\\r\\n');\n });\n });\n navigator.clipboard.writeText(clipboardContent);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `API requests copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n\n doRetry(entityData) {\n entityData.loading = 'loading';\n entityData.retry(this.summaryData);\n }\n\n close() {\n this.dialogRef.close('cancel');\n }\n\n done() {\n this.dialogRef.close('done');\n }\n\n confirm() {\n this.dialogRef.close('new');\n }\n}\n","<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>","import {Component, EventEmitter, Inject, Input, Output} from '@angular/core';\nimport {ProjectableForm} from \"../../projectable-form.class\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../../services/settings.service\";\nimport {SERVICE_EXTENSION_SERVICE, ServiceFormService} from \"../service-form.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../../messaging/growler.service\";\nimport {ExtensionService} from \"../../../extendable/extensions-noop.service\";\nimport {GrowlerModel} from \"../../../messaging/growler.model\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {CreationSummaryDialogComponent} from \"../../../creation-summary-dialog/creation-summary-dialog.component\";\nimport {isEmpty, isNil, isNaN, unset, cloneDeep, isEqual} from 'lodash';\nimport {ValidationService} from '../../../../services/validation.service';\nimport {ServicesPageService} from \"../../../../pages/services/services-page.service\";\n\n// @ts-ignore\nconst {app} = window;\n\n@Component({\n selector: 'lib-simple-service',\n templateUrl: './simple-service.component.html',\n styleUrls: ['./simple-service.component.scss']\n})\nexport class SimpleServiceComponent extends ProjectableForm {\n @Input() serviceRoleAttributes: any[] = [];\n @Input() identityRoleAttributes: any[] = [];\n @Input() identityNamedAttributes: any[] = [];\n\n showForm = true;\n formView = 'simple';\n controllerDomain = '';\n zitiSessionId;\n interceptPort;\n hostProtocol = 'tcp';\n serviceCliCommand = '';\n interceptConfigCliCommand = '';\n hostConfigCliCommand = '';\n dialPolicyCliCommand = '';\n bindPolicyCliCommand = '';\n serviceApiUrl = '';\n interceptConfigApiUrl = '';\n hostConfigApiUrl = '';\n dialPolicyApiUrl = '';\n bindPolicyApiUrl = '';\n initServiceApiData = {\n name: \"\",\n roleAttributes: [],\n configs: [],\n encryptionRequired: true\n };\n initInterceptConfigApiData = {\n name: \"\",\n configTypeId:\"g7cIWbcGg\",\n data: {\n portRanges: [],\n addresses: [],\n protocols: ['tcp', 'udp']\n }\n };\n initHostConfigApiData = {\n name: '',\n configTypeId: \"NH5p4FpGR\",\n data: {\n address: \"\",\n port: undefined,\n forwardProtocol: true,\n allowedProtocols: ['tcp']\n }\n };\n initDialPolicyApiData = {\n name: \"\",\n type: \"Dial\",\n semantic: \"AnyOf\",\n serviceRoles: [],\n identityRoles: []\n };\n initBindPolicyApiData = {\n name: \"\",\n type: \"Bind\",\n semantic: \"AnyOf\",\n serviceRoles: [],\n identityRoles: []\n };\n serviceApiData;\n interceptConfigApiData;\n hostConfigApiData;\n dialPolicyApiData;\n bindPolicyApiData;\n dialPolicyNamedAttributes = [];\n dialPolicyRoleAttributes = [];\n bindPolicyNamedAttributes = [];\n bindPolicyRoleAttributes = [];\n identitiesNameIdMap = {};\n interceptConfigId;\n hostConfigId;\n serviceId;\n sdkOnlyDial = false;\n sdkOnlyBind = false;\n formData = {};\n dialogRef: any;\n\n interceptIncrement = -1;\n hostIncrement = -1;\n serviceIncrement = -1;\n dialIncrement = -1;\n bindIncrement = -1;\n\n serviceDataChange = false;\n interceptDataChange = false;\n hostDataChange = false;\n dialDataChange = false;\n bindDataChange = false;\n\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n @Output() selected: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n public svc: ServiceFormService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n growlerService: GrowlerService,\n @Inject(SERVICE_EXTENSION_SERVICE) extService: ExtensionService,\n private dialogForm: MatDialog,\n private validationService: ValidationService,\n private servicesPageService: ServicesPageService\n ) {\n super(growlerService, extService);\n }\n\n ngOnInit() {\n this.controllerDomain = this.settingsService?.settings?.selectedEdgeController;\n this.zitiSessionId = this.settingsService?.settings?.session?.id;\n this.initFormData();\n this.getIdentityNamedAttributes();\n }\n\n initFormData() {\n this.serviceApiUrl = `${this.controllerDomain}/edge/management/v1/services`;\n this.interceptConfigApiUrl = `${this.controllerDomain}/edge/management/v1/configs`;\n this.hostConfigApiUrl = `${this.controllerDomain}/edge/management/v1/configs`;\n this.dialPolicyApiUrl = `${this.controllerDomain}/edge/management/v1/service-policies`;\n this.bindPolicyApiUrl = `${this.controllerDomain}/edge/management/v1/service-policies`;\n this.serviceCliCommand = '';\n this.interceptConfigCliCommand = '';\n this.hostConfigCliCommand = '';\n this.dialPolicyCliCommand = '';\n this.bindPolicyCliCommand = '';\n this.interceptConfigId = '';\n this.hostConfigId = '';\n this.serviceId = '';\n this.sdkOnlyDial = false;\n this.sdkOnlyBind = false;\n this.interceptPort = undefined;\n this.dialPolicyNamedAttributes = [];\n this.dialPolicyRoleAttributes = [];\n this.bindPolicyNamedAttributes = [];\n this.bindPolicyRoleAttributes = [];\n this.serviceApiData = cloneDeep(this.initServiceApiData);\n this.interceptConfigApiData = cloneDeep(this.initInterceptConfigApiData);\n this.hostConfigApiData = cloneDeep(this.initHostConfigApiData);\n this.dialPolicyApiData = cloneDeep(this.initDialPolicyApiData);\n this.bindPolicyApiData = cloneDeep(this.initBindPolicyApiData);\n this.servicesPageService.getServiceRoleAttributes().then((result) => {\n this.serviceRoleAttributes = result.data;\n });\n }\n\n getIdentityNamedAttributes(filter?) {\n const paging = {\n searchOn: 'name',\n filter: filter || '',\n total: 30,\n page: 1,\n sort: 'name',\n order: 'asc'\n };\n this.zitiService.get('identities', paging, []).then((result) => {\n const namedAttributes = result.data.map((identity) => {\n this.identitiesNameIdMap[identity.name] = identity.id;\n return identity.name;\n });\n this.identityNamedAttributes = namedAttributes;\n });\n }\n\n headerActionRequested(action) {\n switch(action.name) {\n case 'save':\n this.save();\n break;\n case 'close':\n this.closeModal(true, true, 'cards')\n break;\n case 'toggle-view':\n this.formView = action.data;\n break;\n }\n }\n\n toggleSdkOnlyDial() {\n this.sdkOnlyDial = !this.sdkOnlyDial;\n }\n\n toggleSdkOnlyBind() {\n this.sdkOnlyBind = !this.sdkOnlyBind;\n }\n\n serviceNameChanged(event) {\n this.interceptConfigApiData.name = `${this.serviceApiData.name}-intercept-config`\n this.hostConfigApiData.name = `${this.serviceApiData.name}-host-config`\n this.dialPolicyApiData.name = `${this.serviceApiData.name}-dial-policy`\n this.bindPolicyApiData.name = `${this.serviceApiData.name}-bind-policy`\n }\n\n interceptPortChanged($event) {\n if (isNil(this.interceptPort) || isNaN(this.interceptPort)) {\n this.interceptConfigApiData.data.portRanges = [];\n return;\n }\n this.interceptConfigApiData.data.portRanges[0] = {\n high: this.interceptPort,\n low: this.interceptPort\n };\n }\n\n hostProtocolsChanged($event) {\n switch (this.hostProtocol) {\n case 'both':\n this.hostConfigApiData.data.allowedProtocols = ['tcp', 'udp']\n break;\n default:\n this.hostConfigApiData.data.allowedProtocols = [this.hostProtocol];\n break;\n }\n }\n\n async save(refresh?) {\n if (!this.validate()) {\n return;\n }\n const summaryData = this.showSummary();\n this.serviceApiData.configs = [];\n await this.createInterceptConfig(summaryData);\n await this.createHostConfig(summaryData);\n await this.createService(summaryData);\n await this.createPolicy(summaryData, 'Dial');\n await this.createPolicy(summaryData, 'Bind');\n\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Simple Service ${this.serviceApiData.name} Created`,\n `Successfully created entities for simple service ${this.serviceApiData.name}`,\n );\n this.growlerService.show(growlerData);\n\n summaryData?.forEach((entityType) => {\n entityType.entities?.forEach((entity) => {\n if (entity.type === 'services') {\n entity.cliCommand = this.serviceCliCommand;\n entity.apiRequest = this.getServicesApiRequest();\n } else if (entity.type === 'configs' && entity.subtype === 'intercept') {\n entity.cliCommand = this.interceptConfigCliCommand;\n entity.apiRequest = this.getInterceptConfigApiRequest();\n } else if (entity.type === 'configs' && entity.subtype === 'host') {\n entity.cliCommand = this.hostConfigCliCommand;\n entity.apiRequest = this.getHostConfigApiRequest();\n } else if (entity.type === 'service-policies' && entity.subtype === 'dial') {\n entity.cliCommand = this.dialPolicyCliCommand;\n entity.apiRequest = this.getDialApiRequest();\n } else if (entity.type === 'service-policies' && entity.subtype === 'bind') {\n entity.cliCommand = this.bindPolicyCliCommand;\n entity.apiRequest = this.getBindApiRequest();\n }\n });\n });\n }\n\n showSummary() {\n const interceptSummary = {\n name: this.interceptConfigApiData.name,\n type: 'configs',\n subtype: 'intercept',\n apiData: this.interceptConfigApiData,\n cliCommand: this.interceptConfigCliCommand,\n apiRequest: '',\n apiUrl: this.interceptConfigApiUrl,\n status: 'loading',\n retry: this.createInterceptConfig.bind(this),\n };\n const hostSummary = {\n name: this.hostConfigApiData.name,\n type: 'configs',\n subtype: 'host',\n apiData: this.hostConfigApiData,\n cliCommand: this.hostConfigCliCommand,\n apiRequest: '',\n apiUrl: this.hostConfigApiUrl,\n status: 'loading',\n retry: this.createHostConfig.bind(this)\n };\n const summaryData: any = [\n {\n title: 'Services',\n entities: [\n {\n name: this.serviceApiData.name,\n type: 'services',\n apiData: this.serviceApiData,\n cliCommand: this.serviceCliCommand,\n apiRequest: '',\n apiUrl: this.serviceApiUrl,\n status: 'loading',\n retry: this.createService.bind(this)\n }\n ]\n },\n {\n title: 'Service Policies',\n entities: [\n {\n name: this.dialPolicyApiData.name,\n type: 'service-policies',\n subtype: 'dial',\n apiData: this.dialPolicyApiData,\n cliCommand: this.dialPolicyCliCommand,\n apiRequest: '',\n apiUrl: this.dialPolicyApiUrl,\n status: 'loading',\n retry: (summaryData) => { this.createPolicy(summaryData, 'Dial') }\n },\n {\n name: this.bindPolicyApiData.name,\n type: 'service-policies',\n subtype: 'bind',\n apiData: this.bindPolicyApiData,\n cliCommand: this.bindPolicyCliCommand,\n apiRequest: '',\n apiUrl: this.bindPolicyApiUrl,\n status: 'loading',\n retry: (summaryData) => { this.createPolicy(summaryData, 'Bind') }\n }\n ]\n }\n ];\n if (!this.sdkOnlyDial && !this.sdkOnlyBind) {\n summaryData.splice(0,0,{\n title: 'Configurations',\n entities: [interceptSummary, hostSummary]\n });\n } else if (!this.sdkOnlyDial) {\n summaryData.splice(0,0,{\n title: 'Configurations',\n entities: [interceptSummary]\n });\n } else if (!this.sdkOnlyBind) {\n summaryData.splice(0,0,{\n title: 'Configurations',\n entities: [hostSummary]\n });\n }\n const data = {\n summaryData: summaryData\n };\n this.dialogRef = this.dialogForm.open(CreationSummaryDialogComponent, {\n data: data,\n autoFocus: false,\n });\n this.dialogRef.afterClosed().subscribe((result) => {\n if (result === 'new') {\n this.initFormData();\n } else if (result === 'cancel') {\n /// Do nothing, stay on page\n } else {\n this.closeModal(true, true, '');\n }\n });\n return summaryData;\n }\n\n async createInterceptConfig(summaryData) {\n if (this.sdkOnlyDial) {\n return;\n }\n let status;\n this.interceptIncrement++;\n let postFix = '';\n if (this.interceptIncrement > 0) {\n postFix = '_' + this.interceptIncrement;\n }\n this.interceptConfigApiData.name = this.interceptConfigApiData.name + postFix;\n const interceptConfigResult: any = await this.zitiService.post('configs', this.interceptConfigApiData, true).catch((result) => {\n return result;\n });\n if (interceptConfigResult.error) {\n status = 'error';\n } else {\n this.interceptConfigId = interceptConfigResult.id ? interceptConfigResult.id : interceptConfigResult.data.id;\n this.serviceApiData.configs.push(this.interceptConfigId);\n this.interceptConfigCliCommand = `ziti edge create config '${this.interceptConfigApiData.name}' '${this.interceptConfigApiData.configTypeId}' '${JSON.stringify(this.interceptConfigApiData.data)}'`;\n status = 'done';\n this.interceptIncrement = -1;\n }\n summaryData[0].entities[0].status = status;\n }\n\n async createHostConfig(summaryData) {\n if (this.sdkOnlyBind) {\n return;\n }\n let status;\n this.hostIncrement++;\n let postFix = '';\n if (this.hostIncrement > 0) {\n postFix = '_' + this.hostIncrement;\n }\n this.hostConfigApiData.name = this.hostConfigApiData.name + postFix;\n const hostConfigResult: any = await this.zitiService.post('configs', this.hostConfigApiData, true).catch((result) => {\n return result;\n });\n if (hostConfigResult.error) {\n status = 'error';\n } else {\n this.hostConfigId = hostConfigResult.id ? hostConfigResult.id : hostConfigResult.data.id;\n this.serviceApiData.configs.push(this.hostConfigId);\n this.hostConfigCliCommand = `ziti edge create config '${this.hostConfigApiData.name}' '${this.hostConfigApiData.configTypeId}' '${JSON.stringify(this.hostConfigApiData.data)}'`;\n status = 'done';\n this.hostIncrement = -1;\n }\n if (this.sdkOnlyDial) {\n summaryData[0].entities[0].status = status;\n summaryData[0].entities[0].apiData = this.hostConfigApiData;\n } else {\n summaryData[0].entities[1].status = status;\n summaryData[0].entities[0].apiData = this.hostConfigApiData;\n }\n }\n\n async createService(summaryData) {\n this.serviceIncrement++;\n let postFix = '';\n if (this.serviceIncrement > 0) {\n postFix = '_' + this.serviceIncrement;\n }\n this.serviceApiData.name = this.serviceApiData.name + postFix;\n const serviceResult: any = await this.zitiService.post('services', this.serviceApiData, true).catch((result) => {\n return result;\n });\n let serviceStatus;\n if (serviceResult.error) {\n serviceStatus = 'error';\n } else {\n this.serviceId = serviceResult.id ? serviceResult.id : serviceResult.data.id;\n serviceStatus = 'done';\n let cliConfigIds = '';\n if (!this.sdkOnlyDial && !this.sdkOnlyBind) {\n cliConfigIds = `--configs '${this.interceptConfigId},${this.hostConfigId}'`;\n } else if (!this.sdkOnlyBind && this.sdkOnlyBind) {\n cliConfigIds = `--configs '${this.interceptConfigId}'`;\n } else if (this.sdkOnlyBind && !this.sdkOnlyBind) {\n cliConfigIds = `--configs '${this.interceptConfigId}'`;\n }\n this.serviceCliCommand = `ziti edge create service '${this.serviceApiData.name}' ${cliConfigIds}`\n this.serviceIncrement = -1;\n }\n const summaryIndex = (this.sdkOnlyDial && this.sdkOnlyBind) ? 0 : 1;\n summaryData[summaryIndex].entities[0].status = serviceStatus;\n }\n\n async createPolicy(summaryData, type = 'Dial') {\n let policyApiData, roleAttributes, namedAttributes;\n if (type === 'Dial') {\n this.dialIncrement++;\n let postFix = '';\n if (this.dialIncrement > 0) {\n postFix = '_' + this.dialIncrement;\n }\n this.dialPolicyApiData.name = this.dialPolicyApiData.name + postFix;\n policyApiData = this.dialPolicyApiData;\n roleAttributes = this.dialPolicyRoleAttributes;\n namedAttributes = this.dialPolicyNamedAttributes;\n } else {\n this.bindIncrement++;\n let postFix = '';\n if (this.bindIncrement > 0) {\n postFix = '_' + this.bindIncrement;\n }\n this.bindPolicyApiData.name = this.bindPolicyApiData.name + postFix;\n policyApiData = this.bindPolicyApiData;\n roleAttributes = this.bindPolicyRoleAttributes;\n namedAttributes = this.bindPolicyNamedAttributes;\n }\n\n policyApiData.serviceRoles = [`@${this.serviceId}`];\n let cliRoles = '';\n let status = '';\n policyApiData.identityRoles = namedAttributes.map((name) => {\n cliRoles += '@' + this.identitiesNameIdMap[name] + ',';\n return '@' + this.identitiesNameIdMap[name];\n });\n policyApiData.identityRoles = [...policyApiData.identityRoles, ...roleAttributes.map((role) => {\n cliRoles += '#' + role + ',';\n return '#' + role;\n })];\n cliRoles = cliRoles.slice(0, -1);\n const dialPolicyResult = await this.zitiService.post('service-policies', policyApiData).catch((result) => {\n return result;\n });\n if (dialPolicyResult.error) {\n status = 'error';\n } else {\n status = 'done';\n }\n const summaryIndex = (this.sdkOnlyDial && this.sdkOnlyBind) ? 1 : 2;\n const entityIndex = type === 'Dial' ? 0 : 1;\n summaryData[summaryIndex].entities[entityIndex].status = status;\n const cliCommand = `ziti edge create service-policy '${policyApiData.name}' ${type} --semantic AnyOf --service-roles '@${this.serviceId}' --identity-roles '${cliRoles}'`;\n if (type === 'Dial') {\n this.dialPolicyCliCommand = cliCommand;\n if (status === 'done') {\n this.dialIncrement = -1;\n } else {\n this.bindIncrement = -1;\n }\n } else {\n this.bindPolicyCliCommand = cliCommand;\n }\n }\n\n validate() {\n this.errors = {};\n this.validateServiceName();\n this.validateInterceptAddress();\n this.validateInterceptPort();\n this.validateHostAddress();\n this.validateHostPort();\n this.validateDialIdentities()\n this.validateBindIdentities();\n return isEmpty(this.errors);\n }\n\n validateServiceName() {\n if (isEmpty(this.serviceApiData.name)) {\n this.errors.name = true;\n } else {\n unset(this.errors, 'name');\n }\n }\n\n validateInterceptAddress() {\n if (this.sdkOnlyDial) {\n unset(this.errors, 'interceptAddress');\n unset(this.errors, 'interceptAddressFormat');\n return;\n }\n if (isEmpty(this.interceptConfigApiData.data.addresses) || isEmpty(this.interceptConfigApiData.data.addresses[0])) {\n this.errors.interceptAddress = true;\n } else if (!this.validationService.isValidInterceptHost(this.interceptConfigApiData.data.addresses[0])) {\n this.errors.interceptAddress = true;\n this.errors.interceptAddressFormat = true;\n } else {\n unset(this.errors, 'interceptAddress');\n unset(this.errors, 'interceptAddressFormat');\n }\n }\n\n validateInterceptPort() {\n if (this.sdkOnlyDial) {\n unset(this.errors, 'interceptPort');\n return;\n }\n if (isEmpty(this.interceptConfigApiData.data.portRanges)) {\n this.errors.interceptPort = true;\n } else if (this.validationService.validatePortRanges(this.interceptConfigApiData.data.portRanges)) {\n this.errors.interceptPort = true;\n } else {\n unset(this.errors, 'interceptPort');\n }\n }\n\n validateHostAddress() {\n if (!this.sdkOnlyBind && isEmpty(this.hostConfigApiData.data.address)) {\n this.errors.hostAddress = true;\n } else {\n unset(this.errors, 'hostAddress');\n }\n }\n\n validateHostPort() {\n if (this.sdkOnlyBind) {\n unset(this.errors, 'hostPort');\n return;\n }\n if (isNil(this.hostConfigApiData.data.port) || isNaN(this.hostConfigApiData.data.port)) {\n this.errors.hostPort = true;\n } else if (!this.validationService.isValidPort(this.hostConfigApiData.data.port)) {\n this.errors.hostPort = true;\n } else {\n unset(this.errors, 'hostPort');\n }\n }\n\n validateDialIdentities() {\n if (isEmpty([...this.dialPolicyNamedAttributes, ...this.dialPolicyRoleAttributes])) {\n this.errors.dialIdentities = true;\n } else {\n unset(this.errors, 'dialIdentities');\n }\n }\n\n validateBindIdentities() {\n if (isEmpty([...this.bindPolicyNamedAttributes, ...this.bindPolicyRoleAttributes])) {\n this.errors.bindIdentities = true;\n } else {\n unset(this.errors, 'bindIdentities');\n }\n }\n\n getServicesApiRequest() {\n return `curl '${this.controllerDomain}/edge/management/v1/services' \\\\\n -H 'accept: application/json, text/plain, */*' \\\\\n -H 'content-type: application/json' \\\\\n -H 'zt-session: ${this.zitiSessionId}' \\\\\n --data-raw '${JSON.stringify(this.serviceApiData)}' \\\\`\n }\n\n getInterceptConfigApiRequest() {\n return `curl '${this.controllerDomain}/edge/management/v1/configs' \\\\\n -H 'accept: application/json, text/plain, */*' \\\\\n -H 'content-type: application/json' \\\\\n -H 'zt-session: ${this.zitiSessionId}' \\\\\n --data-raw '${JSON.stringify(this.interceptConfigApiData)}' \\\\`\n }\n\n getHostConfigApiRequest() {\n return `curl '${this.controllerDomain}/edge/management/v1/configs' \\\\\n -H 'accept: application/json, text/plain, */*' \\\\\n -H 'content-type: application/json' \\\\\n -H 'zt-session: ${this.zitiSessionId}' \\\\\n --data-raw '${JSON.stringify(this.hostConfigApiData)}' \\\\`\n }\n\n getDialApiRequest() {\n return `curl '${this.controllerDomain}/edge/management/v1/service-policies' \\\\\n -H 'accept: application/json, text/plain, */*' \\\\\n -H 'content-type: application/json' \\\\\n -H 'zt-session: ${this.zitiSessionId}' \\\\\n --data-raw '${JSON.stringify(this.dialPolicyApiData)}' \\\\`;\n }\n\n getBindApiRequest() {\n return `curl '${this.controllerDomain}/edge/management/v1/service-policies' \\\\\n -H 'accept: application/json, text/plain, */*' \\\\\n -H 'content-type: application/json' \\\\\n -H 'zt-session: ${this.zitiSessionId}' \\\\\n --data-raw '${JSON.stringify(this.bindPolicyApiData)}' \\\\`;\n }\n\n override checkDataChange() {\n const serviceDataChange = !isEqual(this.initServiceApiData, this.serviceApiData);\n const interceptDataChange = !isEqual(this.initInterceptConfigApiData.data, this.interceptConfigApiData.data);\n const hostDataChange = !isEqual(this.initHostConfigApiData.data, this.hostConfigApiData.data);\n const dialDataChange = !isEqual(this.initDialPolicyApiData, this.dialPolicyApiData);\n const bindDataChange = !isEqual(this.initBindPolicyApiData, this.bindPolicyApiData);\n const dataChange = serviceDataChange !== this.serviceDataChange || interceptDataChange !== this.interceptDataChange || hostDataChange !== this.hostDataChange ||\n dialDataChange !== this.dialDataChange || bindDataChange !== this.bindDataChange;\n if (dataChange) {\n this.serviceDataChange = serviceDataChange;\n this.interceptDataChange = interceptDataChange;\n this.hostDataChange = hostDataChange;\n this.dialDataChange = dialDataChange;\n this.bindDataChange = bindDataChange;\n this.dataChange.emit(dataChange);\n }\n this._dataChange = serviceDataChange || interceptDataChange || hostDataChange || dialDataChange || bindDataChange;\n app.isDirty = false;\n }\n\n clear(): void {\n }\n}\n","<div class=\"projectable-form-wrapper simple-service-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(true, false, 'cards', $event)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"showForm ? 'Create a Simple Service' : 'Service Creation Summary'\"\n [actionButtonText]=\"'Save'\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"simple-service-form-container projectable-form-container\">\n <div class=\"form-group-column three-fifths\" *ngIf=\"showForm\">\n <div id=\"InlineServiceArea\" class=\"anyadd\">\n <div class=\"simple-service-inputs\">\n <lib-form-field-container [title]=\"'Service Details'\">\n <div class=\"form-field-input-group service-group\">\n <div class=\"form-field-sub-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">Service Name</span>\n </div>\n <input\n class=\"form-field-input\"\n placeholder=\"Name this service\"\n autofocus\n #nameFieldInput\n [ngClass]=\"{error: errors.name}\"\n [(ngModel)]=\"serviceApiData.name\"\n (keyup)=\"serviceNameChanged($event)\"\n (change)=\"validateServiceName()\"\n />\n </div>\n <div class=\"form-field-sub-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">SELECT OR CREATE SERVICE ATTRIBUTES</span>\n </div>\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"serviceApiData.roleAttributes\"\n [availableRoleAttributes]=\"serviceRoleAttributes\"\n [placeholder]=\"'Add attributes to group services'\"\n ></lib-tag-selector>\n </div>\n </div>\n </lib-form-field-container>\n </div>\n </div>\n </div>\n <div class=\"simple-service-center-content\" *ngIf=\"showForm\">\n <div class=\"form-group-row\">\n <lib-form-field-container\n [title]=\"'ACCESSING CONFIGURATION'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'How will client applications use this service? Specify a hostname/IP and port, or use the "SDK Only" toggle for an application embedded configuration.'\"\n >\n <div class=\"form-field-input-group accessing-group\">\n <div class=\"form-field-sub-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">What identities can access this service?</span>\n </div>\n <lib-tag-selector\n [(selectedNamedAttributes)]=\"dialPolicyNamedAttributes\"\n [(selectedRoleAttributes)]=\"dialPolicyRoleAttributes\"\n [availableNamedAttributes]=\"identityNamedAttributes\"\n [availableRoleAttributes]=\"identityRoleAttributes\"\n [placeholder]=\"'Select identity attributes to grant access'\"\n [hasError]=\"errors.dialIdentities\"\n (selectedNamedAttributesChange)=\"validateDialIdentities()\"\n (selectedRoleAttributesChange)=\"validateDialIdentities()\"\n (filterChange)=\"getIdentityNamedAttributes($event)\"\n ></lib-tag-selector>\n </div>\n <div class=\"form-field-sub-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">How will the service be accessed?</span>\n </div>\n <div class=\"grid addressPort\">\n <div class=\"config-item-container\">\n <span class=\"config-item-label\">SDK ONLY</span>\n <div\n class=\"sdk-toggle form-field-toggle\"\n >\n <div class=\"switchGrid\">\n <div>\n <div\n (click)=\"toggleSdkOnlyDial()\"\n [ngClass]=\"{ on: sdkOnlyDial }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!sdkOnlyDial\" class=\"on-label\">YES</span>\n <span [hidden]=\"sdkOnlyDial\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"config-item-container\" [ngClass]=\"{disabled: sdkOnlyDial}\">\n <div class=\"config-hostname-label\">\n <span class=\"config-item-label\">HOSTNAME / IP</span>\n <div\n class=\"form-field-info infoicon\"\n matTooltip=\"Accessing hostnames must include a '.'\"\n matTooltipPosition=\"above\"\n ></div>\n <span *ngIf=\"errors.interceptAddressFormat\" class=\"error-label\">Accessing hostnames must include a '.'</span>\n </div>\n <input id=\"HowTo\" type=\"text\" maxlength=\"100\" data-i18n=\"EgHost\" (change)=\"validateInterceptAddress()\" [ngClass]=\"{error: errors.interceptAddress}\" [placeholder]=\"sdkOnlyDial ? '' : 'e.g. myservice.ziti'\" [(ngModel)]=\"sdkOnlyDial ? '' : interceptConfigApiData.data.addresses[0]\">\n </div>\n <div class=\"config-item-container\" [ngClass]=\"{disabled: sdkOnlyDial}\">\n <span class=\"config-item-label\">PORT</span>\n <input id=\"HowToPort\" type=\"number\" maxlength=\"10\" (change)=\"validateInterceptPort()\" [ngClass]=\"{error: errors.interceptPort}\" [placeholder]=\"sdkOnlyDial ? '' : 443\" (keyup)=\"interceptPortChanged($event)\" [(ngModel)]=\"sdkOnlyDial ? '' : interceptPort\">\n </div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'HOSTING CONFIGURATION'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Where should traffic for this service be sent? Specify a protocol, hostname/IP, and port, or use the "SDK Only" toggle for an application embedded configuration.'\"\n\n >\n <div class=\"form-field-input-group hosting-group\">\n <div class=\"form-field-sub-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">What identities can host this service?</span>\n </div>\n <lib-tag-selector\n [(selectedNamedAttributes)]=\"bindPolicyNamedAttributes\"\n [(selectedRoleAttributes)]=\"bindPolicyRoleAttributes\"\n [availableNamedAttributes]=\"identityNamedAttributes\"\n [availableRoleAttributes]=\"identityRoleAttributes\"\n [placeholder]=\"'Select identity attributes'\"\n [hasError]=\"errors.bindIdentities\"\n (selectedNamedAttributesChange)=\"validateBindIdentities()\"\n (selectedRoleAttributesChange)=\"validateBindIdentities()\"\n ></lib-tag-selector>\n </div>\n <div class=\"form-field-sub-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">Where should traffic be sent?</span>\n </div>\n <div class=\"grid addressFull\">\n <div class=\"config-item-container\">\n <span class=\"config-item-label\">SDK ONLY</span>\n <div\n class=\"sdk-toggle form-field-toggle\"\n >\n <div class=\"switchGrid\">\n <div>\n <div\n (click)=\"toggleSdkOnlyBind()\"\n [ngClass]=\"{ on: sdkOnlyBind }\"\n class=\"toggle\"\n >\n <span [hidden]=\"!sdkOnlyBind\" class=\"on-label\">YES</span>\n <span [hidden]=\"sdkOnlyBind\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"config-item-container\" [ngClass]=\"{disabled: sdkOnlyBind}\">\n <span class=\"config-item-label\">PROTOCOL</span>\n <select id=\"HostedProtocol\" (change)=\"hostProtocolsChanged($event)\" [(ngModel)]=\"sdkOnlyBind ? '' : hostProtocol\">\n <option value=\"tcp\">TCP</option>\n <option value=\"udp\" >UDP</option>\n <option value=\"both\" >TCP/UDP</option>\n </select>\n </div>\n <div class=\"config-item-container\" [ngClass]=\"{disabled: sdkOnlyBind}\">\n <span class=\"config-item-label\">HOSTNAME / IP</span>\n <input id=\"HostedHost\" type=\"text\" maxlength=\"100\" data-i18n=\"EgHost\" (change)=\"validateHostAddress()\" [ngClass]=\"{error: errors.hostAddress}\" [placeholder]=\"sdkOnlyBind ? '' : 'e.g. myservice.ziti'\" [(ngModel)]=\"sdkOnlyBind ? '' : hostConfigApiData.data.address\">\n </div>\n <div class=\"config-item-container\" [ngClass]=\"{disabled: sdkOnlyBind}\">\n <span class=\"config-item-label\">PORT</span>\n <input id=\"HostedPort\" type=\"number\" maxlength=\"10\" (change)=\"validateHostPort()\" [ngClass]=\"{error: errors.hostPort}\" [placeholder]=\"sdkOnlyBind ? '' : 443\" [(ngModel)]=\"sdkOnlyBind ? '' : hostConfigApiData.data.port\">\n </div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n </div>\n </div>\n </div>\n</div>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, OnInit, OnDestroy} from '@angular/core';\nimport {ServicesPageService} from \"../services/services-page.service\";\nimport {DataTableFilterService} from \"../../features/data-table/data-table-filter.service\";\nimport {TabNameService} from \"../../services/tab-name.service\";\nimport {ConsoleEventsService} from \"../../services/console-events.service\";\nimport {ZAC_WRAPPER_SERVICE, ZacWrapperServiceClass} from \"../../features/wrappers/zac-wrapper-service.class\";\nimport {ListPageComponent} from \"../../shared/list-page-component.class\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {ConfirmComponent} from \"../../features/confirm/confirm.component\";\n\n@Component({\n selector: 'lib-services',\n templateUrl: './services-page.component.html',\n styleUrls: ['./services-page.component.scss']\n})\nexport class ServicesPageComponent extends ListPageComponent implements OnInit, OnDestroy {\n\n serviceType = '';\n serviceRoleAttributes: any[] = [];\n identityRoleAttributes: any[] = [];\n formDataChanged = false;\n isLoading: boolean;\n tabs: { url: string; label: string }[];\n title = 'Manage Services';\n\n constructor(\n public override svc: ServicesPageService,\n filterService: DataTableFilterService,\n dialogForm: MatDialog,\n private tabNames: TabNameService,\n consoleEvents: ConsoleEventsService,\n @Inject(ZAC_WRAPPER_SERVICE)private zacWrapperService: ZacWrapperServiceClass,\n ) {\n super(filterService, svc, consoleEvents, dialogForm);\n let userLang = navigator.language || 'en-us';\n userLang = userLang.toLowerCase();\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.getServiceRoleAttributes();\n this.tabs = this.tabNames.getTabs('services');\n }\n\n headerActionClicked(action: string) {\n switch(action) {\n case 'add':\n this.svc.serviceType = '';\n this.svc.openUpdate();\n break;\n case 'edit':\n this.svc.openUpdate();\n break;\n case 'delete':\n const selectedItems = this.rowData.filter((row) => {\n return row.selected;\n });\n const label = selectedItems.length > 1 ? 'services' : 'service';\n this.openBulkDelete(selectedItems, label);\n break;\n default:\n }\n }\n\n tableAction(event: any) {\n switch(event?.action) {\n case 'toggleAll':\n case 'toggleItem':\n this.itemToggled(event.item)\n break;\n case 'update':\n this.svc.serviceType = 'advanced';\n this.svc.openUpdate(event.item);\n break;\n case 'create':\n this.svc.openUpdate();\n break;\n case 'delete':\n this.deleteItem(event.item)\n break;\n case 'download-all':\n this.svc.downloadAllItems();\n break;\n case 'download-selected':\n this.svc.downloadItems(this.selectedItems);\n break;\n default:\n break;\n }\n }\n\n deleteItem(item: any) {\n this.openBulkDelete([item], 'service');\n }\n\n getServiceRoleAttributes() {\n this.svc.getServiceRoleAttributes().then((result: any) => {\n this.serviceRoleAttributes = result.data;\n });\n this.svc.getIdentityRoleAttributes().then((result: any) => {\n this.identityRoleAttributes = result.data;\n });\n }\n\n dataChanged(event) {\n this.formDataChanged = event;\n }\n\n get showCardList() {\n return this.svc.sideModalOpen && this.svc.serviceType === '';\n }\n\n closeModal(event?) {\n if (event?.data === 'cards') {\n this.svc.serviceType = '';\n return;\n }\n this.svc.serviceType = '';\n this.svc.sideModalOpen = false;\n if(event?.refresh) {\n this.refreshData();\n this.getServiceRoleAttributes();\n }\n }\n\n serviceTypeSelected(event) {\n this.svc.serviceType = event;\n }\n\n}\n","<div class=\"ziti-page-container ziti-services-container\">\n <lib-list-page-header [title]=\"'Services'\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'services'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [currentPage]=\"currentPage\"\n [emptyMsg]=\"'No Services defined, Click the plus to add a service.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n [headerActions]=\"svc.tableHeaderActions\"\n >\n </lib-data-table>\n</div>\n<lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-card-list\n *ngIf=\"showCardList\"\n (close)=\"closeModal($event)\"\n (selected)=\"serviceTypeSelected($event)\"\n ></lib-card-list>\n <lib-service-form\n *ngIf=\"svc.sideModalOpen && svc.serviceType === 'advanced'\"\n [formData]=\"svc.selectedService\"\n [serviceRoleAttributes]=\"serviceRoleAttributes\"\n (close)=\"closeModal($event)\"\n (dataChange)=\"dataChanged($event)\"\n ></lib-service-form>\n <lib-simple-service\n *ngIf=\"svc.sideModalOpen && svc.serviceType === 'simple'\"\n (close)=\"closeModal($event)\"\n (dataChange)=\"dataChanged($event)\"\n [serviceRoleAttributes]=\"serviceRoleAttributes\"\n [identityRoleAttributes]=\"identityRoleAttributes\"\n ></lib-simple-service>\n</lib-side-modal>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injector} from \"@angular/core\";\nimport {SettingsService, SETTINGS_SERVICE} from \"./services/settings.service\";\nimport {ZAC_LOGIN_SERVICE, LoginServiceClass} from \"./services/login-service.class\";\n\nexport function onAppInit(injector: Injector): () => Promise<any> {\n const loginService = injector.get(ZAC_LOGIN_SERVICE, LoginServiceClass);\n const settingsService = injector.get(SETTINGS_SERVICE, SettingsService);\n settingsService.init()\n return () => loginService.init();\n}\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {GrowlerModel} from \"./growler.model\";\nimport {GrowlerService} from \"./growler.service\";\nimport {Subscription} from \"rxjs\";\n\n@Component({\n selector: 'lib-growler',\n template: `\n <div *ngIf=\"show\" [ngClass]=\"{ open: show }\" class=\"growler {{ level }}\" id=\"Growler\">\n <div class=\"title\">{{ title }}</div>\n <div class=\"subtitle\">{{ subtitle }}</div>\n <div [innerHTML]=\"content\" class=\"content\"></div>\n <div class=\"icon\"></div>\n </div>`,\n styleUrls: ['./growler.component.scss']\n})\nexport class GrowlerComponent implements OnInit, OnDestroy {\n @Input() title = '';\n @Input() subtitle = '';\n @Input() level = '';\n @Input() content = '';\n @Input() show = false;\n\n private growlerServiceSub: Subscription;\n\n constructor(private growlerService: GrowlerService) {\n\n }\n\n ngOnInit(): void {\n this.growlerServiceSub = this.growlerService.data$.subscribe((data) => {\n this.showGrowler(data);\n });\n }\n\n ngOnDestroy(): void {\n if(this.growlerServiceSub) this.growlerServiceSub.unsubscribe();\n }\n\n private showGrowler(data: GrowlerModel) {\n this.title = data.title;\n this.subtitle = data.subtitle;\n this.level = data.level;\n this.content = data.content;\n this.show = true;\n setTimeout(() => {\n this.show = false;\n }, 5000);\n\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport { NgModule } from '@angular/core';\nimport {GrowlerComponent} from \"./growler.component\";\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\n\n@NgModule({\n imports: [CommonModule,FormsModule],\n declarations: [GrowlerComponent],\n exports: [GrowlerComponent],\n})\nexport class GrowlerModule {}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Injectable, Inject} from \"@angular/core\";\nimport {cloneDeep, isEmpty} from 'lodash';\nimport moment from 'moment';\nimport {DataTableFilterService, FilterObj} from \"../../features/data-table/data-table-filter.service\";\nimport {ListPageServiceClass} from \"../../shared/list-page-service.class\";\nimport {\n TableColumnDefaultComponent\n} from \"../../features/data-table/column-headers/table-column-default/table-column-default.component\";\nimport {CallbackResults} from \"../../features/list-page-features/list-page-form/list-page-form.component\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\nimport {CsvDownloadService} from \"../../services/csv-download.service\";\nimport {Service} from \"../../models/service\";\nimport {unset} from \"lodash\";\nimport {GrowlerModel} from \"../../features/messaging/growler.model\";\nimport {GrowlerService} from \"../../features/messaging/growler.service\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {SettingsServiceClass} from \"../../services/settings-service.class\";\nimport {ExtensionService, SHAREDZ_EXTENSION} from \"../../features/extendable/extensions-noop.service\";\n\nconst CSV_COLUMNS = [\n {label: 'Name', path: 'name'},\n {label: 'Created At', path: 'createdAt'}\n];\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServicePoliciesPageService extends ListPageServiceClass {\n\n private paging = this.DEFAULT_PAGING;\n public modalType = 'service-policy';\n\n serviceType = '';\n selectedServicePolicy: any = new Service();\n\n serviceRoleAttributes = [];\n serviceNamedAttributes = [];\n serviceNamedAttributesMap = {};\n selectedServiceRoleAttributes = [];\n selectedServiceNamedAttributes = [];\n\n identityRoleAttributes = [];\n identityNamedAttributes = [];\n identityNamedAttributesMap = {};\n selectedIdentityRoleAttributes = [];\n selectedIdentityNamedAttributes = [];\n\n postureRoleAttributes = [];\n postureNamedAttributes = [];\n postureNamedAttributesMap = {};\n selectedPostureRoleAttributes = [];\n selectedPostureNamedAttributes = [];\n\n columnFilters: any = {\n name: '',\n os: '',\n createdAt: '',\n };\n\n override menuItems = [\n {name: 'Edit', action: 'update'},\n {name: 'Delete', action: 'delete'},\n ]\n\n override tableHeaderActions = [\n {name: 'Download All', action: 'download-all'},\n {name: 'Download Selected', action: 'download-selected'},\n ]\n\n resourceType = 'service-policies';\n constructor(\n @Inject(SETTINGS_SERVICE) settings: SettingsServiceClass,\n filterService: DataTableFilterService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n override csvDownloadService: CsvDownloadService,\n private growlerService: GrowlerService,\n private dialogForm: MatDialog,\n @Inject(SHAREDZ_EXTENSION) private extService: ExtensionService\n ) {\n super(settings, filterService, csvDownloadService, extService);\n this.filterService.filtersChanged.subscribe(filters => {\n let serviceFilter, identityFilter, postureFilter;\n filters.forEach((filter) => {\n switch (filter.columnId) {\n case 'serviceRoles':\n serviceFilter = true;\n break;\n case 'identityRoles':\n identityFilter = true;\n break;\n case 'postureRoles':\n postureFilter = true;\n break;\n }\n });\n if (!serviceFilter) {\n this.selectedServiceRoleAttributes = [];\n this.selectedServiceNamedAttributes = [];\n }\n if (!identityFilter) {\n this.selectedIdentityRoleAttributes = [];\n this.selectedIdentityNamedAttributes = [];\n }\n });\n }\n\n validate = (formData): Promise<CallbackResults> => {\n return Promise.resolve({ passed: true});\n }\n\n initTableColumns(): any {\n const createdAtHeaderComponentParams = {\n filterType: 'DATETIME',\n };\n const self = this;\n const serviceRolesHeaderComponentParams = {\n filterType: 'ATTRIBUTE',\n enableSorting: true,\n getRoleAttributes: () => {\n return self.serviceRoleAttributes;\n },\n getNamedAttributes: () => {\n return self.serviceNamedAttributes;\n },\n getSelectedRoleAttributes: () => {\n return self.selectedServiceRoleAttributes;\n },\n getSelectedNamedAttributes: () => {\n return self.selectedServiceNamedAttributes;\n },\n setSelectedRoleAttributes: (attributes) => {\n self.selectedServiceRoleAttributes = attributes;\n },\n setSelectedNamedAttributes: (attributes) => {\n self.selectedServiceNamedAttributes = attributes;\n },\n getNamedAttributesMap: () => {\n return self.serviceNamedAttributesMap;\n }\n };\n const identityRolesHeaderComponentParams = {\n filterType: 'ATTRIBUTE',\n enableSorting: true,\n getRoleAttributes: () => {\n return self.identityRoleAttributes;\n },\n getNamedAttributes: () => {\n return self.identityNamedAttributes;\n },\n getSelectedRoleAttributes: () => {\n return self.selectedIdentityRoleAttributes;\n },\n getSelectedNamedAttributes: () => {\n return self.selectedIdentityNamedAttributes;\n },\n setSelectedRoleAttributes: (attributes) => {\n self.selectedIdentityRoleAttributes = attributes;\n },\n setSelectedNamedAttributes: (attributes) => {\n self.selectedIdentityNamedAttributes = attributes;\n },\n getNamedAttributesMap: () => {\n return self.identityNamedAttributesMap;\n }\n };\n\n const postureRolesHeaderComponentParams = {\n filterType: 'ATTRIBUTE',\n enableSorting: true,\n getRoleAttributes: () => {\n return self.postureRoleAttributes;\n },\n getNamedAttributes: () => {\n return self.postureNamedAttributes;\n },\n getSelectedRoleAttributes: () => {\n return self.selectedPostureRoleAttributes;\n },\n getSelectedNamedAttributes: () => {\n return self.selectedPostureNamedAttributes;\n },\n setSelectedRoleAttributes: (attributes) => {\n self.selectedPostureRoleAttributes = attributes;\n },\n setSelectedNamedAttributes: (attributes) => {\n self.selectedPostureNamedAttributes = attributes;\n },\n getNamedAttributesMap: () => {\n return self.postureNamedAttributesMap;\n }\n };\n\n const semanticHeaderComponentParams = {\n filterType: 'SELECT',\n enableSorting: true,\n filterOptions: [\n { label: 'Any Of', value: 'AnyOf', columnId: 'semantic'},\n { label: 'All Of', value: 'AllOf', columnId: 'semantic' },\n ],\n getFilterOptions: () => {\n return semanticHeaderComponentParams.filterOptions;\n }\n };\n\n const typeHeaderComponentParams = {\n filterType: 'SELECT',\n enableSorting: true,\n filterOptions: [\n { label: 'Dial', value: 'Dial', columnId: 'type' },\n { label: 'Bind', value: 'Bind', columnId: 'type' },\n ],\n getFilterOptions: () => {\n return typeHeaderComponentParams.filterOptions;\n }\n };\n\n return [\n {\n colId: 'name',\n field: 'name',\n headerName: 'Name',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: this.headerComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = 'advanced';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: this.nameColumnRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: true,\n filter: true,\n sortColumn: this.sort.bind(this),\n sortDir: 'asc',\n width: 300,\n },\n {\n colId: 'serviceRoles',\n field: 'serviceRoles',\n headerName: 'Service Attributes',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: serviceRolesHeaderComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: this.rolesRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: false,\n filter: false,\n },\n {\n colId: 'identityRoles',\n field: 'identityRoles',\n headerName: 'Identity Attributes',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: identityRolesHeaderComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: this.rolesRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: false,\n filter: false,\n },\n {\n colId: 'postureCheckRoles',\n field: 'postureCheckRoles',\n headerName: 'Posture Check Attributes',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: postureRolesHeaderComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: this.rolesRenderer,\n cellClass: 'nf-cell-vert-align tCol',\n sortable: false,\n filter: false,\n },\n {\n colId: 'semantic',\n field: 'semantic',\n headerName: 'Semantic',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: semanticHeaderComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: (row) => {\n return row.data?.semantic === 'AnyOf' ? 'Any Of' : 'All Of';\n },\n cellClass: 'nf-cell-vert-align tCol',\n width: 100,\n },\n {\n colId: 'type',\n field: 'type',\n headerName: 'Type',\n headerComponent: TableColumnDefaultComponent,\n //headerComponentParams: typeHeaderComponentParams,\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n resizable: true,\n cellRenderer: (row) => {\n return row.data?.type;\n },\n cellClass: 'nf-cell-vert-align tCol',\n width: 100,\n },\n {\n colId: 'createdAt',\n field: 'createdAt',\n headerName: 'Created At',\n headerComponent: TableColumnDefaultComponent,\n headerComponentParams: createdAtHeaderComponentParams,\n valueFormatter: this.createdAtFormatter,\n resizable: true,\n sortable: true,\n sortColumn: this.sort.bind(this),\n cellClass: 'nf-cell-vert-align tCol',\n onCellClicked: (data) => {\n if (this.hasSelectedText()) {\n return;\n }\n this.serviceType = '';\n this.openUpdate(data.data);\n },\n hide: true\n }\n ];\n }\n\n getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any> {\n // we can customize filters or sorting here before moving on...\n this.paging.page = page || this.paging.page;\n return super.getTableData('service-policies', this.paging, filters, sort)\n .then((results: any) => {\n return this.processData(results);\n });\n }\n\n private processData(results: any) {\n if (!isEmpty(results?.data)) {\n //pre-process data before rendering\n results.data = this.addActionsPerRow(results);\n }\n if (!isEmpty(results?.meta?.pagination)) {\n this.totalCount = results.meta?.pagination.totalCount;\n }\n return results;\n }\n\n private addActionsPerRow(results: any): any[] {\n return results.data.map((row) => {\n row.actionList = ['update', 'delete'];\n return row;\n });\n }\n\n public getServiceRoleAttributes() {\n return this.zitiService.get('service-role-attributes', {}, []).then((result) => {\n this.serviceRoleAttributes = result.data;\n return result;\n });\n }\n\n public getIdentityNamedAttributes() {\n return this.zitiService.get('identities', {}, []).then((result) => {\n const namedAttributes = result.data.map((identity) => {\n this.identityNamedAttributesMap[identity.name] = identity.id;\n return identity.name;\n });\n this.identityNamedAttributes = namedAttributes;\n return namedAttributes;\n });\n }\n\n public getServiceNamedAttributes() {\n return this.zitiService.get('services', {}, []).then((result) => {\n const namedAttributes = result.data.map((service) => {\n this.serviceNamedAttributesMap[service.name] = service.id;\n return service.name;\n });\n this.serviceNamedAttributes = namedAttributes;\n return namedAttributes;\n });\n }\n\n public getIdentityRoleAttributes() {\n return this.zitiService.get('identity-role-attributes', {}, []).then((result) => {\n this.identityRoleAttributes = result.data;\n return result;\n });\n }\n\n public getPostureNamedAttributes() {\n return this.zitiService.get('posture-checks', {}, []).then((result) => {\n const namedAttributes = result.data.map((postureCheck) => {\n this.postureNamedAttributesMap[postureCheck.name] = postureCheck.id;\n return postureCheck.name;\n });\n this.postureNamedAttributes = namedAttributes;\n return namedAttributes;\n });\n }\n\n downloadAllItems() {\n const paging = cloneDeep(this.paging);\n paging.total = this.totalCount;\n super.getTableData('service-policies', paging, undefined, undefined)\n .then((results: any) => {\n return this.downloadItems(results?.data);\n });\n }\n\n downloadItems(selectedItems) {\n this.csvDownloadService.download(\n 'service-policies',\n selectedItems,\n CSV_COLUMNS,\n false,\n false,\n undefined,\n false\n );\n }\n\n public openUpdate(item?: any) {\n this.modalType = 'service-policies';\n if (item) {\n this.selectedServicePolicy = item;\n this.selectedServicePolicy.badges = [];\n unset(this.selectedServicePolicy, '_links');\n } else {\n this.selectedServicePolicy = new Service();\n }\n this.sideModalOpen = true;\n }\n}\n","export class ServicePolicy {\n name = '';\n serviceRoles: any[] = [];\n identityRoles: any[] = [];\n postureCheckRoles: any[] = [];\n semantic = 'AnyOf';\n type = 'Bind';\n};","import {Injectable, Inject, InjectionToken} from \"@angular/core\";\nimport {isEmpty, unset, keys} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\n\nimport {sortedUniq} from 'lodash';\n\nimport {ServicePolicy} from \"../../../models/service-policy\";\n\nexport const SERVICE_POLICY_EXTENSION_SERVICE = new InjectionToken<any>('SERVICE_POLICY_EXTENSION_SERVICE');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ServicePolicyFormService {\n\n associatedIdentities: any = [];\n associatedIdentityNames: any = [];\n associatedPostureChecks: any = [];\n associatedPostureCheckNames: any = [];\n associatedServices: any = [];\n associatedServiceNames: any = [];\n\n serviceNamedAttributesMap: any = {};\n identityNamedAttributesMap: any = {};\n postureNamedAttributesMap: any = {};\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n private growlerService: GrowlerService,\n @Inject(SERVICE_POLICY_EXTENSION_SERVICE)private extService: ExtensionService\n ) {}\n\n save(formData): Promise<any> {\n const isUpdate = !isEmpty(formData.id);\n const data: any = this.getServicePolicyDataModel(formData, isUpdate);\n const svc = isUpdate ? this.zitiService.patch.bind(this.zitiService) : this.zitiService.post.bind(this.zitiService);\n return svc('service-policies', data, formData.id).then(async (result: any) => {\n const id = result?.data?.id || formData.id;\n let router = await this.zitiService.getSubdata('service-policies', id, '').then((routerData) => {\n return routerData.data;\n });\n return this.extService.formDataSaved(router).then((formSavedResult: any) => {\n const returnVal = {\n data: router,\n close: this.extService.closeAfterSave\n };\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Service Policy ${isUpdate ? 'Updated' : 'Created'}`,\n `Successfully ${isUpdate ? 'updated' : 'created'} Service Policy: ${formData.name}`,\n );\n this.growlerService.show(growlerData);\n return returnVal;\n }).catch((result) => {\n return false;\n });\n }).catch((resp) => {\n let errorMessage;\n if (resp?.error?.error?.cause?.message) {\n errorMessage = resp?.error?.error?.cause?.message;\n } else if (resp?.error?.error?.cause?.reason) {\n errorMessage = resp?.error?.error?.cause?.reason;\n }else if (resp?.error?.message) {\n errorMessage = resp?.error?.message;\n } else {\n errorMessage = 'An unknown error occurred';\n }\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Error Creating Service Policy`,\n errorMessage,\n );\n this.growlerService.show(growlerData);\n throw resp;\n })\n }\n\n getAssociatedServicesByRole(id) {\n this.zitiService.getSubdata('service-policies', id, 'services').then((result: any) => {\n this.associatedServices = result.data;\n this.associatedServiceNames = this.associatedServices.map((svc) => {\n return svc.name;\n });\n });\n }\n\n getAssociatedIdentitiesById(id) {\n this.zitiService.getSubdata('service-policies', id, 'identities').then((result: any) => {\n this.associatedIdentities = result.data;\n this.associatedIdentityNames = this.associatedIdentities.map((ident) => {\n return ident.name;\n });\n });\n }\n\n getAssociatedPostureChecksById(id) {\n this.zitiService.getSubdata('service-policies', id, 'posture-checks').then((result: any) => {\n this.associatedPostureChecks = result.data;\n this.associatedPostureCheckNames = this.associatedPostureChecks.map((postureCheck) => {\n return postureCheck.name;\n });\n });\n }\n\n getAssociatedServicesByAttribute(roleAttributes, namedAttributes) {\n this.associatedServiceNames = [];\n if (isEmpty(roleAttributes)) {\n this.associatedServiceNames = [...namedAttributes];\n return;\n }\n const filters = [\n {\n columnId: \"roleAttributes\",\n filterName: \"Service Attributes\",\n label: \"\",\n type: \"ATTRIBUTE\",\n value: roleAttributes\n }\n ];\n const paging = this.zitiService.DEFAULT_PAGING;\n paging.noSearch = false;\n this.zitiService.get('services', paging, filters).then((result: any) => {\n this.associatedServices = result.data;\n this.associatedServiceNames = this.associatedServices.map((svc) => {\n return svc.name;\n });\n this.associatedServiceNames = [...this.associatedServiceNames, ...namedAttributes];\n this.associatedServiceNames = sortedUniq(this.associatedServiceNames);\n });\n }\n\n getAssociatedIdentitiesByAttribute(roleAttributes, namedAttributes) {\n this.associatedIdentityNames = [];\n if (isEmpty(roleAttributes)) {\n this.associatedIdentityNames = [...namedAttributes];\n return;\n }\n const filters = [\n {\n columnId: \"roleAttributes\",\n filterName: \"Identity Attributes\",\n label: \"\",\n type: \"ATTRIBUTE\",\n value: roleAttributes\n }\n ];\n const paging = this.zitiService.DEFAULT_PAGING;\n paging.noSearch = false;\n this.zitiService.get('identities', paging, filters).then((result: any) => {\n this.associatedIdentities = result.data;\n this.associatedIdentityNames = this.associatedIdentities.map((svc) => {\n return svc.name;\n });\n this.associatedIdentityNames = [...this.associatedIdentityNames, ...namedAttributes];\n this.associatedIdentityNames = sortedUniq(this.associatedIdentityNames);\n });\n }\n\n getAssociatedPostureChecksByAttribute(roleAttributes, namedAttributes) {\n this.associatedPostureCheckNames = [];\n if (isEmpty(roleAttributes)) {\n this.associatedPostureCheckNames = [...namedAttributes];\n return;\n }\n const filters = [\n {\n columnId: \"roleAttributes\",\n filterName: \"Posture Check Attributes\",\n label: \"\",\n type: \"ATTRIBUTE\",\n value: roleAttributes\n }\n ];\n const paging = this.zitiService.DEFAULT_PAGING;\n paging.noSearch = false;\n this.zitiService.get('posture-checks', paging, filters).then((result: any) => {\n this.associatedPostureChecks = result.data;\n this.associatedPostureCheckNames = this.associatedPostureChecks.map((postureCheck) => {\n return postureCheck.name;\n });\n this.associatedPostureCheckNames = [...this.associatedPostureCheckNames, ...namedAttributes];\n this.associatedPostureCheckNames = sortedUniq(this.associatedPostureCheckNames);\n });\n }\n\n getServicePolicyDataModel(formData, isUpdate) {\n const saveModel = new ServicePolicy();\n const modelProperties = keys(saveModel);\n modelProperties.forEach((prop) => {\n switch(prop) {\n default:\n saveModel[prop] = formData[prop];\n }\n });\n return saveModel;\n }\n\n copyToClipboard(val) {\n navigator.clipboard.writeText(val);\n const growlerData = new GrowlerModel(\n 'success',\n 'Success',\n `Text Copied`,\n `API call URL copied to clipboard`,\n );\n this.growlerService.show(growlerData);\n }\n\n getSelectedRoles(roleAttributes, namedAttributes, namedAttributeMap) {\n const prependedRoleAttributes = roleAttributes.map((attr) => {\n return '#' + attr;\n })\n const prependedNamedAttributes = namedAttributes.map((attr) => {\n return '@' + namedAttributeMap[attr];\n })\n return [...prependedRoleAttributes, ...prependedNamedAttributes];\n }\n}","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n OnDestroy,\n Output,\n OnChanges,\n SimpleChanges,\n AfterViewInit,\n Inject\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {ProjectableForm} from \"../projectable-form.class\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../../services/settings.service\";\n\nimport {isEmpty, cloneDeep, invert} from 'lodash';\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../../services/ziti-data.service\";\nimport {GrowlerService} from \"../../messaging/growler.service\";\nimport {ServicePolicyFormService, SERVICE_POLICY_EXTENSION_SERVICE} from './service-policy-form.service';\nimport {MatDialogRef} from \"@angular/material/dialog\";\nimport {ExtensionService} from \"../../extendable/extensions-noop.service\";\nimport {ServicePolicy} from \"../../../models/service-policy\";\nimport {GrowlerModel} from \"../../messaging/growler.model\";\n\n@Component({\n selector: 'lib-service-policy-form',\n templateUrl: './service-policy-form.component.html',\n styleUrls: ['./service-policy-form.component.scss'],\n providers: [\n {\n provide: MatDialogRef,\n useValue: {}\n }\n ]\n})\nexport class ServicePolicyFormComponent extends ProjectableForm implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n @Input() formData: ServicePolicy | any = {};\n @Input() serviceRoleAttributes: any[] = [];\n @Input() serviceNamedAttributes: any[] = [];\n @Input() serviceNamedAttributesMap = {};\n @Input() identityRoleAttributes: any[] = [];\n @Input() identityNamedAttributes: any[] = [];\n @Input() identityNamedAttributesMap = {};\n @Input() postureRoleAttributes: any[] = [];\n @Input() postureNamedAttributes: any[] = [];\n @Input() postureNamedAttributesMap = {};\n @Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n selectedServiceRoleAttributes = [];\n selectedServiceNamedAttributes = [];\n selectedIdentityRoleAttributes = [];\n selectedIdentityNamedAttributes = [];\n selectedPostureRoleAttributes = [];\n selectedPostureNamedAttributes = [];\n\n formView = 'simple';\n isEditing = false;\n isLoading = false;\n servicesLoading = false;\n identitiesLoading = false;\n postureChecksLoading = false;\n\n showMore = false;\n settings: any = {};\n subscription: Subscription = new Subscription();\n\n constructor(\n @Inject(SETTINGS_SERVICE) public settingsService: SettingsService,\n public svc: ServicePolicyFormService,\n @Inject(ZITI_DATA_SERVICE) private zitiService: ZitiDataService,\n growlerService: GrowlerService,\n @Inject(SERVICE_POLICY_EXTENSION_SERVICE) extService: ExtensionService\n ) {\n super(growlerService, extService);\n }\n\n ngOnInit(): void {\n this.subscription.add(\n this.settingsService.settingsChange.subscribe((results:any) => {\n this.settings = results;\n })\n );\n if (isEmpty(this.formData.id)) {\n this.formData = new ServicePolicy();\n }\n this.initData = cloneDeep(this.formData);\n this.initSelectedAttributes();\n this.extService.updateFormData(this.formData);\n this.subscription.add(\n this.extService.formDataChanged.subscribe((data) => {\n if (data.isEmpty) {\n return;\n }\n this.formData = data;\n })\n );\n this.svc.serviceNamedAttributesMap = this.serviceNamedAttributesMap;\n this.svc.identityNamedAttributesMap = this.identityNamedAttributesMap;\n this.initData = cloneDeep(this.formData);\n }\n\n ngOnDestroy() {\n this.extService.closed.emit({});\n this.subscription.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.isEditing = !isEmpty(this.formData.id);\n }\n\n initSelectedAttributes() {\n if (isEmpty(this.formData.id)) {\n this.svc.associatedServices = [];\n this.svc.associatedServiceNames = [];\n this.svc.associatedIdentities = [];\n this.svc.associatedIdentityNames = [];\n this.svc.associatedPostureChecks = [];\n this.svc.associatedPostureCheckNames = [];\n return;\n }\n const serviceIdAttributesMap = invert(this.serviceNamedAttributesMap);\n const identityIdAttributesMap = invert(this.identityNamedAttributesMap);\n const postureIdAttributesMap = invert(this.postureNamedAttributesMap);\n this.selectedServiceRoleAttributes = [];\n this.selectedServiceNamedAttributes = [];\n this.selectedIdentityRoleAttributes = [];\n this.selectedIdentityNamedAttributes = [];\n this.selectedPostureRoleAttributes = [];\n this.selectedPostureNamedAttributes = [];\n this.formData.serviceRoles?.forEach(attr => {\n if (attr.indexOf('@') === 0) {\n this.selectedServiceNamedAttributes.push(serviceIdAttributesMap[attr.substring(1)]);\n } else {\n this.selectedServiceRoleAttributes.push(attr.substring(1));\n }\n });\n this.formData.identityRoles?.forEach(attr => {\n if (attr.indexOf('@') === 0) {\n this.selectedIdentityNamedAttributes.push(identityIdAttributesMap[attr.substring(1)]);\n } else {\n this.selectedIdentityRoleAttributes.push(attr.substring(1));\n }\n });\n this.formData.postureCheckRoles?.forEach(attr => {\n if (attr.indexOf('@') === 0) {\n this.selectedPostureNamedAttributes.push(postureIdAttributesMap[attr.substring(1)]);\n } else {\n this.selectedPostureRoleAttributes.push(attr.substring(1));\n }\n });\n this.svc.getAssociatedServicesByAttribute(this.selectedServiceRoleAttributes, this.selectedServiceNamedAttributes);\n this.svc.getAssociatedIdentitiesByAttribute(this.selectedIdentityRoleAttributes, this.selectedIdentityNamedAttributes);\n this.svc.getAssociatedPostureChecksByAttribute(this.selectedPostureRoleAttributes, this.selectedPostureNamedAttributes);\n }\n\n headerActionRequested(action) {\n switch(action.name) {\n case 'save':\n this.save();\n break;\n case 'close':\n this.closeModal(true);\n break;\n case 'toggle-view':\n this.formView = action.data;\n break;\n }\n }\n\n async save(event?) {\n const isValid = this.validate();\n const isExtValid = await this.extService.validateData();\n if(!isValid || !isExtValid) {\n const growlerData = new GrowlerModel(\n 'error',\n 'Error',\n `Data Invalid`,\n `Service Policy data is invalid. Please update the highlighted fields and try again.`,\n );\n this.growlerService.show(growlerData);\n return;\n }\n\n this.isLoading = true;\n this.applySelectedAttributes();\n this.svc.save(this.formData).then((result) => {\n if (result?.close) {\n this.closeModal(true, true);\n }\n const data = result?.data?.id ? result.data : result;\n if (!isEmpty(data.id)) {\n this.formData = data || this.formData;\n this.initData = this.formData;\n } else {\n this.initData = this.formData;\n }\n }).finally(() => {\n this.isLoading = false;\n });\n }\n\n applySelectedAttributes() {\n this.formData.serviceRoles = this.svc.getSelectedRoles(this.selectedServiceRoleAttributes, this.selectedServiceNamedAttributes, this.serviceNamedAttributesMap);\n this.formData.identityRoles = this.svc.getSelectedRoles(this.selectedIdentityRoleAttributes, this.selectedIdentityNamedAttributes, this.identityNamedAttributesMap);\n this.formData.postureCheckRoles = this.svc.getSelectedRoles(this.selectedPostureRoleAttributes, this.selectedPostureNamedAttributes, this.postureNamedAttributesMap);\n }\n\n validate() {\n this.errors = {};\n if (isEmpty(this.formData.name)) {\n this.errors['name'] = true;\n }\n return isEmpty(this.errors);\n }\n\n get apiCallURL() {\n return this.settings.selectedEdgeController + '/edge/management/v1/service-policies' + (this.formData.id ? `/${this.formData.id}` : '');\n }\n\n get apiData() {\n const data: any = {\n name: this.formData?.name || '',\n appData: this.formData?.appData || '',\n serviceRoles: this.svc.getSelectedRoles(this.selectedServiceRoleAttributes, this.selectedServiceNamedAttributes, this.serviceNamedAttributesMap),\n identityRoles: this.svc.getSelectedRoles(this.selectedIdentityRoleAttributes, this.selectedIdentityNamedAttributes, this.identityNamedAttributesMap),\n postureCheckRoles: this.svc.getSelectedRoles(this.selectedPostureRoleAttributes, this.selectedPostureNamedAttributes, this.postureNamedAttributesMap),\n semantic: this.formData.semantic,\n type: this.formData.type\n }\n return data;\n }\n\n _apiData = {};\n set apiData(data) {\n this._apiData = data;\n }\n\n clear(): void {\n }\n}\n","<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Service Policy: ' : 'Create New Service Policy'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n ></lib-form-header>\n <div class=\"service-policy-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" *ngIf=\"formView === 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Service Policy Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge service policy\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Service Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100003'\"\n [helpText]=\"'Choose which services to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedServiceRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedServiceNamedAttributes\"\n [availableRoleAttributes]=\"serviceRoleAttributes\"\n [availableNamedAttributes]=\"serviceNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedServicesByAttribute(selectedServiceRoleAttributes, selectedServiceNamedAttributes)\"\n [placeholder]=\"'Select service attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Identity Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100002'\"\n [helpText]=\"'Choose which identities to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedIdentityRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedIdentityNamedAttributes\"\n [availableRoleAttributes]=\"identityRoleAttributes\"\n [availableNamedAttributes]=\"identityNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedIdentitiesByAttribute(selectedIdentityRoleAttributes, selectedIdentityNamedAttributes)\"\n [placeholder]=\"'Select identity attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select Posture Check Attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 100001'\"\n [helpText]=\"'Choose which posture checks to associate to this policy by picking from the list of available attributes'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"selectedPostureRoleAttributes\"\n [(selectedNamedAttributes)]=\"selectedPostureNamedAttributes\"\n [(selectedRoleAttributes)]=\"postureRoleAttributes\"\n [availableNamedAttributes]=\"postureNamedAttributes\"\n (selectedNamedAttributesChange)=\"svc.getAssociatedPostureChecksByAttribute(selectedPostureRoleAttributes, selectedPostureNamedAttributes)\"\n (selectedRoleAttributesChange)=\"svc.getAssociatedPostureChecksByAttribute(selectedPostureRoleAttributes, selectedPostureNamedAttributes)\"\n [placeholder]=\"'Select posture check attributes'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Type'\"\n [title2]=\"'Semantic'\"\n [layout]=\"'row'\"\n >\n <select\n [(ngModel)]=\"formData.type\"\n id=\"PolicyType\"\n class=\"form-field-dropdown\"\n >\n <option value=\"Bind\">Bind</option>\n <option value=\"Dial\">Dial</option>\n </select>\n <select\n [(ngModel)]=\"formData.semantic\"\n id=\"PolicySemantic\"\n class=\"form-field-dropdown\"\n >\n <option value=\"AnyOf\">AnyOf</option>\n <option value=\"AllOf\">AllOf</option>\n </select>\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServiceNames.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentityNames.length\"\n [helpText]=\"'Preview list of all Identities that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Associated Posture Checks'\"\n [count]=\"svc.associatedPostureCheckNames.length\"\n [helpText]=\"'Preview list of all Posture Checks that this Service Policy is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"postureChecksLoading\"\n [allNames]=\"svc.associatedPostureCheckNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Component, Inject, OnDestroy, OnInit} from '@angular/core';\nimport {ListPageComponent} from \"../../shared/list-page-component.class\";\nimport {DataTableFilterService} from \"../../features/data-table/data-table-filter.service\";\nimport {MatDialog} from \"@angular/material/dialog\";\nimport {TabNameService} from \"../../services/tab-name.service\";\nimport {ConsoleEventsService} from \"../../services/console-events.service\";\nimport {ZAC_WRAPPER_SERVICE, ZacWrapperServiceClass} from \"../../features/wrappers/zac-wrapper-service.class\";\nimport {ServicePoliciesPageService} from \"./service-policies-page.service\";\n\n@Component({\n selector: 'lib-service-policies-page',\n templateUrl: './service-policies-page.component.html',\n styleUrls: ['./service-policies-page.component.scss']\n})\nexport class ServicePoliciesPageComponent extends ListPageComponent implements OnInit, OnDestroy {\n\n serviceType = '';\n serviceRoleAttributes: any[] = [];\n identityRoleAttributes: any[] = [];\n formDataChanged = false;\n isLoading: boolean;\n tabs: { url: string; label: string }[];\n title = 'Manage Service Policies';\n\n constructor(\n public override svc: ServicePoliciesPageService,\n filterService: DataTableFilterService,\n dialogForm: MatDialog,\n private tabNames: TabNameService,\n consoleEvents: ConsoleEventsService,\n @Inject(ZAC_WRAPPER_SERVICE)private zacWrapperService: ZacWrapperServiceClass,\n ) {\n super(filterService, svc, consoleEvents, dialogForm);\n let userLang = navigator.language || 'en-us';\n userLang = userLang.toLowerCase();\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.getRoleAttributes();\n this.tabs = this.tabNames.getTabs('policies');\n }\n\n headerActionClicked(action: string) {\n switch(action) {\n case 'add':\n this.svc.serviceType = '';\n this.svc.openUpdate();\n break;\n case 'edit':\n this.svc.openUpdate();\n break;\n case 'delete':\n const selectedItems = this.rowData.filter((row) => {\n return row.selected;\n });\n const label = selectedItems.length > 1 ? 'services' : 'service';\n this.openBulkDelete(selectedItems, label);\n break;\n default:\n }\n }\n\n tableAction(event: any) {\n switch(event?.action) {\n case 'toggleAll':\n case 'toggleItem':\n this.itemToggled(event.item)\n break;\n case 'update':\n this.svc.serviceType = 'advanced';\n this.svc.openUpdate(event.item);\n break;\n case 'create':\n this.svc.openUpdate();\n break;\n case 'delete':\n this.deleteItem(event.item)\n break;\n case 'download-all':\n this.svc.downloadAllItems();\n break;\n case 'download-selected':\n this.svc.downloadItems(this.selectedItems);\n break;\n default:\n break;\n }\n }\n\n getRoleAttributes() {\n this.svc.getServiceRoleAttributes().then((result: any) => {\n this.serviceRoleAttributes = result.data;\n });\n this.svc.getIdentityRoleAttributes().then((result: any) => {\n this.identityRoleAttributes = result.data;\n });\n this.svc.getServiceNamedAttributes();\n this.svc.getIdentityNamedAttributes();\n this.svc.getPostureNamedAttributes();\n }\n\n deleteItem(item: any) {\n this.openBulkDelete([item], 'service-policies');\n }\n\n closeModal(event: any) {\n this.svc.sideModalOpen = false;\n if(event?.refresh) {\n this.refreshData();\n }\n }\n\n dataChanged(event) {\n this.formDataChanged = event;\n }\n\n serviceTypeSelected(event) {\n this.svc.serviceType = event;\n }\n\n}\n","<div class=\"ziti-page-container ziti-service-policies-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'configurations'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Service Policies defined, Click the plus to add a Service Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n\n <lib-side-modal [(open)]=\"svc.sideModalOpen\" [showClose]=\"false\">\n <lib-service-policy-form\n *ngIf=\"svc.sideModalOpen\"\n [formData]=\"svc.selectedServicePolicy\"\n [serviceRoleAttributes]=\"svc.serviceRoleAttributes\"\n [serviceNamedAttributes]=\"svc.serviceNamedAttributes\"\n [serviceNamedAttributesMap]=\"svc.serviceNamedAttributesMap\"\n [identityRoleAttributes]=\"svc.identityRoleAttributes\"\n [identityNamedAttributes]=\"svc.identityNamedAttributes\"\n [identityNamedAttributesMap]=\"svc.identityNamedAttributesMap\"\n [postureRoleAttributes]=\"svc.postureRoleAttributes\"\n [postureNamedAttributes]=\"svc.postureNamedAttributes\"\n [postureNamedAttributesMap]=\"svc.postureNamedAttributesMap\"\n (close)=\"closeModal($event)\"\n (dataChange)=\"dataChanged($event)\">\n </lib-service-policy-form>\n </lib-side-modal>\n</div>\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {APP_INITIALIZER, InjectionToken, Injector, NgModule} from '@angular/core';\nimport {ZacWrapperComponent} from \"./features/wrappers/zac-wrapper.component\";\nimport {SafePipe} from \"./safe.pipe\";\nimport {HttpClientModule, HttpClient} from \"@angular/common/http\";\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {ZacRoutingModule} from \"./zac-routing.module\";\nimport {ExtendableComponent} from \"./features/extendable/extendable.component\";\nimport {ExtensionsNoopService, SHAREDZ_EXTENSION} from \"./features/extendable/extensions-noop.service\";\nimport {StringInputComponent} from './features/dynamic-widgets/string/string-input.component';\nimport {NumberInputComponent} from './features/dynamic-widgets/number/number-input.component';\nimport {BooleanToggleInputComponent} from './features/dynamic-widgets/boolean/boolean-toggle-input.component';\nimport {ObjectComponent} from './features/dynamic-widgets/object/object.component';\nimport {SelectorInputComponent} from './features/dynamic-widgets/selector/selector-input.component';\nimport {CheckboxListInputComponent} from './features/dynamic-widgets/checkbox-list/checkbox-list-input.component';\nimport {TextListInputComponent} from \"./features/dynamic-widgets/text-list/text-list-input.component\";\nimport {ChipsModule} from \"primeng/chips\";\nimport {DropdownModule} from 'primeng/dropdown';\nimport {CalendarModule} from 'primeng/calendar';\nimport {QRCodeModule} from 'angularx-qrcode';\nimport {\n ProtocolAddressPortInputComponent\n} from './features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component';\nimport {SideToolbarComponent} from './features/sidebars/side-toolbar/side-toolbar.component';\nimport {SideNavbarComponent} from './features/sidebars/side-navbar/side-navbar.component';\nimport {SideBannerComponent} from './features/sidebars/side-banner/side-banner.component';\nimport {PasswordInputComponent} from './features/dynamic-widgets/password/password-input.component';\nimport {ConfigurationsPageComponent} from './pages/configurations/configurations-page.component';\nimport {ListPageHeaderComponent} from './features/list-page-features/list-page-header/list-page-header.component';\nimport {MatDialogModule} from \"@angular/material/dialog\";\nimport {ConfigurationFormComponent} from \"./features/projectable-forms/configuration/configuration-form.component\";\nimport {ListPageFormComponent} from './features/list-page-features/list-page-form/list-page-form.component';\nimport {DataTableComponent} from \"./features/data-table/data-table.component\";\nimport {TableCellSelectComponent} from \"./features/data-table/cells/table-cell-select/table-cell-select.component\";\nimport {TableColumnSelectComponent} from \"./features/data-table/column-headers/table-column-select/table-column-select.component\";\nimport {TableCellMenuComponent} from \"./features/data-table/cells/table-cell-menu/table-cell-menu.component\";\nimport {TableColumnMenuComponent} from \"./features/data-table/column-headers/table-column-menu/table-column-menu.component\";\nimport {TableColumnDefaultComponent} from \"./features/data-table/column-headers/table-column-default/table-column-default.component\";\nimport {TableColumnFilterComponent} from \"./features/data-table/column-headers/table-column-filter/table-column-filter.component\";\nimport {HiddenColumnsBarComponent} from \"./features/data-table/table-hidden-columns-bar/hidden-columns-bar.component\";\nimport {FilterBarComponent} from \"./features/data-table/table-filter-bar/filter-bar.component\";\nimport {AgGridModule} from \"ag-grid-angular\";\nimport {IdentitiesPageComponent} from \"./pages/identities/identities-page.component\";\nimport {EdgeRoutersPageComponent} from \"./pages/edge-routers/edge-routers-page.component\";\nimport {ServicesPageComponent} from \"./pages/services/services-page.component\";\nimport {ZITI_NAVIGATOR} from \"./ziti-console.constants\";\nimport { GrowlerComponent } from './features/messaging/growler.component';\nimport { ConfirmComponent } from './features/confirm/confirm.component';\nimport {onAppInit} from \"./app.initializer\";\nimport {ClickOutsideModule} from \"ng-click-outside\";\nimport {NgJsonEditorModule} from \"ang-jsoneditor\";\nimport {LottieModule} from \"ngx-lottie\";\nimport { NoItemsComponent } from './features/no-items/no-items.component';\nimport { SideModalComponent } from './features/side-modal/side-modal.component';\nimport { IdentityFormComponent } from \"./features/projectable-forms/identity/identity-form.component\";\nimport { FormHeaderComponent } from './features/projectable-forms/form-header/form-header.component';\nimport { FormFieldContainerComponent } from './features/projectable-forms/form-field-container/form-field-container.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PreviewListComponent } from './features/preview-list/preview-list.component';\nimport {LoadingIndicatorComponent} from \"./features/loading-indicator/loading-indicator.component\";\nimport { FormFieldToggleComponent } from './features/projectable-forms/form-field-toggle/form-field-toggle.component';\nimport { JsonViewComponent } from './features/json-view/json-view.component';\nimport { TagSelectorComponent } from './features/tag-selector/tag-selector.component';\nimport { QrCodeComponent } from './features/qr-code/qr-code.component';\nimport { TableCellTokenComponent } from './features/data-table/cells/table-cell-token/table-cell-token.component';\nimport {GrowlerModule} from \"./features/messaging/growler.module\";\nimport {OSTooltipComponent} from './features/data-table/tooltips/os-tooltip.component'\nimport {SDKTooltipComponent} from \"./features/data-table/tooltips/sdk-tooltip.component\";\nimport { OverridesComponent } from './features/overrides/overrides.component';\nimport { ResetEnrollmentComponent } from './features/reset-enrollment/reset-enrollment.component';\nimport {IdentityServicePathComponent} from \"./features/visualizer/identity-service-path/identity-service-path.component\";\nimport { CustomTagsComponent } from './features/custom-tags/custom-tags.component';\nimport {EdgeRouterFormComponent} from \"./features/projectable-forms/edge-router/edge-router-form.component\";\n\nimport {ServiceFormComponent} from \"./features/projectable-forms/service/service-form.component\";\nimport { PortRangesComponent } from './features/dynamic-widgets/port-ranges/port-ranges.component';\nimport { ForwardingConfigComponent } from './features/dynamic-widgets/forwarding-config/forwarding-config.component';\nimport { CardListComponent } from './features/card-list/card-list.component';\nimport { SimpleServiceComponent } from './features/projectable-forms/service/simple-service/simple-service.component';\nimport { CardComponent } from './features/card/card.component';\nimport { CreationSummaryDialogComponent } from './features/creation-summary-dialog/creation-summary-dialog.component';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { ConfigEditorComponent } from './features/config-editor/config-editor.component';\nimport { ServicePoliciesPageComponent } from './pages/service-policies/service-policies-page.component';\nimport { ServicePolicyFormComponent } from './features/projectable-forms/service-policy/service-policy-form.component';\n\nexport function playerFactory() {\n return import(/* webpackChunkName: 'lottie-web' */ 'lottie-web');\n}\n\n@NgModule({\n declarations: [\n ZacWrapperComponent,\n SafePipe,\n ExtendableComponent,\n StringInputComponent,\n NumberInputComponent,\n BooleanToggleInputComponent,\n ObjectComponent,\n SelectorInputComponent,\n TextListInputComponent,\n CheckboxListInputComponent,\n ProtocolAddressPortInputComponent,\n SideToolbarComponent,\n SideNavbarComponent,\n SideBannerComponent,\n PasswordInputComponent,\n ConfigurationFormComponent,\n ConfigurationsPageComponent,\n ListPageHeaderComponent,\n FilterBarComponent,\n ListPageFormComponent,\n IdentitiesPageComponent,\n EdgeRoutersPageComponent,\n DataTableComponent,\n TableCellSelectComponent,\n TableColumnSelectComponent,\n TableCellMenuComponent,\n TableColumnMenuComponent,\n TableColumnDefaultComponent,\n TableColumnFilterComponent,\n IdentityFormComponent,\n EdgeRouterFormComponent,\n HiddenColumnsBarComponent,\n FilterBarComponent,\n ExtendableComponent,\n ConfirmComponent,\n NoItemsComponent,\n SideModalComponent,\n FormHeaderComponent,\n FormFieldContainerComponent,\n PreviewListComponent,\n LoadingIndicatorComponent,\n FormFieldToggleComponent,\n JsonViewComponent,\n TagSelectorComponent,\n QrCodeComponent,\n TableCellTokenComponent,\n OSTooltipComponent,\n SDKTooltipComponent,\n OverridesComponent,\n ResetEnrollmentComponent,\n IdentityServicePathComponent,\n CustomTagsComponent,\n ServicesPageComponent,\n ServiceFormComponent,\n PortRangesComponent,\n ForwardingConfigComponent,\n CardListComponent,\n SimpleServiceComponent,\n CardComponent,\n CreationSummaryDialogComponent,\n ConfigEditorComponent,\n ServicePoliciesPageComponent,\n ServicePolicyFormComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatDialogModule,\n HttpClientModule,\n ZacRoutingModule,\n ChipsModule,\n CalendarModule,\n AgGridModule,\n QRCodeModule,\n ClickOutsideModule,\n NgJsonEditorModule,\n MatTooltipModule,\n MatAutocompleteModule,\n LottieModule.forRoot({player: playerFactory}),\n DropdownModule\n ],\n exports: [\n ZacWrapperComponent,\n ExtendableComponent,\n SideToolbarComponent,\n SideNavbarComponent,\n SideBannerComponent,\n StringInputComponent,\n SelectorInputComponent,\n PasswordInputComponent,\n NumberInputComponent,\n BooleanToggleInputComponent,\n ObjectComponent,\n TextListInputComponent,\n CheckboxListInputComponent,\n ProtocolAddressPortInputComponent,\n ConfigurationsPageComponent,\n ConfigurationFormComponent,\n EdgeRouterFormComponent,\n IdentitiesPageComponent,\n EdgeRoutersPageComponent,\n ServicesPageComponent,\n ZacRoutingModule,\n SideModalComponent,\n IdentityFormComponent,\n LoadingIndicatorComponent,\n GrowlerModule,\n FormFieldContainerComponent,\n FormFieldToggleComponent,\n ServiceFormComponent,\n ServicePoliciesPageComponent,\n ServicePolicyFormComponent\n ],\n providers: [\n {provide: SHAREDZ_EXTENSION, useClass: ExtensionsNoopService},\n {provide: ZITI_NAVIGATOR, useValue: {}},\n {\n provide: APP_INITIALIZER,\n useFactory: onAppInit,\n deps: [Injector],\n multi: true\n },\n ],\n})\nexport class OpenZitiConsoleLibModule {\n}\n","export const VERSION = {\n \"version\": \"3.3.0\"\n};\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {EventEmitter, Inject, Injectable, InjectionToken} from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {Subject, Subscription} from \"rxjs\";\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {Resolver} from \"@stoplight/json-ref-resolver\";\nimport {get, isEmpty, set, unset} from 'lodash';\nimport $ from 'jquery';\nimport {ZITI_DOMAIN_CONTROLLER, ZitiDomainControllerService} from \"../../services/ziti-domain-controller.service\";\nimport {ZITI_URLS} from \"../../ziti-console.constants\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\nimport {ZacWrapperServiceClass} from \"./zac-wrapper-service.class\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {GrowlerModel} from \"../messaging/growler.model\";\nimport {LoggerService} from \"../messaging/logger.service\";\nimport {VERSION} from \"../../version\";\nimport {ValidationService} from \"../../services/validation.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\n\n// @ts-ignore\nconst {modal, growler} = window;\n\nexport const COMPONENTS: any = {\n api: `<label data-i18n=\"APICalls\"></label>\n <div class=\"configBox\">\n <div class=\"related\">\n <input id=\"ApiUrl\" type=\"text\" readonly />\n <div class=\"icon-copy copy\" data-copy=\"ApiUrl\"></div>\n </div>\n <div class=\"related\">\n <textarea id=\"ApiParams\" autocapitalize=\"off\" style=\"height:500px\"></textarea>\n <div class=\"icon-copy copy swap\" data-copy=\"ApiParams\"></div>\n </div> \n </div>`,\n add: `<div class=\"action icon-plus\" data-action=\"add\"></div>`,\n line: `<div class=\"line\"></div>`,\n noitems: `<div class=\"noitems\"></div>`,\n save: `<div class=\"buttons\">\n <div class=\"linkButton closer\" data-i18n=\"Oops\"></div>\n <div id=\"SaveButton\" class=\"button\" data-defined=\"save\" data-i18n=\"Save\"></div>\n </div>`,\n search: `<div class=\"filters\">\n <input id=\"SearchFilter\" data-defined=\"search\" type=\"text\" class=\"search\" data-i18n=\"EnterFilter\" />\n <div class=\"clear icon-clear\" data-defined=\"clear\"></div>\n <div class=\"searchButton icon-search\"></div>\n <div class=\"counters\"><span id=\"Start\">-</span>-<span id=\"End\">-</span> <span data-i18n=\"Of\"></span> <span id=\"Total\">-</span></div>\n <div class=\"navigate prev icon-prev disabled\"></div>\n <div class=\"navigate next icon-next disabled\"></div>\n </div>`,\n tabIdentities: `<div class=\"tabs\">\n <div class=\"tab\" data-go=\"/identities\" data-i18n=\"Identities\"></div>\n <div class=\"tab\" data-go=\"/recipes\" data-i18n=\"Recipes\"></div>\n <div class=\"tab\" data-go=\"/terminators\" data-i18n=\"Terminators\"></div>\n <div class=\"tab\" data-go=\"/posture-checks\" data-i18n=\"PostureChecks\"></div>\n </div>`,\n tabPolicies: `<div class=\"tabs\">\n <div class=\"tab\" data-go=\"/service-policies\" data-i18n=\"ServicePolicies\"></div>\n <div class=\"tab\" data-go=\"/router-policies\" data-i18n=\"EdgeRouterPolicies\"></div>\n <div class=\"tab\" data-go=\"/service-router-policies\" data-i18n=\"ServiceRouterPolicies\"></div>\n <div class=\"tab\" data-go=\"/auth-policies\" data-i18n=\"AuthPolicies\"></div>\n <div class=\"tab\" data-go=\"/jwt-signers\" data-i18n=\"JwtSigners\"></div>\n </div>`,\n tabRouters: `<div class=\"tabs\">\n <div class=\"tab\" data-go=\"/routers\" data-i18n=\"EdgeRouters\"></div>\n <div class=\"tab\" data-go=\"/transit-routers\" data-i18n=\"TransitRouters\"></div>\n <div class=\"tab\" data-go=\"/router-policies\" data-i18n=\"EdgeRouterPolicies\"></div>\n </div>`,\n tabServers: `<div class=\"tabs\">\n <div class=\"tab\" data-go=\"/servers\" data-i18n=\"ManageServers\">Manage Servers</div>\n <div class=\"tab\" data-go=\"/organization\" data-i18n=\"ManageFields\">Manage Custom Fields</div>\n </div>`,\n tabServices: `<div class=\"tabs\">\n <div class=\"tab\" data-go=\"/services\" data-i18n=\"Services\"></div>\n <div class=\"tab\" data-go=\"/configs\" data-i18n=\"Configurations\"></div>\n <div class=\"tab\" data-go=\"/config-types\" data-i18n=\"ConfigTypes\"></div>\n </div>`,\n tabSessions: `<div class=\"tabs\">\n <div class=\"tab\" data-go=\"/sessions\" data-i18n=\"Sessions\"></div>\n <div class=\"tab\" data-go=\"/api-sessions\" data-i18n=\"APISessions\"></div>\n </div>`,\n customtags: `<label data-i18n=\"Tags\"></label>\n <div class=\"configBox\">\n <div id=\"TagExtended\"></div>\n </div>`\n}\n\n\n@Injectable({providedIn: 'root'})\nexport class ZacWrapperService extends ZacWrapperServiceClass {\n\n modalShow;\n modalClose;\n\n constructor(\n @Inject(ZITI_DOMAIN_CONTROLLER) override zitiDomainController: ZitiDomainControllerService,\n @Inject(ZITI_URLS) override URLS:any,\n @Inject(SETTINGS_SERVICE) override settingsService: SettingsService,\n override http: HttpClient,\n override router: Router,\n override growlerService: GrowlerService,\n override loggerService: LoggerService,\n override validationService: ValidationService\n ) {\n super(zitiDomainController, URLS, settingsService, http, router, growlerService, loggerService, validationService);\n this.getCurrentPage(this.router.url);\n this.initRouteListener();\n }\n\n initZac() {\n if (this.zacInit) {\n return;\n }\n const appInit = get(window, 'app.init');\n this.settingsService.settingsChange.subscribe((settings) => {\n set(window, 'service.call', this.handleServiceCall.bind(this));\n });\n this.initZacListeners();\n this.zacInit = true;\n }\n\n override initZacListeners() {\n set(window, 'header.goto', (event: any) => {\n const url = $(event.currentTarget).data(\"go\");\n let route = this.getCurrentPage(url);\n this.router.navigate([route]);\n });\n }\n\n private getCurrentPage(url) {\n let route = '';\n switch (url) {\n case '':\n this.page = 'index';\n route = this.URLS.ZITI_DASHBOARD;\n break;\n case '/identities':\n case 'identities':\n this.page = 'identities';\n route = this.URLS.ZITI_IDENTITIES;\n break;\n case '/attributes':\n case 'attributes':\n this.page = 'attributes';\n route = this.URLS.ZITI_ATTRIBUTES;\n break;\n case '/jwt-signers':\n case 'jwt-signers':\n this.page = 'jwt-signers';\n route = this.URLS.ZITI_JWT_SIGNERS;\n break;\n case '/services':\n case 'services':\n this.page = 'services';\n route = this.URLS.ZITI_SERVICES;\n break;\n case '/routers':\n case 'routers':\n this.page = 'routers';\n route = this.URLS.ZITI_ROUTERS;\n break;\n case '/transit-routers':\n case 'transit-routers':\n this.page = 'transit-routers';\n route = this.URLS.ZITI_TRANSIT_ROUTERS;\n break;\n case '/configs':\n case 'configs':\n this.page = 'configs';\n route = this.URLS.ZITI_CONFIGS;\n break;\n case '/config-types':\n case 'config-types':\n this.page = 'config-types';\n route = this.URLS.ZITI_CONFIG_TYPES;\n break;\n case '/recipes':\n case 'recipes':\n this.page = 'recipes';\n route = this.URLS.ZITI_RECIPES;\n break;\n case '/terminators':\n case 'terminators':\n this.page = 'terminators';\n route = this.URLS.ZITI_TERMINATORS;\n break;\n case '/config-terminators':\n case 'config-terminators':\n this.page = 'config-terminators';\n route = this.URLS.ZITI_CONFIG_TERMINATORS;\n break;\n case '/auth-policies':\n case 'auth-policies':\n this.page = 'auth-policies';\n route = this.URLS.ZITI_AUTH_POLICIES;\n break;\n case '/service-policies':\n case 'service-policies':\n this.page = 'service-policies';\n route = this.URLS.ZITI_SERVICE_POLICIES;\n break;\n case '/router-policies':\n case 'router-policies':\n this.page = 'router-policies';\n route = this.URLS.ZITI_ROUTER_POLICIES;\n break;\n case '/service-router-policies':\n case 'service-router-policies':\n this.page = 'service-router-policies';\n route = this.URLS.ZITI_SERVICE_ROUTER_POLICIES;\n break;\n case '/posture-checks':\n case 'posture-checks':\n this.page = 'posture-checks';\n route = this.URLS.ZITI_POSTURE_CHECKS;\n break;\n case '/certificate-authorities':\n case 'certificate-authorities':\n case '/cas':\n case 'cas':\n this.page = 'cas';\n route = this.URLS.ZITI_CERT_AUTHORITIES;\n break;\n case '/sessions':\n case 'sessions':\n this.page = 'sessions';\n route = this.URLS.ZITI_SESSIONS;\n break;\n case '/api-sessions':\n case 'api-sessions':\n this.page = 'api-sessions';\n route = this.URLS.ZITI_API_SESSIONS;\n break;\n case '/servers':\n case 'servers':\n this.page = 'servers';\n route = this.URLS.ZITI_SERVERS;\n break;\n case '/login':\n case 'login':\n this.page = 'login';\n route = this.URLS.ZAC_LOGIN;\n break;\n case '/organization':\n case 'organization':\n this.page = 'organization';\n route = this.URLS.ZITI_CUSTOM_FIELDS;\n break;\n case '/profile':\n case 'profile':\n this.page = 'profile';\n route = this.URLS.ZITI_PROFILE;\n break;\n case '/settings':\n case 'settings':\n this.page = 'settings';\n route = this.URLS.ZITI_SETTINGS;\n break;\n default:\n this.page = 'index';\n route = this.URLS.ZITI_DASHBOARD;\n break;\n }\n return route;\n }\n\n private initRouteListener() {\n this.router.events.subscribe((event) => {\n if ((event as any)['routerEvent'] instanceof NavigationEnd) {\n const oldPage = this.page;\n const page = (event as any)['routerEvent']['url'].split(';')[0].split('?')[0];\n let doPageLoad = false;\n switch (page) {\n case this.URLS.ZITI_DASHBOARD:\n this.page = 'index';\n doPageLoad = true;\n break;\n case this.URLS.ZITI_SERVICES:\n this.page = 'services';\n break;\n case this.URLS.ZITI_IDENTITIES:\n this.page = 'identities';\n break;\n case this.URLS.ZITI_JWT_SIGNERS:\n this.page = 'jwt-signers';\n break;\n case this.URLS.ZITI_CONFIGS:\n this.page = 'configs';\n break;\n case this.URLS.ZITI_CONFIG_TYPES:\n this.page = 'config-types';\n break;\n case this.URLS.ZITI_ROUTERS:\n this.page = 'routers';\n break;\n case this.URLS.ZITI_TRANSIT_ROUTERS:\n this.page = 'transit-routers';\n break;\n case this.URLS.ZITI_RECIPES:\n this.page = 'recipes';\n break;\n case this.URLS.ZITI_TERMINATORS:\n this.page = 'terminators';\n break;\n case this.URLS.ZITI_AUTH_POLICIES:\n this.page = 'auth-policies';\n break;\n case this.URLS.ZITI_SERVICE_POLICIES:\n this.page = 'service-policies';\n break;\n case this.URLS.ZITI_ROUTER_POLICIES:\n this.page = 'router-policies';\n break;\n case this.URLS.ZITI_SERVICE_ROUTER_POLICIES:\n this.page = 'service-router-policies';\n break;\n case this.URLS.ZITI_POSTURE_CHECKS:\n this.page = 'posture-checks';\n break;\n case this.URLS.ZITI_BROWZER_CAS:\n case this.URLS.ZITI_CERT_AUTHORITIES:\n this.page = 'cas';\n break;\n case this.URLS.ZITI_SESSIONS:\n this.page = 'sessions';\n break;\n case this.URLS.ZITI_API_SESSIONS:\n this.page = 'api-sessions';\n break;\n case this.URLS.ZITI_ATTRIBUTES:\n this.page = 'attributes';\n break;\n case this.URLS.ZAC_LOGIN:\n this.page = 'login';\n break;\n case this.URLS.ZITI_SERVERS:\n this.page = 'servers';\n break;\n case this.URLS.ZITI_CUSTOM_FIELDS:\n this.page = 'organization';\n break;\n case this.URLS.ZITI_PROFILE:\n this.page = 'profile';\n break;\n case this.URLS.ZITI_SETTINGS:\n this.page = 'settings';\n break;\n default:\n this.page = 'index';\n doPageLoad = true;\n break;\n }\n if (oldPage !== this.page || doPageLoad) {\n this.pageChanged.emit();\n }\n }\n });\n }\n\n override loadCurrentPage() {\n this.getCurrentPage(this.router.url);\n if (isEmpty(this.page)) {\n this.page = 'index'\n }\n const path = 'assets/html/' + this.page + '.htm';\n return this.http.get(path, {responseType: \"text\"}).toPromise().then((html: any) => {\n for (const prop in COMPONENTS) {\n html = html.split('{{html.' + prop + '}}').join(COMPONENTS[prop]);\n }\n return html;\n });\n }\n\n handleServiceCall(name: string, params: any, returnTo: any, type: any) {\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n switch (name) {\n case 'data':\n this.getZitiEntities(params.type, params.paging).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'subdata':\n this.getZitiEntity(params).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'dataSave':\n this.saveZitiEntity(params, returnTo);\n break;\n case 'identity':\n this.createSimpleIdentity(params).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'service':\n this.createSimpleService(params).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'subSave':\n this.saveZitiSubData(params, returnTo);\n break;\n case 'delete':\n this.deleteZitiEntities(params, returnTo);\n break;\n case 'call':\n this.callZitiEdge(`${controllerDomain}/edge/management/v1/${params.url}`, {}).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'schema':\n this.dereferenceJSONSchema(params.schema).then((schema) => {\n this.handleServiceResult({data: schema}, returnTo);\n })\n break;\n case 'template':\n case 'language':\n this.getLocaleFile(params.locale).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'settings':\n this.http.get(\"assets/data/settings.json\", {}).toPromise().then((result) => {\n returnTo(result);\n });\n break;\n case 'version':\n this.callZitiEdge(`${controllerDomain}/edge/management/v1/version`, {}).then((result) => {\n const versionData = {\n \"data\": result.data,\n \"serviceUrl\": \"/edge/management/v1\",\n \"zac\": VERSION.version,\n \"baseUrl\": this.settingsService?.settings?.selectedEdgeController\n }\n returnTo(versionData);\n });\n break;\n case 'controllerSave':\n this.callZitiEdge(\"/api/controllerSave\", {}).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'server':\n this.callZitiEdge(\"/api/server\", {}).then((result) => {\n this.handleServiceResult(result, returnTo);\n });\n break;\n case 'tags':\n // For no this is a no-op\n break;\n }\n }\n\n handleServiceResult(result, returnTo) {\n if (result?.error) {\n result = this.handleError(result);\n }\n returnTo(result);\n }\n\n async createSimpleIdentity(params) {\n params = {\n name: params.name,\n roleAttributes: params.roles,\n enrollment: { ott: true },\n isAdmin: false,\n type: \"Device\"\n }\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const url = `${controllerDomain}/edge/management/v1/identities`;\n const id = await this.callZitiEdge(url, params, 'POST').then((result) => {\n return result?.data?.id;\n });\n const entityParams = {\n name: 'identities',\n type: '',\n url: './identities/' + id\n }\n return this.getZitiEntity(entityParams).then((results: any) => {\n results.cli = [];\n results.services = [];\n\n let cli = \"ziti edge create identity device \\'\"+params.name+\"\\'\";\n if (params.roleAttributes) cli += \" -a \\'\"+params.roleAttributes.toString()+\"\\'\";\n results.cli.push(cli);\n\n let serviceCall = {\n url: url,\n params: params\n };\n results.services.push(serviceCall);\n return results;\n })\n }\n\n async createSimpleService(params) {\n const name = params.name;\n const protocol = params.protocol;\n const host = params.host;\n const port = Number(params.port);\n const useEncrypt = params.encrypt;\n const zitiHost = params.zitiHost;\n const zitiPort = Number(params.zitiPort);\n const hosted = params.hosted;\n const access = params.access;\n\n const rootName = name.trim().replace(/[^a-z0-9 ]/gi, '').split(' ').join('-');\n const clientName = rootName+\"-Client\";\n const serverName = rootName+\"-Server\";\n const dialPolicyName = rootName+\"-DialPolicy\";\n const bindPolicyName = rootName+\"-BindPolicy\";\n\n const serverConfig = {\n hostname: host,\n port: port,\n protocol: protocol\n };\n const clientConfig = {\n hostname: zitiHost,\n port: zitiPort\n };\n\n const paging = {\n filter: \"ziti-tunneler-client.v1\",\n noSearch: false,\n order: \"asc\",\n page: 1,\n searchOn: \"name\",\n sort: \"name\",\n total: 50\n }\n let configTypeResult = await this.getZitiEntities('config-types', paging);\n const clientConfigId = configTypeResult.data[0]?.id;\n paging.filter = 'ziti-tunneler-server.v1';\n configTypeResult = await this.getZitiEntities('config-types', paging);\n const serverConfigId = configTypeResult.data[0]?.id;\n\n const serverData = await this.createConfig(serverConfigId, serverName, serverConfig);\n const clientData = await this.createConfig(clientConfigId, clientName, clientConfig);\n const serverId = serverData.id;\n const clientId = clientData.id;\n\n const serviceData = await this.createService(name, serverId, clientId, useEncrypt);\n const serviceId = serviceData.id;\n\n const bindData = await this.createServicePolicy(bindPolicyName, \"@\"+serviceId, hosted);\n const dialData = await this.createServicePolicy(dialPolicyName, \"@\"+serviceId, access);\n\n const bindId = bindData.id;\n const dialId = dialData.id;\n\n const toReturn = {\n data: [],\n cli: [],\n services: []\n };\n\n const logs = [];\n logs.push({name: serverName, id: serverId, type: \"Config\"});\n logs.push({name: clientName, id: clientId, type: \"Config\"});\n logs.push({name: name, id: serviceId, type: \"Service\"});\n logs.push({name: bindPolicyName, id: bindId, type: \"Policy\"});\n logs.push({name: dialPolicyName, id: dialId, type: \"Policy\"});\n toReturn.data = logs;\n toReturn.cli.push(serverData.cli);\n toReturn.cli.push(clientData.cli);\n toReturn.cli.push(serviceData.cli);\n toReturn.cli.push(bindData.cli);\n toReturn.cli.push(dialData.cli);\n\n toReturn.services.push(serverData.service);\n toReturn.services.push(clientData.service);\n toReturn.services.push(serviceData.service);\n toReturn.services.push(bindData.service);\n toReturn.services.push(dialData.service);\n\n return toReturn;\n }\n\n async createService(name, serverId, clientId, encrypt) {\n const params = {\n name: name,\n configs: [serverId, clientId],\n encryptionRequired: encrypt,\n };\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const url = `${controllerDomain}/edge/management/v1/services`;\n return this.callZitiEdge(url, params, 'POST').then((result) => {\n let cli = \"ziti edge create service '\"+name+\"' --configs '\"+serverId+\",\"+clientId+\"'\";\n let serviceCall = {\n url: url+\"/services\",\n params: params\n };\n var item = {\n id: result?.data?.id || '',\n cli: cli,\n service: serviceCall\n }\n return item;\n });\n }\n\n async createServicePolicy(name, serviceId, hosted) {\n const params = {\n name: name,\n type: \"Bind\",\n semantic: \"AnyOf\",\n serviceRoles: [serviceId],\n identityRoles: hosted,\n }\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const url = `${controllerDomain}/edge/management/v1/service-policies`;\n return this.callZitiEdge(url, params, 'POST').then((result) => {\n let cli = \"ziti edge create service-policy '\"+name+\"' Bind --semantic AnyOf --service-roles '\"+serviceId+\"' --identity-roles '\"+hosted.toString()+\"'\";\n let serviceCall = {\n url: url+\"/service-policies\",\n params: params\n };\n var item = {\n id: result?.data?.id || '',\n cli: cli,\n service: serviceCall\n }\n return item;\n });\n }\n\n async createConfig(configId, name, data, index = 0) {\n const params = {\n name: name+((index>0)?\"-\"+index:\"\"),\n configTypeId: configId,\n data: data\n };\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const url = `${controllerDomain}/edge/management/v1/configs`;\n return this.callZitiEdge(url, params, 'POST').then((result) => {\n const cli = \"ziti edge create config '\"+params.name+\"' '\"+configId+\"' '\"+JSON.stringify(data).split('\"').join('\\\\\"')+\"'\";\n const serviceCall = {\n url: url+\"/configs\",\n params: params\n }\n const item = {\n id: result?.data?.id || '',\n cli: cli,\n service: serviceCall\n }\n return item;\n });\n }\n\n async dereferenceJSONSchema(data: any) {\n const resolver = new Resolver();\n const schema = await resolver.resolve(data);\n return schema.result;\n }\n\n async getLocaleFile(locale: string = 'en-us') {\n locale = locale.toLowerCase();\n let path = 'assets/languages/' + locale + '.json';\n let localeFile = await this.http.get(path, {responseType: \"text\"}).toPromise().then((result: any) => {\n return JSON.parse(result);\n }).catch((error) => {\n this.loggerService.error(error);\n return;\n });\n if (!localeFile) {\n path = 'assets/languages/en-us.json';\n localeFile = await this.http.get(path, {responseType: \"text\"}).toPromise().then((result: any) => {\n return JSON.parse(result);\n })\n }\n return localeFile;\n }\n\n getZitiEntities(type: string, paging: any) {\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const serviceUrl = `${controllerDomain}/edge/management/v1`;\n let urlFilter = \"\";\n let toSearchOn = \"name\";\n let noSearch = false;\n if (paging && paging.sort != null) {\n if (paging.searchOn) toSearchOn = paging.searchOn;\n if (paging.noSearch) noSearch = true;\n if (!paging.filter) paging.filter = \"\";\n paging.filter = paging.filter.split('#').join('');\n if (noSearch) {\n if (paging.page !== -1) urlFilter = \"?limit=\" + paging.total + \"&offset=\" + ((paging.page - 1) * paging.total);\n } else {\n if (paging.page !== -1) urlFilter = \"?filter=(\" + toSearchOn + \" contains \\\"\" + paging.filter + \"\\\")&limit=\" + paging.total + \"&offset=\" + ((paging.page - 1) * paging.total) + \"&sort=\" + paging.sort + \" \" + paging.order;\n if (paging.params) {\n for (const key in paging.params) {\n urlFilter += ((urlFilter.length === 0) ? \"?\" : \"&\") + key + \"=\" + paging.params[key];\n }\n }\n }\n }\n return this.callZitiEdge(serviceUrl + \"/\" + type + urlFilter, {});\n }\n\n getZitiEntity(params: any) {\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const serviceUrl = `${controllerDomain}/edge/management/v1`;\n const url = params.url.split(\"./\").join(\"\");\n const id = params.id;\n const type = params.type;\n const parentType = params.name;\n return this.callZitiEdge(serviceUrl + \"/\" + url, {}, 'GET').then((result: any) => {\n return {\n id: id,\n parent: parentType,\n type: type,\n data: result.data\n }\n });\n }\n\n deleteZitiEntities(params, returnTo) {\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const serviceUrl = `${controllerDomain}/edge/management/v1`;\n const promises = [];\n params.ids.forEach((id) => {\n const type = params.type;\n const parentType = params.name;\n promises.push(this.callZitiEdge(serviceUrl + \"/\" + type + \"/\" + id.trim() + \"/\", {}, 'DELETE').then((result: any) => {\n return {\n id: id,\n parent: parentType,\n type: type,\n data: result.data\n }\n }));\n });\n return Promise.all(promises).then(() => {\n this.getZitiEntities(params.type, params.paging).then((result) => {\n returnTo(result);\n });\n });\n }\n\n saveZitiEntity(params: any, returnTo: any) {\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const serviceUrl = `${controllerDomain}/edge/management/v1`;\n const saveParams = params.save;\n const additional = params.additional;\n const removal = params.removal;\n const type = params.type;\n const paging = params.paging;\n let method = \"POST\";\n let id = params.id;\n let url = serviceUrl + \"/\" + type;\n let chained = false;\n if (params.chained) chained = params.chained;\n if (id && id.trim().length > 0) {\n method = \"PATCH\";\n url += \"/\" + id.trim();\n if (removal) {\n let objects = Object.entries(removal);\n if (objects.length > 0) {\n for (let i = 0; i < objects.length; i++) {\n const parameters: any = {};\n parameters.ids = objects[i][1];\n return this.callZitiEdge(serviceUrl + \"/\" + type + \"/\" + id.trim() + \"/\" + objects[i][0], parameters, 'DELETE');\n }\n }\n }\n }\n saveParams.data = this.validationService.redefineObject(saveParams.data);\n for (const prop in saveParams.data) {\n if (Array.isArray(saveParams.data[prop]) && saveParams.data[prop].length == 0) {\n delete saveParams.data[prop];\n } else {\n //console.log(\"Not Array: \"+prop+\" \"+saveParams.data[prop].length);\n }\n }\n\n return this.callZitiEdge(url, saveParams, method).then((result: any) => {\n if (result?.error) {\n returnTo(this.handleError(result.error));\n } else if (result?.data) {\n if (additional) {\n let objects = Object.entries(additional);\n let index = 0;\n if (objects.length > 0) {\n if (method === \"POST\") id = result?.data?.id;\n for (let i = 0; i < objects.length; i++) {\n this.callZitiEdge(serviceUrl + \"/\" + type + \"/\" + id + \"/\" + objects[i][0], {ids: objects[i][1]}, 'PUT').then((res: any) => {\n index++;\n if (index === objects.length) {\n if (chained) returnTo(res.data);\n else this.getZitiEntities(type, paging).then((result) => {\n returnTo(result)\n });\n }\n });\n }\n } else {\n if (chained) returnTo(result.data);\n else this.getZitiEntities(type, paging).then((result) => {\n returnTo(result)\n });\n }\n } else {\n if (chained) returnTo(result.data);\n else this.getZitiEntities(type, paging).then((result) => {\n returnTo(result)\n });\n }\n } else returnTo({error: \"Unable to save data\"});\n });\n }\n\n redefineObject(obj) {\n for (let prop in obj) {\n if (Array.isArray(obj[prop]) && obj[prop].length==0) {\n delete obj[prop];\n } else {\n if (typeof obj[prop] === \"string\" && obj[prop].trim().length==0) {\n delete obj[prop];\n } else {\n if (typeof obj[prop] === \"object\") {\n obj[prop] = this.redefineObject(obj[prop]);\n if (Object.keys(obj[prop]).length==0) {\n delete obj[prop];\n }\n }\n }\n }\n }\n return obj;\n }\n\n saveZitiSubData(params: any, returnTo: any) {\n const controllerDomain = this.settingsService?.settings?.selectedEdgeController || '';\n const serviceUrl = `${controllerDomain}/edge/management/v1`;\n\n const id = params.id;\n const type = params.type;\n const doing = params.doing || 'POST';\n const parentType = params.parentType;\n const fullType = parentType+\"/\"+id+\"/\"+type;\n const url = serviceUrl+\"/\"+fullType;\n const saveParams = params.save;\n\n this.callZitiEdge(url, saveParams, doing).then((result) => {\n this.getZitiEntities(fullType, params.paging).then((data) => {\n returnTo(data);\n });\n });\n }\n\n callZitiEdge(url: string, body: any, method: string = 'GET') {\n const options = this.getHttpOptions();\n let prom;\n switch (method) {\n case 'GET':\n prom = this.http.get(url, options).toPromise();\n break;\n case 'POST':\n prom = this.http.post(url, body, options).toPromise();\n break;\n case 'PUT':\n prom = this.http.put(url, body, options).toPromise();\n break;\n case 'PATCH':\n prom = this.http.patch(url, body, options).toPromise();\n break;\n case 'DELETE':\n prom = this.http.delete(url, options).toPromise();\n break;\n default:\n prom = this.http.get(url, options).toPromise();\n break;\n }\n return prom.catch((result) => {\n if (result?.error?.error?.code === 'UNAUTHORIZED') {\n this.zitiDomainController.handleUnauthorized();\n }\n return result?.error;\n });\n }\n\n override initZACButtonListener() {\n if (this.modalClose && this.modalShow) {\n return;\n }\n this.modalShow = modal.show;\n this.modalClose = modal.close;\n if (!this.modalShow || !this.modalClose) {\n return;\n }\n const modalIds = ['DetailModal', 'AddMessageModal', 'QRModal', 'ResetModal', 'OverrideModal', 'AddModal'];\n modal.show = (id, readOnly) => {\n this.modalShow(id, readOnly);\n if (modalIds.includes(id)) {\n $('body').addClass('updateModalOpen');\n }\n };\n modal.close = (event) => {\n this.modalClose(event);\n $('body').removeClass('updateModalOpen');\n };\n if (!this.settingsService?.supportedFeatures?.recipes) {\n $('.tab[data-go=\"/recipes\"]').hide();\n }\n }\n\n getHttpOptions(useZitiCreds = false) {\n const options: any = {\n headers: {\n accept: 'application/json',\n },\n params: {},\n responseType: 'json' as const,\n };\n return options;\n }\n\n handleError(result: any) {\n this.loggerService.error(result);\n const error = result;\n let message = '';\n if (error.cause&&error.causeMessage&&error.causeMessage.length>0) message = error.causeMessage;\n else if (error.cause&&error.cause.message&&error.cause.message.length>0) message = error.cause.message;\n else if (error.cause&&error.cause.reason&&error.cause.reason.length>0) message = error.cause.reason;\n else if (error.message&&error.message.length>0) message = error.message;\n else message = error;\n return {error: message};\n }\n}\n","import {ZacWrapperService, COMPONENTS} from \"./zac-wrapper.service\";\nimport {EventEmitter, Inject, Injectable} from \"@angular/core\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {Router} from \"@angular/router\";\nimport {ZITI_DOMAIN_CONTROLLER, ZitiDomainControllerService} from \"../../services/ziti-domain-controller.service\";\nimport {ZITI_URLS} from \"../../ziti-console.constants\";\nimport {Subscription} from \"rxjs\";\nimport {SETTINGS_SERVICE, SettingsService} from \"../../services/settings.service\";\n\nimport {get, set, isEmpty} from \"lodash\";\nimport {GrowlerService} from \"../messaging/growler.service\";\nimport {LoggerService} from \"../messaging/logger.service\";\nimport {ValidationService} from \"../../services/validation.service\";\nimport {ZITI_DATA_SERVICE, ZitiDataService} from \"../../services/ziti-data.service\";\n\n@Injectable({providedIn: 'root'})\nexport class NodeWrapperService extends ZacWrapperService {\n\n constructor(\n @Inject(ZITI_DOMAIN_CONTROLLER) override zitiDomainController: ZitiDomainControllerService,\n @Inject(ZITI_URLS) override URLS:any,\n @Inject(SETTINGS_SERVICE) override settingsService: SettingsService,\n override http: HttpClient,\n override router: Router,\n override growlerService: GrowlerService,\n override loggerService: LoggerService,\n override validationService: ValidationService\n ) {\n super(zitiDomainController, URLS, settingsService, http, router, growlerService, loggerService, validationService);\n }\n\n override initZac() {\n if (this.zacInit) {\n return;\n }\n const appInit = get(window, 'app.init');\n this.initZacListeners();\n this.zacInit = true;\n }\n}\n","import {Injectable, Inject} from '@angular/core';\nimport { HttpClient } from \"@angular/common/http\";\nimport { Router } from \"@angular/router\";\nimport {LoginServiceClass} from \"./login-service.class\";\nimport {SETTINGS_SERVICE} from \"./settings.service\";\nimport {SettingsServiceClass} from \"./settings-service.class\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoopLoginService extends LoginServiceClass {\n\n constructor(\n override httpClient: HttpClient,\n @Inject(SETTINGS_SERVICE) override settingsService: SettingsServiceClass,\n override router: Router,\n override growlerService: GrowlerService\n ) {\n super(httpClient, settingsService, router, growlerService);\n }\n\n override init() {}\n\n clearSession() {\n }\n\n hasSession(): boolean {\n return false;\n }\n\n login(prefix: string, url: string, username: string, password: string) {\n }\n\n logout() {\n }\n\n observeLogin(serviceUrl: string, username: string, password: string) {\n }\n\n checkOriginForController(): Promise<any> {\n return Promise.resolve(true);\n }\n}","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport {Inject, Injectable} from '@angular/core';\nimport { Router } from \"@angular/router\";\nimport {LoggerService} from \"../features/messaging/logger.service\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\nimport {SETTINGS_SERVICE, SettingsService} from \"./settings.service\";\nimport {firstValueFrom, map} from \"rxjs\";\nimport {catchError} from \"rxjs/operators\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {FilterObj} from \"../features/data-table/data-table-filter.service\";\nimport {isEmpty, get} from \"lodash\";\nimport {ZitiDataService} from \"./ziti-data.service\";\nimport {Resolver} from \"@stoplight/json-ref-resolver\";\nimport moment from \"moment\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NodeDataService extends ZitiDataService {\n\n constructor(override logger: LoggerService,\n override growler: GrowlerService,\n @Inject(SETTINGS_SERVICE) override settingsService: SettingsService,\n override httpClient: HttpClient,\n override router: Router\n ) {\n super(logger, growler, settingsService, httpClient, router)\n }\n\n post(type, model, chained = false) {\n let clientSub;\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/dataSave';\n const body = {paging: this.DEFAULT_PAGING, type: type, save: model, chained: chained};\n\n return firstValueFrom(this.httpClient.post(serviceUrl,body,{}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code !== \"ECONNREFUSED\") throw(err);\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n patch(type, model, id, chained = false) {\n let clientSub;\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/dataSave';\n const body = {paging: this.DEFAULT_PAGING, type: type, save: model, id: id, chained: chained};\n\n return firstValueFrom(this.httpClient.post(serviceUrl,body,{}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code !== \"ECONNREFUSED\") throw(err);\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n get(type: string, paging: any, filters: FilterObj[] = [], url?) {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/data';\n const body = {paging: paging, type: type, url: url};\n\n return firstValueFrom(this.httpClient.post(serviceUrl,body,{}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(filters.length > 0) {\n filters.forEach((filter:FilterObj) => {\n let newData: any[] = [];\n if(filter.columnId !== 'name' && !isEmpty(filter.value )) {\n results.data.forEach(row => {\n if(get(row, filter.columnId)?.indexOf(filter.value) >= 0)\n newData.push(row);\n })\n results.data = newData;\n }\n });\n } else if (results.error) {\n this.handleError(results)\n }\n return results;\n })\n )\n );\n }\n\n getSubdata(entityType: string, id: any, dataType: string) {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/subdata';\n const body = {url:`./${entityType}/${id}/${dataType}`, name: entityType, type: dataType };\n return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n } else if (results.error) {\n this.handleError(results)\n }\n return results;\n })\n )\n );\n }\n\n override saveSubdata(entityType: string, id: any, dataType: string, data: any): Promise<any> {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/subSave';\n const body = {\n type: dataType,\n parentType: entityType,\n id: id,\n doing: \"POST\",\n save: data\n }\n return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n override resetEnrollment(id: string, date: any): Promise<any> {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/resetEnroll';\n const dateStr = moment(date).format(\"M/D/YYYY hh:mm A\");\n const body = {\n date: dateStr,\n id: id\n }\n return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n override reissueEnrollment(id: string, date: string): Promise<any> {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/reissueEnroll';\n const dateStr = moment(date).format(\"M/D/YYYY hh:mm A\");\n const body = {\n date: dateStr,\n id: id\n }\n return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n override deleteSubdata(entityType: string, id: any, dataType: string, data: any): Promise<any> {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/subSave';\n const body = {\n type: dataType,\n parentType: entityType,\n id: id,\n doing: \"DELETE\",\n save: data\n }\n return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n delete(type: string, id: string) {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/delete';\n const body = {paging: this.DEFAULT_PAGING, type: type, ids: [id]};\n\n return firstValueFrom(this.httpClient.post(serviceUrl,body,{}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n call(url) {\n const nodeServerURL = window.location.origin;\n const serviceUrl = nodeServerURL + '/api/call';\n const body = {url: url};\n\n return firstValueFrom(this.httpClient.post(serviceUrl,body,{}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n if(!isEmpty(results.error)) {\n throw({error: results.error});\n }\n return results;\n })\n )\n );\n }\n\n schema(data: any): Promise<any> {\n const resolver = new Resolver();\n return resolver.resolve(data).then((schema) => {\n return schema.result\n });\n }\n\n private getUrlFilter(paging: any) {\n let urlFilter = '';\n let toSearchOn = \"name\";\n let noSearch = false;\n if (paging && paging.sort != null) {\n if (paging.searchOn) toSearchOn = paging.searchOn;\n if (paging.noSearch) noSearch = true;\n if (!paging.filter) paging.filter = \"\";\n paging.filter = paging.filter.split('#').join('');\n if (noSearch) {\n if (paging.page !== -1) urlFilter = \"?limit=\" + paging.total + \"&offset=\" + ((paging.page - 1) * paging.total) + \"&sort=\" + paging.sort + \" \" + paging.order;\n } else {\n if (paging.page !== -1) urlFilter = \"?filter=(\" + toSearchOn + \" contains \\\"\" + paging.filter + \"\\\")&limit=\" + paging.total + \"&offset=\" + ((paging.page - 1) * paging.total) + \"&sort=\" + paging.sort + \" \" + paging.order;\n if (paging.params) {\n for (const key in paging.params) {\n urlFilter += ((urlFilter.length === 0) ? \"?\" : \"&\") + key + \"=\" + paging.params[key];\n }\n }\n }\n }\n return urlFilter;\n }\n\n handleError(results) {\n if (results?.errorObj?.code === 'UNAUTHORIZED') {\n localStorage.removeItem('ziti.settings');\n window.location.href = '/login';\n } else {\n this.logger.error(results?.error)\n }\n }\n}\n","/*\n Copyright NetFoundry Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n https://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nimport { Injectable, Inject } from '@angular/core';\nimport { Router } from \"@angular/router\";\nimport {LoggerService} from \"../features/messaging/logger.service\";\nimport {GrowlerService} from \"../features/messaging/growler.service\";\nimport {SETTINGS_SERVICE, SettingsService} from \"./settings.service\";\nimport {firstValueFrom, map, Observable} from \"rxjs\";\nimport {catchError} from \"rxjs/operators\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {FilterObj} from \"../features/data-table/data-table-filter.service\";\nimport {ZitiDataService} from \"./ziti-data.service\";\nimport {isEmpty, isArray, isNumber} from \"lodash\";\nimport {Resolver} from \"@stoplight/json-ref-resolver\";\nimport moment from \"moment\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ZitiControllerDataService extends ZitiDataService {\n\n constructor(override logger: LoggerService,\n override growler: GrowlerService,\n @Inject(SETTINGS_SERVICE) settingsService: SettingsService,\n override httpClient: HttpClient,\n override router: Router\n ) {\n super(logger, growler, settingsService, httpClient, router);\n }\n\n post(type, model, chained = false): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path;\n const url = this.settingsService.settings.selectedEdgeController;\n const serviceUrl = url + prefix + \"/\" + type;\n\n return firstValueFrom(this.httpClient.post(serviceUrl, model, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code !== \"ECONNREFUSED\") throw(err);\n throw({error: error});\n }),\n map((result: any) => {\n return result;\n })\n )\n );\n }\n\n patch(type, model, id, chained = false): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController;\n const serviceUrl = url + prefix + \"/\" + type + '/' + id;\n this.httpClient.patch(serviceUrl, model, {});\n\n return firstValueFrom(this.httpClient.patch(serviceUrl, model, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code !== \"ECONNREFUSED\") throw(err);\n throw({error: error});\n }),\n map((result: any) => {\n return result;\n })\n )\n );\n }\n\n get(type: string, paging: any, filters: FilterObj[] = []): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController;\n const urlFilter = this.getUrlFilter(paging, filters);\n const serviceUrl = url + prefix + \"/\" + type + urlFilter;\n\n return firstValueFrom(this.httpClient.get(serviceUrl,{}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n return results;\n })\n )\n );\n }\n\n getSubdata(entityType: string, id: any, dataType: string): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController + `${prefix}/${entityType}/${id}/${dataType}`;\n\n return firstValueFrom(this.httpClient.get(url, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n })\n )\n );\n }\n\n saveSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController + `${prefix}/${entityType}/${id}/${dataType}`;\n\n return firstValueFrom(this.httpClient.post(url, params, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n })\n )\n );\n }\n\n deleteSubdata(entityType: string, id: any, dataType: string, params: any): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController + `${prefix}/${entityType}/${id}/${dataType}`;\n\n return firstValueFrom(this.httpClient.delete(url, {body: params}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n })\n )\n );\n }\n\n override resetEnrollment(id: string, date: any): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController + `${prefix}/authenticators/${id.trim()}/re-enroll`;\n const expiresAt = moment(date).utc().toISOString();\n const body = { expiresAt: expiresAt };\n return firstValueFrom(this.httpClient.post(url, body).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n })\n )\n );\n }\n\n override reissueEnrollment(id: string, date): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path || '/edge/management/v1';\n const url = this.settingsService.settings.selectedEdgeController + `${prefix}/enrollments/${id}/refresh`;\n const expiresAt = moment(date).utc().toISOString();\n const body = { expiresAt: expiresAt };\n return firstValueFrom(this.httpClient.post(url, body).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n })\n )\n );\n }\n\n delete(type: string, id: string): Promise<any> {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path;\n const url = this.settingsService.settings.selectedEdgeController;\n const serviceUrl = url + prefix + \"/\" + type + '/' + id;\n\n return firstValueFrom(this.httpClient.delete(serviceUrl, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n return results;\n })\n )\n );\n }\n\n call(callUrl) {\n const apiVersions = this.settingsService.apiVersions || {};\n const prefix = apiVersions[\"edge-management\"]?.v1?.path;\n const url = this.settingsService.settings.selectedEdgeController;\n const serviceUrl = url + prefix + \"/\" + callUrl;\n\n return firstValueFrom(this.httpClient.get(serviceUrl, {}).pipe(\n catchError((err: any) => {\n const error = \"Server Not Accessible\";\n if (err.code != \"ECONNREFUSED\") throw({error: err.code});\n throw({error: error});\n }),\n map((results: any) => {\n return results;\n })\n )\n );\n }\n\n private getUrlFilter(paging, filters: any[]) {\n let urlFilter = '';\n let toSearchOn = \"name\";\n let noSearch = filters?.length <= 0;\n if (isEmpty(paging)) {\n paging = this.DEFAULT_PAGING;\n }\n if (paging && paging.sort != null) {\n if (paging.searchOn) toSearchOn = paging.searchOn;\n if (paging.noSearch) noSearch = true;\n if (!paging.filter) paging.filter = \"\";\n if (!isArray(paging.filter) && isNaN(paging.filter)) {\n paging.filter = paging.filter.split('#').join('');\n }\n }\n filters.forEach((filter, index) => {\n let filterVal = '';\n switch (filter.type) {\n case 'TEXTINPUT':\n filterVal = `${filter.columnId} contains \"${filter.value}\"`;\n break;\n case 'SELECT':\n case 'COMBO':\n const val = isNumber(filter.value) ? `${filter.value}` : `\"${filter.value}\"`;\n filterVal = `${filter.columnId} = ${val}`;\n break;\n case 'DATETIME':\n filterVal = `${filter.columnId} >= datetime(${filter.value[0]}) and ${filter.columnId} <= datetime(${filter.value[1]})`;\n break;\n case 'ATTRIBUTE':\n filterVal = this.getAttributeFilter(filter.value, filter.columnId);\n break;\n default:\n filterVal = `${filter.columnId} contains \"${filter.value}\"`;\n break;\n }\n if (index <= 0) {\n urlFilter = `?filter= ${filterVal}`;\n } else {\n urlFilter += ` and ${filterVal}`\n }\n });\n if (noSearch) {\n if (paging.page !== -1) urlFilter = \"?limit=\" + paging.total + \"&offset=\" + ((paging.page - 1) * paging.total) + \"&sort=\" + paging.sort + \" \" + paging.order;\n } else {\n urlFilter += `&limit=${paging.total}&offset=${((paging.page - 1) * paging.total)}&sort=${paging.sort} ${paging.order}`\n }\n return urlFilter;\n }\n\n override schema(data): Promise<any> {\n return Promise.resolve(this.dereferenceJSONSchema(data));\n }\n\n async dereferenceJSONSchema(data: any) {\n const resolver = new Resolver();\n const schema = await resolver.resolve(data);\n return schema.result;\n }\n\n getAttributeFilter(val, columnId) {\n let filter = '';\n if (isArray(val)) {\n val.forEach((attr, index) => {\n if (index > 0) {\n filter += ' or ';\n }\n filter += `anyOf(${columnId}) = \"${attr}\"`;\n });\n } else {\n filter = `anyOf(${columnId}) = \"${val}\"`;\n }\n return filter;\n }\n}\n","import {Injectable, InjectionToken} from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const DEACTIVATE_GUARD = new InjectionToken<DeactivateGuardService>('DEACTIVATE_GUARD');\n\nexport interface CanComponentDeactivate {\n canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeactivateGuardService implements CanDeactivate<CanComponentDeactivate>{\n\n canDeactivate(component: CanComponentDeactivate) {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}","/*\n * Public API Surface of ziti-console-lib\n */\n\nexport * from './lib/ziti-console-lib.module';\nexport * from './lib/zac-routing.module';\nexport * from './lib/features/wrappers/zac-wrapper.component';\nexport * from './lib/features/wrappers/zac-wrapper.service';\nexport * from './lib/features/wrappers/zac-wrapper-service.class';\nexport * from './lib/features/wrappers/node-wrapper.service';\nexport * from './lib/pages/identities/identities-page.component';\nexport * from './lib/pages/identities/identities-page.service';\nexport * from './lib/pages/edge-routers/edge-routers-page.component';\nexport * from './lib/pages/edge-routers/edge-routers-page.service';\nexport * from './lib/pages/services/services-page.component';\nexport * from './lib/pages/services/services-page.service';\nexport * from './lib/pages/service-policies/service-policies-page.component';\nexport * from './lib/pages/service-policies/service-policies-page.service';\nexport * from './lib/services/login-service.class';\nexport * from './lib/services/noop-login.service';\nexport * from './lib/services/settings-service.class';\nexport * from './lib/services/settings.service';\nexport * from './lib/services/tab-name.service';\nexport * from './lib/services/ziti-data.service';\nexport * from './lib/services/node-data.service';\nexport * from './lib/services/ziti-controller-data.service';\nexport * from './lib/services/ziti-domain-controller.service';\nexport * from './lib/services/deactivate-guard.service';\nexport * from './lib/services/csv-download.service';\nexport * from './lib/features/projectable-forms/configuration/configuration-form.component';\nexport * from './lib/features/extendable/extendable.component';\nexport * from './lib/features/sidebars/side-toolbar/side-toolbar.component';\nexport * from './lib/features/sidebars/side-navbar/side-navbar.component';\nexport * from './lib/features/sidebars/side-banner/side-banner.component';\nexport * from './lib/features/dynamic-widgets/string/string-input.component';\nexport * from './lib/features/dynamic-widgets/number/number-input.component';\nexport * from './lib/features/dynamic-widgets/selector/selector-input.component';\nexport * from './lib/features/dynamic-widgets/password/password-input.component';\nexport * from './lib/features/dynamic-widgets/boolean/boolean-toggle-input.component';\nexport * from './lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component';\nexport * from './lib/features/dynamic-widgets/object/object.component';\nexport * from './lib/features/dynamic-widgets/text-list/text-list-input.component';\nexport * from './lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component';\nexport * from './lib/features/projectable-forms/projectable-form.class';\nexport * from './lib/features/messaging/growler.component';\nexport * from './lib/features/messaging/growler.service';\nexport * from './lib/features/messaging/growler.model';\nexport * from './lib/features/messaging/logger.service';\nexport * from './lib/pages/configurations/configurations-page.component';\nexport * from './lib/ziti-console.constants';\nexport * from './lib/features/side-modal/side-modal.component';\nexport * from './lib/features/projectable-forms/identity/identity-form.component';\nexport * from './lib/features/projectable-forms/identity/identity-form.service';\nexport * from './lib/features/projectable-forms/edge-router/edge-router-form.component';\nexport * from './lib/features/projectable-forms/edge-router/edge-router-form.service';\nexport * from './lib/features/projectable-forms/service/service-form.component';\nexport * from './lib/features/projectable-forms/service/service-form.service';\nexport * from './lib/features/projectable-forms/service-policy/service-policy-form.service';\nexport * from './lib/features/projectable-forms/service-policy/service-policy-form.component';\nexport * from './lib/features/reset-enrollment/reset-enrollment.service';\nexport * from './lib/features/extendable/extensions-noop.service';\nexport * from './lib/features/projectable-forms/form-header/form-header.component';\nexport * from './lib/features/loading-indicator/loading-indicator.component';\nexport * from './lib/models/identity';\nexport * from './lib/models/edge-router';\nexport * from './lib/features/messaging/growler.module';\nexport * from './lib/shared/list-page-component.class';\nexport * from './lib/shared/list-page-service.class';\nexport * from './lib/features/projectable-forms/form-field-container/form-field-container.component';\nexport * from './lib/features/projectable-forms/form-field-toggle/form-field-toggle.component';\nexport * from './lib/version';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LoggerService","service","growler","context","page","settings","DEFAULTS","i1","i2.GrowlerService","$","tags","i3.GrowlerService","i4.LoggerService","i5.ValidationService","i3","i4","i5.LoadingIndicatorComponent","i6.SafePipe","i2","isNaN","i1.ValidationService","i3.StringInputComponent","i4.NumberInputComponent","i5.SelectorInputComponent","app","modal","i2.ConsoleEventsService","i5","i3.SettingsService","i1.DataTableFilterService","i2.ListPageServiceClass","i3.ConsoleEventsService","i4.TableColumnFilterComponent","i1.ForwardingConfigService","i2.ValidationService","i4.BooleanToggleInputComponent","i5.TextListInputComponent","i6.CheckboxListInputComponent","i7.ProtocolAddressPortInputComponent","i1.GrowlerService","i1.SchemaService","i2.DataTableFilterService","i3.CsvDownloadService","i3.JsonViewComponent","i3.ValidationService","i1.ConfigurationService","i2.SchemaService","i6.FormHeaderComponent","i7.FormFieldContainerComponent","i8.LoadingIndicatorComponent","i9.JsonViewComponent","i10.ConfigEditorComponent","moment","i1.ResetEnrollmentService","CSV_COLUMNS","i2.IdentitiesPageService","i3.EdgeRoutersPageService","i1.DataTableService","i6","i8","i9.FilterBarComponent","i10.HiddenColumnsBarComponent","i11.NoItemsComponent","i12.TagSelectorComponent","i1.ConsoleEventsService","i1.ConfigurationsPageService","i3.TabNameService","i4.ConsoleEventsService","i7.ConfigurationFormComponent","i8.ListPageHeaderComponent","i9.DataTableComponent","i10.SideModalComponent","i1.IdentityServicePathHelper","i7","map","i1.IdentityFormService","i8.PreviewListComponent","i9.LoadingIndicatorComponent","i10.FormFieldToggleComponent","i11.JsonViewComponent","i13.QrCodeComponent","i14.CustomTagsComponent","i15.SafePipe","i1.OverridesService","i1.IdentitiesPageService","i4.TabNameService","i6.ConsoleEventsService","i10.IdentityFormComponent","i11.SideModalComponent","i12.LoadingIndicatorComponent","i13.OverridesComponent","i1.EdgeRouterFormService","i5.FormHeaderComponent","i6.FormFieldContainerComponent","i7.PreviewListComponent","i9.FormFieldToggleComponent","i10.JsonViewComponent","i11.TagSelectorComponent","i12.QrCodeComponent","i13.CustomTagsComponent","i1.EdgeRoutersPageService","i5.ConsoleEventsService","i7.ListPageHeaderComponent","i8.DataTableComponent","i9.EdgeRouterFormComponent","i11.LoadingIndicatorComponent","i1.ServiceFormService","i12.CustomTagsComponent","i13.ConfigEditorComponent","i3.CardComponent","i4.FormFieldContainerComponent","i4.ValidationService","i5.ServicesPageService","i9.FormHeaderComponent","i10.FormFieldContainerComponent","i9.SideModalComponent","i10.LoadingIndicatorComponent","i11.ServiceFormComponent","i12.CardListComponent","i13.SimpleServiceComponent","i1.ServicePolicyFormService","i10.TagSelectorComponent","i10.ServicePolicyFormComponent"],"mappings":"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"}
|