@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,131 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright NetFoundry Inc.
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Injectable } from '@angular/core';
|
|
17
|
+
import { HttpClient } from "@angular/common/http";
|
|
18
|
+
import { BehaviorSubject } from "rxjs";
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "@angular/common/http";
|
|
21
|
+
import * as i2 from "../features/messaging/growler.service";
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
const { service, growler, context, page, settings } = window;
|
|
24
|
+
const DEFAULTS = {
|
|
25
|
+
"session": {},
|
|
26
|
+
"edgeControllers": [],
|
|
27
|
+
"editable": true,
|
|
28
|
+
"update": false,
|
|
29
|
+
"location": "../ziti",
|
|
30
|
+
"protocol": "http",
|
|
31
|
+
"host": "localhost",
|
|
32
|
+
"port": 1408,
|
|
33
|
+
"portTLS": 8443,
|
|
34
|
+
"rejectUnauthorized": false,
|
|
35
|
+
"mail": {
|
|
36
|
+
"host": "",
|
|
37
|
+
"port": 25,
|
|
38
|
+
"secure": false,
|
|
39
|
+
"auth": {
|
|
40
|
+
"user": "",
|
|
41
|
+
"pass": ""
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"from": "",
|
|
45
|
+
"to": "",
|
|
46
|
+
};
|
|
47
|
+
class SettingsServiceClass {
|
|
48
|
+
constructor(httpBackend, growlerService) {
|
|
49
|
+
this.httpBackend = httpBackend;
|
|
50
|
+
this.growlerService = growlerService;
|
|
51
|
+
this.name = "settings";
|
|
52
|
+
this.settings = {};
|
|
53
|
+
this.versionData = {};
|
|
54
|
+
this.settingsChange = new BehaviorSubject({});
|
|
55
|
+
this.rejectUnauthorized = false;
|
|
56
|
+
this.port = DEFAULTS.port;
|
|
57
|
+
this.portTLS = DEFAULTS.portTLS;
|
|
58
|
+
this.apiVersions = [];
|
|
59
|
+
this.protocol = DEFAULTS.protocol;
|
|
60
|
+
this.host = DEFAULTS.host;
|
|
61
|
+
this.supportedFeatures = {
|
|
62
|
+
organization: false,
|
|
63
|
+
tags: false,
|
|
64
|
+
customFields: false,
|
|
65
|
+
mailer: false,
|
|
66
|
+
recipes: false
|
|
67
|
+
};
|
|
68
|
+
this.httpClient = new HttpClient(httpBackend);
|
|
69
|
+
}
|
|
70
|
+
get() {
|
|
71
|
+
const tmp = localStorage.getItem('ziti.settings');
|
|
72
|
+
if (tmp) {
|
|
73
|
+
this.settings = JSON.parse(tmp);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.settings = { ...DEFAULTS };
|
|
77
|
+
localStorage.setItem('ziti.settings', JSON.stringify(this.settings));
|
|
78
|
+
}
|
|
79
|
+
settings.data = this.settings;
|
|
80
|
+
context.set(this.name, this.settings);
|
|
81
|
+
this.settingsChange.next(this.settings);
|
|
82
|
+
}
|
|
83
|
+
set(data) {
|
|
84
|
+
this.settings = data;
|
|
85
|
+
localStorage.setItem('ziti.settings', JSON.stringify(data));
|
|
86
|
+
context.set(this.name, this.settings);
|
|
87
|
+
this.settingsChange.next(this.settings);
|
|
88
|
+
}
|
|
89
|
+
version() {
|
|
90
|
+
this.versionData = localStorage.getItem('ziti.version');
|
|
91
|
+
context.set("version", this.versionData);
|
|
92
|
+
this.settings = { ...this.settings, version: this.versionData };
|
|
93
|
+
this.settingsChange.next(this.settings);
|
|
94
|
+
}
|
|
95
|
+
delete(url) {
|
|
96
|
+
service.call("server", { url: url }, this.deleted, "DELETE");
|
|
97
|
+
}
|
|
98
|
+
deleted(e) {
|
|
99
|
+
if (page != null && page.deleting != null && page.deleting == this.versionData.baseUrl) {
|
|
100
|
+
window.location.href = "/login";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
getHttpOptions() {
|
|
104
|
+
const options = {
|
|
105
|
+
headers: {
|
|
106
|
+
accept: '*',
|
|
107
|
+
},
|
|
108
|
+
params: {},
|
|
109
|
+
responseType: 'text',
|
|
110
|
+
};
|
|
111
|
+
return options;
|
|
112
|
+
}
|
|
113
|
+
addContoller(name, url) {
|
|
114
|
+
if (name.trim().length == 0 || url.trim().length == 0) {
|
|
115
|
+
growler.error("Name and URL required");
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.controllerSave(name, url);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SettingsServiceClass, deps: [{ token: i1.HttpBackend }, { token: i2.GrowlerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
122
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SettingsServiceClass, providedIn: 'root' }); }
|
|
123
|
+
}
|
|
124
|
+
export { SettingsServiceClass };
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SettingsServiceClass, decorators: [{
|
|
126
|
+
type: Injectable,
|
|
127
|
+
args: [{
|
|
128
|
+
providedIn: 'root'
|
|
129
|
+
}]
|
|
130
|
+
}], ctorParameters: function () { return [{ type: i1.HttpBackend }, { type: i2.GrowlerService }]; } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mtc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZXR0aW5ncy1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7Ozs7QUFJL0QsYUFBYTtBQUNiLE1BQU0sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNELE1BQU0sUUFBUSxHQUFHO0lBQ2IsU0FBUyxFQUFFLEVBQUU7SUFDYixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsVUFBVSxFQUFFLFNBQVM7SUFDckIsVUFBVSxFQUFFLE1BQU07SUFDbEIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLElBQUk7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsTUFBTSxFQUFFO1FBQ0osTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLFFBQVEsRUFBRSxLQUFLO1FBQ2YsTUFBTSxFQUFFO1lBQ0osTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsRUFBRTtTQUNiO0tBQ0o7SUFDRCxNQUFNLEVBQUUsRUFBRTtJQUNWLElBQUksRUFBRSxFQUFFO0NBQ1gsQ0FBQTtBQUVELE1BR3NCLG9CQUFvQjtJQXNCdEMsWUFBc0IsV0FBd0IsRUFBWSxjQUE4QjtRQUFs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SSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUNwRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRU0sY0FBYztRQUNqQixNQUFNLE9BQU8sR0FBUTtZQUNqQixPQUFPLEVBQUU7Z0JBQ0wsTUFBTSxFQUFFLEdBQUc7YUFDZDtZQUNELE1BQU0sRUFBRSxFQUFFO1lBQ1YsWUFBWSxFQUFFLE1BQWU7U0FDaEMsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBWSxFQUFFLEdBQVc7UUFDekMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNuRCxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUM7YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzsrR0FyRmlCLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRjFCLE1BQU07O1NBRUEsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNFbXB0eSwgZGVmZXJ9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7SHR0cEJhY2tlbmQsIEh0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBtYXAsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7c2VydmljZSwgZ3Jvd2xlciwgY29udGV4dCwgcGFnZSwgc2V0dGluZ3N9ID0gd2luZG93O1xuY29uc3QgREVGQVVMVFMgPSB7XG4gICAgXCJzZXNzaW9uXCI6IHt9LFxuICAgIFwiZWRnZUNvbnRyb2xsZXJzXCI6IFtdLFxuICAgIFwiZWRpdGFibGVcIjogdHJ1ZSxcbiAgICBcInVwZGF0ZVwiOiBmYWxzZSxcbiAgICBcImxvY2F0aW9uXCI6IFwiLi4veml0aVwiLFxuICAgIFwicHJvdG9jb2xcIjogXCJodHRwXCIsXG4gICAgXCJob3N0XCI6IFwibG9jYWxob3N0XCIsXG4gICAgXCJwb3J0XCI6IDE0MDgsXG4gICAgXCJwb3J0VExTXCI6IDg0NDMsXG4gICAgXCJyZWplY3RVbmF1dGhvcml6ZWRcIjogZmFsc2UsXG4gICAgXCJtYWlsXCI6IHtcbiAgICAgICAgXCJob3N0XCI6IFwiXCIsXG4gICAgICAgIFwicG9ydFwiOiAyNSxcbiAgICAgICAgXCJzZWN1cmVcIjogZmFsc2UsXG4gICAgICAgIFwiYXV0aFwiOiB7XG4gICAgICAgICAgICBcInVzZXJcIjogXCJcIixcbiAgICAgICAgICAgIFwicGFzc1wiOiBcIlwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiZnJvbVwiOiBcIlwiLFxuICAgIFwidG9cIjogXCJcIixcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZXR0aW5nc1NlcnZpY2VDbGFzcyB7XG5cbiAgICBuYW1lID0gXCJzZXR0aW5nc1wiO1xuICAgIHNldHRpbmdzOiBhbnkgPSB7fTtcbiAgICB2ZXJzaW9uRGF0YTogYW55ID0ge307XG4gICAgc2V0dGluZ3NDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pXG4gICAgcmVqZWN0VW5hdXRob3JpemVkID0gZmFsc2U7XG4gICAgcG9ydCA9IERFRkFVTFRTLnBvcnQ7XG4gICAgcG9ydFRMUyA9IERFRkFVTFRTLnBvcnRUTFM7XG4gICAgYXBpVmVyc2lvbnM6IGFueVtdID0gW107XG4gICAgcHJvdG9jb2wgPSBERUZBVUxUUy5wcm90b2NvbDtcbiAgICBob3N0ID0gREVGQVVMVFMuaG9zdDtcbiAgICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIHN1cHBvcnRlZEZlYXR1cmVzOiBhbnkgPSB7XG4gICAgICAgIG9yZ2FuaXphdGlvbjogZmFsc2UsXG4gICAgICAgIHRhZ3M6IGZhbHNlLFxuICAgICAgICBjdXN0b21GaWVsZHM6IGZhbHNlLFxuICAgICAgICBtYWlsZXI6IGZhbHNlLFxuICAgICAgICByZWNpcGVzOiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQmFja2VuZDogSHR0cEJhY2tlbmQsIHByb3RlY3RlZCBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoaHR0cEJhY2tlbmQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0KCk7XG4gICAgcHVibGljIGFic3RyYWN0IGNvbnRyb2xsZXJTYXZlKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0QXBpVmVyc2lvbnModXJsKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgbG9hZFNldHRpbmdzKCk7XG5cbiAgICBwdWJsaWMgZ2V0KCkge1xuICAgICAgICBjb25zdCB0bXAgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgneml0aS5zZXR0aW5ncycpO1xuICAgICAgICBpZiAodG1wKSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gSlNPTi5wYXJzZSh0bXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHsuLi5ERUZBVUxUU307XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgneml0aS5zZXR0aW5ncycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2V0dGluZ3MpKTtcbiAgICAgICAgfVxuICAgICAgICBzZXR0aW5ncy5kYXRhID0gdGhpcy5zZXR0aW5ncztcbiAgICAgICAgY29udGV4dC5zZXQodGhpcy5uYW1lLCB0aGlzLnNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZS5uZXh0KHRoaXMuc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcHVibGljIHNldChkYXRhOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IGRhdGE7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd6aXRpLnNldHRpbmdzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICBjb250ZXh0LnNldCh0aGlzLm5hbWUsIHRoaXMuc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlLm5leHQodGhpcy5zZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIHZlcnNpb24oKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbkRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgneml0aS52ZXJzaW9uJyk7XG4gICAgICAgIGNvbnRleHQuc2V0KFwidmVyc2lvblwiLCB0aGlzLnZlcnNpb25EYXRhKTtcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHsuLi50aGlzLnNldHRpbmdzLCB2ZXJzaW9uOiB0aGlzLnZlcnNpb25EYXRhfTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZS5uZXh0KHRoaXMuc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZykge1xuICAgICAgICBzZXJ2aWNlLmNhbGwoXCJzZXJ2ZXJcIiwge3VybDogdXJsfSwgdGhpcy5kZWxldGVkLCBcIkRFTEVURVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlZChlOiBhbnkpIHtcbiAgICAgICAgaWYgKHBhZ2UgIT0gbnVsbCAmJiBwYWdlLmRlbGV0aW5nICE9IG51bGwgJiYgcGFnZS5kZWxldGluZyA9PSB0aGlzLnZlcnNpb25EYXRhLmJhc2VVcmwpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvbG9naW5cIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIdHRwT3B0aW9ucygpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIGFjY2VwdDogJyonLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyBhcyBjb25zdCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbnRvbGxlcihuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XG4gICAgICAgIGlmIChuYW1lLnRyaW0oKS5sZW5ndGggPT0gMCB8fCB1cmwudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBncm93bGVyLmVycm9yKFwiTmFtZSBhbmQgVVJMIHJlcXVpcmVkXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyU2F2ZShuYW1lLCB1cmwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright NetFoundry Inc.
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Injectable, InjectionToken } from '@angular/core';
|
|
17
|
+
import { firstValueFrom, map, tap } from "rxjs";
|
|
18
|
+
import { catchError } from "rxjs/operators";
|
|
19
|
+
import { SettingsServiceClass } from "./settings-service.class";
|
|
20
|
+
import { GrowlerModel } from "../features/messaging/growler.model";
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
import * as i1 from "@angular/common/http";
|
|
23
|
+
import * as i2 from "../features/messaging/growler.service";
|
|
24
|
+
export const SETTINGS_SERVICE = new InjectionToken('SETTINGS_SERVICE');
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
const { service, growler, context, page, settings } = window;
|
|
27
|
+
const DEFAULTS = {
|
|
28
|
+
"session": {},
|
|
29
|
+
"edgeControllers": [],
|
|
30
|
+
"editable": true,
|
|
31
|
+
"update": false,
|
|
32
|
+
"location": "../ziti",
|
|
33
|
+
"protocol": "http",
|
|
34
|
+
"host": "localhost",
|
|
35
|
+
"port": 1408,
|
|
36
|
+
"portTLS": 8443,
|
|
37
|
+
"rejectUnauthorized": false,
|
|
38
|
+
"mail": {
|
|
39
|
+
"host": "",
|
|
40
|
+
"port": 25,
|
|
41
|
+
"secure": false,
|
|
42
|
+
"auth": {
|
|
43
|
+
"user": "",
|
|
44
|
+
"pass": ""
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"from": "",
|
|
48
|
+
"to": "",
|
|
49
|
+
};
|
|
50
|
+
const DEFAULT_API_VERSIONS = {
|
|
51
|
+
"edge": {
|
|
52
|
+
"v1": {
|
|
53
|
+
"apiBaseUrls": [
|
|
54
|
+
`${window.origin}/edge/client/v1`
|
|
55
|
+
],
|
|
56
|
+
"path": "/edge/client/v1"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"edge-client": {
|
|
60
|
+
"v1": {
|
|
61
|
+
"apiBaseUrls": [
|
|
62
|
+
`${window.origin}/edge/client/v1`
|
|
63
|
+
],
|
|
64
|
+
"path": "/edge/client/v1"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"edge-management": {
|
|
68
|
+
"v1": {
|
|
69
|
+
"apiBaseUrls": [
|
|
70
|
+
`${window.origin}/edge/management/v1`
|
|
71
|
+
],
|
|
72
|
+
"path": "/edge/management/v1"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
class SettingsService extends SettingsServiceClass {
|
|
77
|
+
constructor(httpBackend, growlerService) {
|
|
78
|
+
super(httpBackend, growlerService);
|
|
79
|
+
this.httpBackend = httpBackend;
|
|
80
|
+
this.growlerService = growlerService;
|
|
81
|
+
}
|
|
82
|
+
init() {
|
|
83
|
+
this.get();
|
|
84
|
+
this.version();
|
|
85
|
+
if (this.settings.port && !isNaN(this.settings.port))
|
|
86
|
+
this.port = this.settings.port;
|
|
87
|
+
if (this.settings.portTLS && !isNaN(this.settings.portTLS))
|
|
88
|
+
this.portTLS = this.settings.portTLS;
|
|
89
|
+
if (this.settings.rejectUnauthorized && !isNaN(this.settings.rejectUnauthorized))
|
|
90
|
+
this.rejectUnauthorized = this.settings.rejectUnauthorized;
|
|
91
|
+
if (this.settings.selectedEdgeController)
|
|
92
|
+
return this.initApiVersions(this.settings.selectedEdgeController);
|
|
93
|
+
else
|
|
94
|
+
return Promise.resolve();
|
|
95
|
+
}
|
|
96
|
+
loadSettings() {
|
|
97
|
+
//this is a no-op for the default settings service
|
|
98
|
+
}
|
|
99
|
+
controllerSave(name, url) {
|
|
100
|
+
url = url.split('#').join('').split('?').join('');
|
|
101
|
+
if (url.endsWith('/'))
|
|
102
|
+
url = url.substr(0, url.length - 1);
|
|
103
|
+
if (!url.startsWith('https://') && !url.startsWith('http://'))
|
|
104
|
+
url = 'https://' + url;
|
|
105
|
+
const callUrl = url + "/edge/management/v1/version?rejectUnauthorized=" + this.rejectUnauthorized;
|
|
106
|
+
firstValueFrom(this.httpClient.get(callUrl).pipe(catchError((err) => {
|
|
107
|
+
throw "Edge Controller not Online: " + err?.message;
|
|
108
|
+
}))).then((body) => {
|
|
109
|
+
try {
|
|
110
|
+
if (body.error) {
|
|
111
|
+
growler.error("Invalid Edge Controller: " + body.error);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
if (body?.data?.apiVersions?.edge?.v1 != null) {
|
|
115
|
+
this.apiVersions = body.data.apiVersions;
|
|
116
|
+
let found = false;
|
|
117
|
+
if (this.settings.edgeControllers?.length > 0) {
|
|
118
|
+
for (let i = 0; i < this.settings.edgeControllers.length; i++) {
|
|
119
|
+
if (this.settings.edgeControllers[i].url == url) {
|
|
120
|
+
found = true;
|
|
121
|
+
this.settings.edgeControllers[i].name = name;
|
|
122
|
+
this.settings.edgeControllers[i].url = url;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (!found) {
|
|
128
|
+
let isDefault = false;
|
|
129
|
+
if (!this.settings.edgeControllers)
|
|
130
|
+
this.settings.edgeControllers = [];
|
|
131
|
+
if (this.settings.edgeControllers?.length === 0)
|
|
132
|
+
isDefault = true;
|
|
133
|
+
this.settings.edgeControllers.push({
|
|
134
|
+
name: name,
|
|
135
|
+
url: url,
|
|
136
|
+
default: isDefault
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
this.settings.selectedEdgeController = url;
|
|
140
|
+
this.set(this.settings);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
growler.error("Invalid Edge Controller: " + JSON.stringify(body));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
growler.error("Invalid Edge Controller: " + e);
|
|
149
|
+
}
|
|
150
|
+
}).catch(err => {
|
|
151
|
+
growler.error(err);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
initApiVersions(url) {
|
|
155
|
+
url = url.split('#').join('').split('?').join('');
|
|
156
|
+
if (url.endsWith('/'))
|
|
157
|
+
url = url.substr(0, url.length - 1);
|
|
158
|
+
if (!url.startsWith('https://') && !url.startsWith('http://'))
|
|
159
|
+
url = 'https://' + url;
|
|
160
|
+
const callUrl = url + "/edge/management/v1/version?rejectUnauthorized=false";
|
|
161
|
+
return firstValueFrom(this.httpClient.get(callUrl)
|
|
162
|
+
.pipe(tap((body) => {
|
|
163
|
+
try {
|
|
164
|
+
if (body.error) {
|
|
165
|
+
growler.error("Invalid Edge Controller: " + body.error);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
this.apiVersions = body.data.apiVersions;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
growler.error("Invalid Edge Controller: " + body);
|
|
173
|
+
}
|
|
174
|
+
}), catchError((err) => {
|
|
175
|
+
this.apiVersions = DEFAULT_API_VERSIONS;
|
|
176
|
+
const growlerData = new GrowlerModel('error', 'Error', `Edge Controller`, `Failed to connect to Edge Controller: ${err?.message}`);
|
|
177
|
+
const res = { data: this.apiVersions };
|
|
178
|
+
return Promise.resolve(res);
|
|
179
|
+
}), map((body) => {
|
|
180
|
+
return body?.data?.apiVersions;
|
|
181
|
+
})));
|
|
182
|
+
}
|
|
183
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SettingsService, deps: [{ token: i1.HttpBackend }, { token: i2.GrowlerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
184
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SettingsService, providedIn: 'root' }); }
|
|
185
|
+
}
|
|
186
|
+
export { SettingsService };
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SettingsService, decorators: [{
|
|
188
|
+
type: Injectable,
|
|
189
|
+
args: [{
|
|
190
|
+
providedIn: 'root'
|
|
191
|
+
}]
|
|
192
|
+
}], ctorParameters: function () { return [{ type: i1.HttpBackend }, { type: i2.GrowlerService }]; } });
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFVBQVUsRUFBVSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7QUFFakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGtCQUFrQixDQUFDLENBQUM7QUFFN0YsYUFBYTtBQUNiLE1BQU0sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNELE1BQU0sUUFBUSxHQUFHO0lBQ2IsU0FBUyxFQUFFLEVBQUU7SUFDYixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsVUFBVSxFQUFFLFNBQVM7SUFDckIsVUFBVSxFQUFFLE1BQU07SUFDbEIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLElBQUk7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsTUFBTSxFQUFFO1FBQ0osTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLFFBQVEsRUFBRSxL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RCxDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQVEsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQzFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNkLE9BQU8sSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUE7UUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7K0dBdkdRLGVBQWU7bUhBQWYsZUFBZSxjQUZaLE1BQU07O1NBRVQsZUFBZTs0RkFBZixlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tLCBtYXAsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge2lzRW1wdHksIGRlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0h0dHBCYWNrZW5kLCBIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7U2V0dGluZ3NTZXJ2aWNlQ2xhc3N9IGZyb20gXCIuL3NldHRpbmdzLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi9mZWF0dXJlcy9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5cbmV4cG9ydCBjb25zdCBTRVRUSU5HU19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPFNldHRpbmdzU2VydmljZUNsYXNzPignU0VUVElOR1NfU0VSVklDRScpO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7c2VydmljZSwgZ3Jvd2xlciwgY29udGV4dCwgcGFnZSwgc2V0dGluZ3N9ID0gd2luZG93O1xuY29uc3QgREVGQVVMVFMgPSB7XG4gICAgXCJzZXNzaW9uXCI6IHt9LFxuICAgIFwiZWRnZUNvbnRyb2xsZXJzXCI6IFtdLFxuICAgIFwiZWRpdGFibGVcIjogdHJ1ZSxcbiAgICBcInVwZGF0ZVwiOiBmYWxzZSxcbiAgICBcImxvY2F0aW9uXCI6IFwiLi4veml0aVwiLFxuICAgIFwicHJvdG9jb2xcIjogXCJodHRwXCIsXG4gICAgXCJob3N0XCI6IFwibG9jYWxob3N0XCIsXG4gICAgXCJwb3J0XCI6IDE0MDgsXG4gICAgXCJwb3J0VExTXCI6IDg0NDMsXG4gICAgXCJyZWplY3RVbmF1dGhvcml6ZWRcIjogZmFsc2UsXG4gICAgXCJtYWlsXCI6IHtcbiAgICAgICAgXCJob3N0XCI6IFwiXCIsXG4gICAgICAgIFwicG9ydFwiOiAyNSxcbiAgICAgICAgXCJzZWN1cmVcIjogZmFsc2UsXG4gICAgICAgIFwiYXV0aFwiOiB7XG4gICAgICAgICAgICBcInVzZXJcIjogXCJcIixcbiAgICAgICAgICAgIFwicGFzc1wiOiBcIlwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiZnJvbVwiOiBcIlwiLFxuICAgIFwidG9cIjogXCJcIixcbn1cblxuY29uc3QgREVGQVVMVF9BUElfVkVSU0lPTlM6IGFueSA9IHtcbiAgICBcImVkZ2VcIjoge1xuICAgICAgXCJ2MVwiOiB7XG4gICAgICAgIFwiYXBpQmFzZVVybHNcIjogW1xuICAgICAgICAgIGAke3dpbmRvdy5vcmlnaW59L2VkZ2UvY2xpZW50L3YxYFxuICAgICAgICBdLFxuICAgICAgICBcInBhdGhcIjogXCIvZWRnZS9jbGllbnQvdjFcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJlZGdlLWNsaWVudFwiOiB7XG4gICAgICBcInYxXCI6IHtcbiAgICAgICAgXCJhcGlCYXNlVXJsc1wiOiBbXG4gICAgICAgICAgYCR7d2luZG93Lm9yaWdpbn0vZWRnZS9jbGllbnQvdjFgXG4gICAgICAgIF0sXG4gICAgICAgIFwicGF0aFwiOiBcIi9lZGdlL2NsaWVudC92MVwiXG4gICAgICB9XG4gICAgfSxcbiAgICBcImVkZ2UtbWFuYWdlbWVudFwiOiB7XG4gICAgICBcInYxXCI6IHtcbiAgICAgICAgXCJhcGlCYXNlVXJsc1wiOiBbXG4gICAgICAgICAgYCR7d2luZG93Lm9yaWdpbn0vZWRnZS9tYW5hZ2VtZW50L3YxYFxuICAgICAgICBdLFxuICAgICAgICBcInBhdGhcIjogXCIvZWRnZS9tYW5hZ2VtZW50L3YxXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlIGV4dGVuZHMgU2V0dGluZ3NTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgY29uc3RydWN0b3Iob3ZlcnJpZGUgaHR0cEJhY2tlbmQ6IEh0dHBCYWNrZW5kLCBvdmVycmlkZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoaHR0cEJhY2tlbmQsIGdyb3dsZXJTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICB0aGlzLmdldCgpO1xuICAgICAgICB0aGlzLnZlcnNpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5wb3J0ICYmICFpc05hTih0aGlzLnNldHRpbmdzLnBvcnQpKSB0aGlzLnBvcnQgPSB0aGlzLnNldHRpbmdzLnBvcnQ7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnBvcnRUTFMgJiYgIWlzTmFOKHRoaXMuc2V0dGluZ3MucG9ydFRMUykpIHRoaXMucG9ydFRMUyA9IHRoaXMuc2V0dGluZ3MucG9ydFRMUztcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MucmVqZWN0VW5hdXRob3JpemVkICYmICFpc05hTih0aGlzLnNldHRpbmdzLnJlamVjdFVuYXV0aG9yaXplZCkpIHRoaXMucmVqZWN0VW5hdXRob3JpemVkID0gdGhpcy5zZXR0aW5ncy5yZWplY3RVbmF1dGhvcml6ZWQ7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpIHJldHVybiB0aGlzLmluaXRBcGlWZXJzaW9ucyh0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpO1xuICAgICAgICBlbHNlIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBsb2FkU2V0dGluZ3MoKSB7XG4gICAgICAgIC8vdGhpcyBpcyBhIG5vLW9wIGZvciB0aGUgZGVmYXVsdCBzZXR0aW5ncyBzZXJ2aWNlXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29udHJvbGxlclNhdmUobmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJyMnKS5qb2luKCcnKS5zcGxpdCgnPycpLmpvaW4oJycpO1xuICAgICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zdWJzdHIoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAoIXVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmICF1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpKSB1cmwgPSAnaHR0cHM6Ly8nICsgdXJsO1xuICAgICAgICBjb25zdCBjYWxsVXJsID0gdXJsICsgXCIvZWRnZS9tYW5hZ2VtZW50L3YxL3ZlcnNpb24/cmVqZWN0VW5hdXRob3JpemVkPVwiICsgdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQ7XG4gICAgICAgIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cENsaWVudC5nZXQoY2FsbFVybCkucGlwZShjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgXCJFZGdlIENvbnRyb2xsZXIgbm90IE9ubGluZTogXCIgKyBlcnI/Lm1lc3NhZ2U7XG4gICAgICAgIH0pKSkudGhlbigoYm9keTogYW55KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChib2R5LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJJbnZhbGlkIEVkZ2UgQ29udHJvbGxlcjogXCIgKyBib2R5LmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYm9keT8uZGF0YT8uYXBpVmVyc2lvbnM/LmVkZ2U/LnYxICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpVmVyc2lvbnMgPSBib2R5LmRhdGEuYXBpVmVyc2lvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmVkZ2VDb250cm9sbGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzW2ldLnVybCA9PSB1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzW2ldLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnNbaV0udXJsID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnMpIHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzPy5sZW5ndGggPT09IDApIGlzRGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBpc0RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm93bGVyLmVycm9yKFwiSW52YWxpZCBFZGdlIENvbnRyb2xsZXI6IFwiICsgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJJbnZhbGlkIEVkZ2UgQ29udHJvbGxlcjogXCIgKyBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRBcGlWZXJzaW9ucyh1cmw6IHN0cmluZykge1xuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJyMnKS5qb2luKCcnKS5zcGxpdCgnPycpLmpvaW4oJycpO1xuICAgICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zdWJzdHIoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAoIXVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmICF1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpKSB1cmwgPSAnaHR0cHM6Ly8nICsgdXJsO1xuICAgICAgICBjb25zdCBjYWxsVXJsID0gdXJsICsgXCIvZWRnZS9tYW5hZ2VtZW50L3YxL3ZlcnNpb24/cmVqZWN0VW5hdXRob3JpemVkPWZhbHNlXCI7XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQuZ2V0KGNhbGxVcmwpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGJvZHk6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm93bGVyLmVycm9yKFwiSW52YWxpZCBFZGdlIENvbnRyb2xsZXI6IFwiICsgYm9keS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpVmVyc2lvbnMgPSBib2R5LmRhdGEuYXBpVmVyc2lvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJJbnZhbGlkIEVkZ2UgQ29udHJvbGxlcjogXCIgKyBib2R5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpVmVyc2lvbnMgPSBERUZBVUxUX0FQSV9WRVJTSU9OUztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBgRWRnZSBDb250cm9sbGVyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gY29ubmVjdCB0byBFZGdlIENvbnRyb2xsZXI6ICR7ZXJyPy5tZXNzYWdlfWAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlczogYW55ID0ge2RhdGE6IHRoaXMuYXBpVmVyc2lvbnN9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKChib2R5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk/LmRhdGE/LmFwaVZlcnNpb25zXG4gICAgICAgICAgICAgICAgfSkpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Inject, Injectable, InjectionToken } from '@angular/core';
|
|
2
|
+
import { SETTINGS_SERVICE } from "./settings.service";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./settings-service.class";
|
|
5
|
+
export const ZITI_TAB_OVERRIDES = new InjectionToken('ZITI_TAB_OVERRIDES');
|
|
6
|
+
export class NoopTabInterceptorService {
|
|
7
|
+
override(key, tabs) {
|
|
8
|
+
return tabs;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
class TabNameService {
|
|
12
|
+
constructor(interceptor, settings) {
|
|
13
|
+
this.interceptor = interceptor;
|
|
14
|
+
this.settings = settings;
|
|
15
|
+
this.pageToTabsMap = new Map([
|
|
16
|
+
["identities", [
|
|
17
|
+
{ label: 'Identities', url: '/identities' },
|
|
18
|
+
{ label: 'Recipes', url: '/recipes', hidden: !this.settings.supportedFeatures?.recipies },
|
|
19
|
+
{ label: 'Terminators', url: '/terminators' },
|
|
20
|
+
{ label: 'Posture Checks', url: '/posture-checks' },
|
|
21
|
+
]
|
|
22
|
+
],
|
|
23
|
+
["services", [
|
|
24
|
+
{ label: 'Services', url: '/services' },
|
|
25
|
+
{ label: 'Configurations', url: '/configs' },
|
|
26
|
+
{ label: 'Config Types', url: '/config-types' },
|
|
27
|
+
]
|
|
28
|
+
],
|
|
29
|
+
["routers", [
|
|
30
|
+
{ label: 'Routers', url: '/routers' },
|
|
31
|
+
{ label: 'Transit Routers', url: '/transit-routers' },
|
|
32
|
+
{ label: 'Router Policies', url: '/router-policies' },
|
|
33
|
+
],
|
|
34
|
+
],
|
|
35
|
+
["policies", [
|
|
36
|
+
{ label: 'Service Policies', url: '/service-policies' },
|
|
37
|
+
{ label: 'Router Policies', url: '/router-policies' },
|
|
38
|
+
{ label: 'Service Router Policies', url: '/service-router-policies' },
|
|
39
|
+
{ label: 'Auth Policies', url: '/auth-policies' },
|
|
40
|
+
{ label: 'JWT Signers', url: '/jwt-signers' },
|
|
41
|
+
],
|
|
42
|
+
],
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
getTabs(key) {
|
|
46
|
+
const val = this.pageToTabsMap.get(key);
|
|
47
|
+
return this.interceptor.override(key, val);
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabNameService, deps: [{ token: ZITI_TAB_OVERRIDES }, { token: SETTINGS_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabNameService, providedIn: 'root' }); }
|
|
51
|
+
}
|
|
52
|
+
export { TabNameService };
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabNameService, decorators: [{
|
|
54
|
+
type: Injectable,
|
|
55
|
+
args: [{
|
|
56
|
+
providedIn: 'root'
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
59
|
+
type: Inject,
|
|
60
|
+
args: [ZITI_TAB_OVERRIDES]
|
|
61
|
+
}] }, { type: i1.SettingsServiceClass, decorators: [{
|
|
62
|
+
type: Inject,
|
|
63
|
+
args: [SETTINGS_SERVICE]
|
|
64
|
+
}] }]; } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLW5hbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy90YWItbmFtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRXBELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixDQUFDLENBQUM7QUFNbkYsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxRQUFRLENBQUMsR0FBVyxFQUFFLElBQVc7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBRUQsTUFHYSxjQUFjO0lBa0N2QixZQUN3QyxXQUFrQyxFQUNwQyxRQUE4QjtRQUQ1QixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUFsQ3BFLGtCQUFhLEdBQUcsSUFBSSxHQUFHLENBQ25CO1lBQ0ksQ0FBQyxZQUFZLEVBQUU7b0JBQ1gsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUM7b0JBQ3pDLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFDO29CQUN2RixFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBQztvQkFDM0MsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFDO2lCQUNwRDthQUNBO1lBQ0QsQ0FBQyxVQUFVLEVBQUU7b0JBQ1QsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUM7b0JBQ3JDLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUM7b0JBQzFDLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFDO2lCQUNoRDthQUNBO1lBQ0QsQ0FBQyxTQUFTLEVBQUU7b0JBQ1IsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUM7b0JBQ25DLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBQztvQkFDbkQsRUFBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFDO2lCQUN0RDthQUNBO1lBQ0QsQ0FBQyxVQUFVLEVBQUU7b0JBQ1QsRUFBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLG1CQUFtQixFQUFDO29CQUNyRCxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUM7b0JBQ25ELEVBQUMsS0FBSyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsRUFBRSwwQkFBMEIsRUFBQztvQkFDbkUsRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBQztvQkFDL0MsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUM7aUJBQzlDO2FBQ0E7U0FDSixDQUNKLENBQUM7SUFNRixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDZixNQUFNLEdBQUcsR0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM5QyxDQUFDOytHQTNDUSxjQUFjLGtCQW1DWCxrQkFBa0IsYUFDbEIsZ0JBQWdCO21IQXBDbkIsY0FBYyxjQUZYLE1BQU07O1NBRVQsY0FBYzs0RkFBZCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBb0NRLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2VDbGFzc30gZnJvbSBcIi4vc2V0dGluZ3Mtc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFfSBmcm9tIFwiLi9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjb25zdCBaSVRJX1RBQl9PVkVSUklERVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignWklUSV9UQUJfT1ZFUlJJREVTJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFiSW50ZXJjZXB0b3JTZXJ2aWNlIHtcbiAgICBvdmVycmlkZShrZXk6IHN0cmluZywgdGFiczogYW55W10pOiBhbnlbXTtcbn1cblxuZXhwb3J0IGNsYXNzIE5vb3BUYWJJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBUYWJJbnRlcmNlcHRvclNlcnZpY2Uge1xuICAgIG92ZXJyaWRlKGtleTogc3RyaW5nLCB0YWJzOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRhYnM7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYk5hbWVTZXJ2aWNlIHtcblxuICAgIHBhZ2VUb1RhYnNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KFxuICAgICAgICBbXG4gICAgICAgICAgICBbXCJpZGVudGl0aWVzXCIsIFtcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdJZGVudGl0aWVzJywgdXJsOiAnL2lkZW50aXRpZXMnfSxcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdSZWNpcGVzJywgdXJsOiAnL3JlY2lwZXMnLCBoaWRkZW46ICF0aGlzLnNldHRpbmdzLnN1cHBvcnRlZEZlYXR1cmVzPy5yZWNpcGllc30sXG4gICAgICAgICAgICAgICAge2xhYmVsOiAnVGVybWluYXRvcnMnLCB1cmw6ICcvdGVybWluYXRvcnMnfSxcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdQb3N0dXJlIENoZWNrcycsIHVybDogJy9wb3N0dXJlLWNoZWNrcyd9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcInNlcnZpY2VzXCIsIFtcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdTZXJ2aWNlcycsIHVybDogJy9zZXJ2aWNlcyd9LFxuICAgICAgICAgICAgICAgIHtsYWJlbDogJ0NvbmZpZ3VyYXRpb25zJywgdXJsOiAnL2NvbmZpZ3MnfSxcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdDb25maWcgVHlwZXMnLCB1cmw6ICcvY29uZmlnLXR5cGVzJ30sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1wicm91dGVyc1wiLCBbXG4gICAgICAgICAgICAgICAge2xhYmVsOiAnUm91dGVycycsIHVybDogJy9yb3V0ZXJzJ30sXG4gICAgICAgICAgICAgICAge2xhYmVsOiAnVHJhbnNpdCBSb3V0ZXJzJywgdXJsOiAnL3RyYW5zaXQtcm91dGVycyd9LFxuICAgICAgICAgICAgICAgIHtsYWJlbDogJ1JvdXRlciBQb2xpY2llcycsIHVybDogJy9yb3V0ZXItcG9saWNpZXMnfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1wicG9saWNpZXNcIiwgW1xuICAgICAgICAgICAgICAgIHtsYWJlbDogJ1NlcnZpY2UgUG9saWNpZXMnLCB1cmw6ICcvc2VydmljZS1wb2xpY2llcyd9LFxuICAgICAgICAgICAgICAgIHtsYWJlbDogJ1JvdXRlciBQb2xpY2llcycsIHVybDogJy9yb3V0ZXItcG9saWNpZXMnfSxcbiAgICAgICAgICAgICAgICB7bGFiZWw6ICdTZXJ2aWNlIFJvdXRlciBQb2xpY2llcycsIHVybDogJy9zZXJ2aWNlLXJvdXRlci1wb2xpY2llcyd9LFxuICAgICAgICAgICAgICAgIHtsYWJlbDogJ0F1dGggUG9saWNpZXMnLCB1cmw6ICcvYXV0aC1wb2xpY2llcyd9LFxuICAgICAgICAgICAgICAgIHtsYWJlbDogJ0pXVCBTaWduZXJzJywgdXJsOiAnL2p3dC1zaWduZXJzJ30sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChaSVRJX1RBQl9PVkVSUklERVMpIHByaXZhdGUgaW50ZXJjZXB0b3I6IFRhYkludGVyY2VwdG9yU2VydmljZSxcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2VDbGFzc1xuICAgICkge1xuICAgIH1cblxuICAgIGdldFRhYnMoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdmFsID0gIHRoaXMucGFnZVRvVGFic01hcC5nZXQoa2V5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJjZXB0b3Iub3ZlcnJpZGUoa2V5LCB2YWwpXG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { includes, isNil, isNumber } from "lodash";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class ValidationService {
|
|
5
|
+
getPortRanges(allowedPortRanges) {
|
|
6
|
+
if (!allowedPortRanges) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const ranges = [];
|
|
10
|
+
allowedPortRanges.forEach((val) => {
|
|
11
|
+
const vals = val.split('-');
|
|
12
|
+
if (vals.length === 1) {
|
|
13
|
+
const port = parseInt(val);
|
|
14
|
+
ranges.push({ high: port, low: port });
|
|
15
|
+
}
|
|
16
|
+
else if (vals.length === 2) {
|
|
17
|
+
const port1 = parseInt(vals[0]);
|
|
18
|
+
const port2 = parseInt(vals[1]);
|
|
19
|
+
ranges.push({ low: port1, high: port2 });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
// do nothing, invalid range
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return ranges;
|
|
26
|
+
}
|
|
27
|
+
combinePortRanges(allowedPortRanges) {
|
|
28
|
+
const val = [];
|
|
29
|
+
if (!allowedPortRanges) {
|
|
30
|
+
return val;
|
|
31
|
+
}
|
|
32
|
+
allowedPortRanges.forEach((range) => {
|
|
33
|
+
if (range.low === range.high) {
|
|
34
|
+
val.push(range.low + '');
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
val.push(range.low + '-' + range.high);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return val;
|
|
41
|
+
}
|
|
42
|
+
parsePortRanges(portRanges) {
|
|
43
|
+
const parsedPortRanges = [];
|
|
44
|
+
if (!portRanges) {
|
|
45
|
+
return parsedPortRanges;
|
|
46
|
+
}
|
|
47
|
+
portRanges.forEach((val) => {
|
|
48
|
+
const vals = val.split('-');
|
|
49
|
+
if (vals.length === 1) {
|
|
50
|
+
const port = parseInt(val);
|
|
51
|
+
parsedPortRanges.push({
|
|
52
|
+
low: port,
|
|
53
|
+
high: port
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else if (vals.length === 2) {
|
|
57
|
+
const port1 = parseInt(vals[0]);
|
|
58
|
+
const port2 = parseInt(vals[1]);
|
|
59
|
+
parsedPortRanges.push({
|
|
60
|
+
low: port1,
|
|
61
|
+
high: port2
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return parsedPortRanges;
|
|
66
|
+
}
|
|
67
|
+
validatePortRanges(portRanges) {
|
|
68
|
+
let invalid = false;
|
|
69
|
+
if (!portRanges) {
|
|
70
|
+
return invalid;
|
|
71
|
+
}
|
|
72
|
+
portRanges.forEach((range) => {
|
|
73
|
+
if (!this.isValidPort(range.low) || !this.isValidPort(range.high)) {
|
|
74
|
+
invalid = true;
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
else if (range.low > range.high) {
|
|
78
|
+
invalid = true;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return invalid;
|
|
83
|
+
}
|
|
84
|
+
isValidPort(port) {
|
|
85
|
+
return !isNaN(port) && isNumber(port) && port >= 1 && port <= 65535;
|
|
86
|
+
}
|
|
87
|
+
isValidInterceptHost(address) {
|
|
88
|
+
return includes(address, '.');
|
|
89
|
+
}
|
|
90
|
+
redefineObject(obj) {
|
|
91
|
+
for (let prop in obj) {
|
|
92
|
+
if (Array.isArray(obj[prop]) && obj[prop].length == 0) {
|
|
93
|
+
delete obj[prop];
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
if (typeof obj[prop] === "string" && obj[prop].trim().length == 0) {
|
|
97
|
+
delete obj[prop];
|
|
98
|
+
}
|
|
99
|
+
else if (isNil(obj[prop])) {
|
|
100
|
+
delete obj[prop];
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
if (typeof obj[prop] === "object") {
|
|
104
|
+
obj[prop] = this.redefineObject(obj[prop]);
|
|
105
|
+
if (Object.keys(obj[prop]).length == 0) {
|
|
106
|
+
delete obj[prop];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return obj;
|
|
113
|
+
}
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
115
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationService, providedIn: 'root' }); }
|
|
116
|
+
}
|
|
117
|
+
export { ValidationService };
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationService, decorators: [{
|
|
119
|
+
type: Injectable,
|
|
120
|
+
args: [{
|
|
121
|
+
providedIn: 'root'
|
|
122
|
+
}]
|
|
123
|
+
}] });
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxRQUFRLEVBQVcsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7QUFFMUQsTUFHYSxpQkFBaUI7SUFFMUIsYUFBYSxDQUFDLGlCQUFpQjtRQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDcEIsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO2FBQ3hDO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFB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Y0FGZCxNQUFNOztTQUVULGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7aW5jbHVkZXMsIGlzRW1wdHksIGlzTmlsLCBpc051bWJlcn0gZnJvbSBcImxvZGFzaFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25TZXJ2aWNlIHtcblxuICAgIGdldFBvcnRSYW5nZXMoYWxsb3dlZFBvcnRSYW5nZXMpIHtcbiAgICAgICAgaWYgKCFhbGxvd2VkUG9ydFJhbmdlcykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYW5nZXMgPSBbXTtcbiAgICAgICAgYWxsb3dlZFBvcnRSYW5nZXMuZm9yRWFjaCgodmFsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB2YWwuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmICh2YWxzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZUludCh2YWwpO1xuICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNoKHtoaWdoOiBwb3J0LCBsb3c6IHBvcnR9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFscy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3J0MSA9IHBhcnNlSW50KHZhbHNbMF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcnQyID0gcGFyc2VJbnQodmFsc1sxXSk7XG4gICAgICAgICAgICAgICAgcmFuZ2VzLnB1c2goe2xvdzogcG9ydDEsIGhpZ2g6IHBvcnQyfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcsIGludmFsaWQgcmFuZ2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByYW5nZXM7XG4gICAgfVxuXG4gICAgY29tYmluZVBvcnRSYW5nZXMoYWxsb3dlZFBvcnRSYW5nZXMpIHtcbiAgICAgICAgY29uc3QgdmFsID0gW107XG4gICAgICAgIGlmICghYWxsb3dlZFBvcnRSYW5nZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgYWxsb3dlZFBvcnRSYW5nZXMuZm9yRWFjaCgocmFuZ2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJhbmdlLmxvdyA9PT0gcmFuZ2UuaGlnaCkge1xuICAgICAgICAgICAgICAgIHZhbC5wdXNoKHJhbmdlLmxvdyArICcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsLnB1c2gocmFuZ2UubG93ICsgJy0nICsgcmFuZ2UuaGlnaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgIH1cblxuICAgIHBhcnNlUG9ydFJhbmdlcyhwb3J0UmFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFBvcnRSYW5nZXMgPSBbXTtcbiAgICAgICAgaWYgKCFwb3J0UmFuZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkUG9ydFJhbmdlcztcbiAgICAgICAgfVxuICAgICAgICBwb3J0UmFuZ2VzLmZvckVhY2goKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxzID0gdmFsLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAodmFscy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3J0ID0gcGFyc2VJbnQodmFsKTtcbiAgICAgICAgICAgICAgICBwYXJzZWRQb3J0UmFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBsb3c6IHBvcnQsXG4gICAgICAgICAgICAgICAgICAgIGhpZ2g6IHBvcnRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFscy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3J0MSA9IHBhcnNlSW50KHZhbHNbMF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcnQyID0gcGFyc2VJbnQodmFsc1sxXSk7XG4gICAgICAgICAgICAgICAgcGFyc2VkUG9ydFJhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbG93OiBwb3J0MSxcbiAgICAgICAgICAgICAgICAgICAgaGlnaDogcG9ydDJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXJzZWRQb3J0UmFuZ2VzO1xuICAgIH1cblxuICAgIHZhbGlkYXRlUG9ydFJhbmdlcyhwb3J0UmFuZ2VzKSB7XG4gICAgICAgIGxldCBpbnZhbGlkID0gZmFsc2U7XG4gICAgICAgIGlmICghcG9ydFJhbmdlcykge1xuICAgICAgICAgICAgcmV0dXJuIGludmFsaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcG9ydFJhbmdlcy5mb3JFYWNoKChyYW5nZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZFBvcnQocmFuZ2UubG93KSB8fCAhdGhpcy5pc1ZhbGlkUG9ydChyYW5nZS5oaWdoKSkge1xuICAgICAgICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmFuZ2UubG93ID4gcmFuZ2UuaGlnaCkge1xuICAgICAgICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbnZhbGlkO1xuICAgIH1cblxuICAgIGlzVmFsaWRQb3J0KHBvcnQpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihwb3J0KSAmJiBpc051bWJlcihwb3J0KSAmJiBwb3J0ID49IDEgJiYgcG9ydCA8PSA2NTUzNTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkSW50ZXJjZXB0SG9zdChhZGRyZXNzKSB7XG4gICAgICAgIHJldHVybiBpbmNsdWRlcyhhZGRyZXNzLCAnLicpO1xuICAgIH1cblxuICAgIHJlZGVmaW5lT2JqZWN0KG9iaikge1xuICAgICAgICBmb3IgKGxldCBwcm9wIGluIG9iaikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqW3Byb3BdKSAmJiBvYmpbcHJvcF0ubGVuZ3RoPT0wKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9ialtwcm9wXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbcHJvcF0gPT09IFwic3RyaW5nXCIgJiYgb2JqW3Byb3BdLnRyaW0oKS5sZW5ndGg9PTApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialtwcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmlsKG9ialtwcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialtwcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ialtwcm9wXSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW3Byb3BdID0gdGhpcy5yZWRlZmluZU9iamVjdChvYmpbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG9ialtwcm9wXSkubGVuZ3RoPT0wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialtwcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbn0iXX0=
|