From f222fdaa812c31a922da3e851c8e6d7ce76b712b Mon Sep 17 00:00:00 2001 From: Tom Pitkin Date: Tue, 31 Jan 2023 15:52:10 -0800 Subject: [PATCH 01/22] Bump to v1.37.0 --- CHANGELOG.md | 9 +++++++++ package-lock.json | 2 +- package.json | 2 +- src/schema/latest/base.schema.json | 1 + src/schema/latest/openapi.yaml | 2 +- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca7f2914..b9e6318c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Changelog Changes to this project are documented in this file. More detail and links can be found in the Declarative Onboarding [Document Revision History](https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest/revision-history.html). +## 1.37.0 +### Added + +### Fixed + +### Changed + +### Removed + ## 1.36.0 ### Added diff --git a/package-lock.json b/package-lock.json index 476a90d6..1540f26a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.36.0-3", + "version": "1.37.0-0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 56f85183..69d5ba04 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.36.0-3", + "version": "1.37.0-0", "description": "F5 Declarative Onboarding", "main": "index.js", "repository": { diff --git a/src/schema/latest/base.schema.json b/src/schema/latest/base.schema.json index fb21ca3b..efe1e822 100644 --- a/src/schema/latest/base.schema.json +++ b/src/schema/latest/base.schema.json @@ -10,6 +10,7 @@ "description": "Version of BIG-IP Declarative Onboarding schema this declaration uses.", "type": "string", "enum": [ + "1.37.0", "1.36.0", "1.35.0", "1.34.0", diff --git a/src/schema/latest/openapi.yaml b/src/schema/latest/openapi.yaml index 2c219e42..8b292232 100644 --- a/src/schema/latest/openapi.yaml +++ b/src/schema/latest/openapi.yaml @@ -2,7 +2,7 @@ openapi: 3.0.3 info: title: F5 BIG-IP Declarative Onboarding description: This reference describes the BIG-IP DO API and available endpoints. For more details, see https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest/using-do.html. - version: 1.36.0 + version: 1.37.0 contact: name: BIG-IP Declarative Onboarding email: solutionsfeedback@f5.com From 4cd42ba60d08b9137445a5b8a424353688294d0c Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Thu, 9 Feb 2023 16:48:21 -0800 Subject: [PATCH 02/22] updating branding on readme per Dittmer --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 19be6bd7..78a59928 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,35 @@ -# F5 Declarative Onboarding +# F5 BIG-IP Declarative Onboarding [![Slack Status](https://f5cloudsolutions.herokuapp.com/badge.svg)](https://f5cloudsolutions.herokuapp.com) [![Releases](https://img.shields.io/github/release/F5Networks/f5-declarative-onboarding.svg)](https://github.com/F5Networks/f5-declarative-onboarding/releases) [![Issues](https://img.shields.io/github/issues/F5Networks/f5-declarative-onboarding.svg)](https://github.com/F5Networks/f5-declarative-onboarding/issues) ## Introduction -F5 Declarative onboarding uses a declarative model to initially configure a BIG-IP device with all of the required settings to get up and running. This includes system settings such as licensing and provisioning, network settings such as VLANs and Self IPs, and clustering settings if you are using more than one BIG-IP system. +F5 BIG-IP Declarative Onboarding uses a declarative model to initially configure a F5 BIG-IP device with all of the required settings to get up and running. This includes system settings such as licensing and provisioning, network settings such as VLANs and Self IPs, and clustering settings if you are using more than one BIG-IP system. -**IMPORTANT** Beginning with DO 1.8.0, the DO RPM, Postman collection, and checksum files will no longer be located in the **/dist** directory in this repository. These files can be found on the [Release page](https://github.com/F5Networks/f5-declarative-onboarding/releases), as **Assets**. +**IMPORTANT** Beginning with F5 BIG-IP DO 1.8.0, the DO RPM, Postman collection, and checksum files will no longer be located in the **/dist** directory in this repository. These files can be found on the [Release page](https://github.com/F5Networks/f5-declarative-onboarding/releases), as **Assets**. ## Documentation -For the documentation on Declarative Onboarding, including download, installation, and usage instructions, see the Declarative Onboarding [User Guide](https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest). +For documentation on F5 BIG-IP Declarative Onboarding, including download, installation, and usage instructions, see the Declarative Onboarding [User Guide](https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest). -### Example Declarative Onboarding declarations +### Example F5 BIG-IP Declarative Onboarding declarations The Declarative Onboarding documentation contains example declarations you can modify to suit your needs. See the [Examples](https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest/examples.html) page. ## Filing Issues and Getting Help -If you come across a bug or other issue when using Declarative Onboarding, use [GitHub Issues](https://github.com/F5Networks/f5-declarative-onboarding/issues) to submit an issue for our team. You can also see the current known issues on that page, which are tagged with a purple Known Issue label. +If you come across a bug or other issue when using BIG-IP Declarative Onboarding, use [GitHub Issues](https://github.com/F5Networks/f5-declarative-onboarding/issues) to submit an issue for our team. You can also see the current known issues on that page, which are tagged with a purple Known Issue label. **Important**: Github Issues are consistently monitored by F5 staff, but should be considered as best effort only and you should not expect to receive the same level of response as provided by F5 Support. Please open a case as described below with F5 if this is a critical issue. -Because Declarative Onboarding versions 1.1.0 and later have been created and fully tested by F5 Networks, they are is fully supported by F5. This means you can get assistance if necessary from [F5 Technical Support](https://support.f5.com/csp/article/K25327565). +Because BIG-IP Declarative Onboarding versions 1.1.0 and later have been created and fully tested by F5 Networks, they are is fully supported by F5. This means you can get assistance if necessary from [F5 Technical Support](https://support.f5.com/csp/article/K25327565). -Be sure to see the [Support page](SUPPORT.md) in this repo for more details and supported versions of Declarative Onboarding. +Be sure to see the [Support page](SUPPORT.md) in this repo for more details and supported versions of BIG-IP Declarative Onboarding. ### Community Help We encourage you to use our [Slack channel](https://f5cloudsolutions.herokuapp.com) for discussion and assistance on Declarative Onboarding templates (click the **declarative-onboard** channel). There are F5 employees who are members of this community who typically monitor the channel Monday-Friday 9-5 PST and will offer best-effort assistance. See the [Slack Channel Statement](slack-channel-statement.md) for guidelines on using this channel. ## Copyright -Copyright 2014-2022 F5 Networks Inc. +Copyright 2014-2023 F5 Networks Inc. ### F5 Networks Contributor License Agreement From 552d041f956b7289ce95c344ee55927f560bcf27 Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 15 Feb 2023 09:11:40 -0800 Subject: [PATCH 03/22] Update test docs to use dev keys --- test/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/README.md b/test/README.md index 765adcf0..ca4ebfea 100644 --- a/test/README.md +++ b/test/README.md @@ -18,7 +18,7 @@ If `npx` is available on your system, you can run the locally installed version * Note: For future runs of the test, you'll need to delete and relaunch not only the BIG-IPs but the Stack object as well. * You will also need a BIG-IQ. * This BIG-IQ needs to be setup and running, make note of the login credentials for step 4. - * Get two "clpv2 license F5-BIG-MSP-LOADV2-LIC" eval (not dev) licenses from go/license. + * Get two "clpv2 license F5-BIG-MSP-LOADV2-LIC-DEV" dev (not eval) licenses from go/license. * Then add them to the BIG-IQ via Devices -> 'License Management' -> Licenses -> click 'Add License' * Name one 'myLicense' and the other 'myOtherLicensePool' 2. A Harness file is required to run the functional testing. This file will need the following (example below): From b687a54c4fd264019577d64860f734d6a158a651 Mon Sep 17 00:00:00 2001 From: autotool-updater Date: Thu, 16 Feb 2023 10:30:58 -0800 Subject: [PATCH 04/22] AUTOTOOL dependency updates --- package-lock.json | 2458 +++++++++++++++------------------------------ package.json | 10 +- 2 files changed, 822 insertions(+), 1646 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1540f26a..ab0b1a9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dev": true, + "devOptional": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -95,7 +95,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.18.6" }, @@ -104,13 +104,13 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true + "devOptional": true }, "@babel/types": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -354,7 +354,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-get-function-arity": "^7.15.4", "@babel/template": "^7.15.4", @@ -365,7 +365,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.15.4" } @@ -374,7 +374,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.15.4" } @@ -392,7 +392,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.15.4" } @@ -481,7 +481,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.15.4" } @@ -490,13 +490,13 @@ "version": "7.19.4", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true + "devOptional": true }, "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true + "devOptional": true }, "@babel/helper-validator-option": { "version": "7.14.5", @@ -519,7 +519,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -530,7 +530,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "devOptional": true, "requires": { "color-convert": "^1.9.0" } @@ -539,7 +539,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "devOptional": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -550,7 +550,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "devOptional": true, "requires": { "color-name": "1.1.3" } @@ -559,28 +559,13 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "devOptional": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "devOptional": true } } }, @@ -872,7 +857,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.15.4", @@ -883,7 +868,7 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true + "devOptional": true } } }, @@ -891,7 +876,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, + "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -908,7 +893,7 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, + "devOptional": true, "requires": { "@babel/types": "^7.15.6", "jsesc": "^2.5.1", @@ -919,13 +904,13 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true + "devOptional": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "devOptional": true } } }, @@ -933,7 +918,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, + "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -993,18 +978,18 @@ } }, "@f5devcentral/atg-shared-utilities": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@f5devcentral/atg-shared-utilities/-/atg-shared-utilities-0.5.4.tgz", - "integrity": "sha512-7SIEYyyCmpcDYILimz6/O+gAMNv81aJcyu11M7SUMzOpCNm2X8Vb3aRO7LY6XfcAV9SmYyT/d7xNCPjhcz6oOQ==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@f5devcentral/atg-shared-utilities/-/atg-shared-utilities-0.5.5.tgz", + "integrity": "sha512-aAZkJxO7NYiAoREsh3foEdVbaHvfH5Z8GWyywY+hUaevpLJWrWnkQqSIqBA+pjJYDLlX8rFQWgFEaQeyvKQd5A==", "requires": { "error": "7.2.1", "jaeger-client": "^3.18.1" } }, "@f5devcentral/atg-shared-utilities-dev": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@f5devcentral/atg-shared-utilities-dev/-/atg-shared-utilities-dev-0.2.11.tgz", - "integrity": "sha512-rF7OO98jAY0x2K3TTgkpDIhG/Rlwpi0RszVGxWP0s4bs3y9wKPCxX12BcK6DgDMZPjoWUM+BNk+ve7SgRKbTgg==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@f5devcentral/atg-shared-utilities-dev/-/atg-shared-utilities-dev-0.2.12.tgz", + "integrity": "sha512-S0uYIUcE83SQ+u3bl19r+ymOV3G2BDL42E8o3UG+FP6BKBXAjTaXLqRxBOKXWB+J7jBvKWtnrvfkp2DEV2caBA==", "dev": true }, "@f5devcentral/atg-storage": { @@ -1023,9 +1008,9 @@ } }, "@f5devcentral/f5-cloud-libs": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@f5devcentral/f5-cloud-libs/-/f5-cloud-libs-4.28.1.tgz", - "integrity": "sha512-G2YnlSacCN0OubyhsSwqyugM91UQlE0FPvpC9hZcGsSlLPHPFM51vs4jBBl//T4Pm5LpyiePxTkl2QSCUURuBw==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@f5devcentral/f5-cloud-libs/-/f5-cloud-libs-4.28.2.tgz", + "integrity": "sha512-Xz+ng3KNyDlw7VTC6nWnQ45sWIbKENKnqyF74Dp58eKz8AFBxPXZVdcbbD8GPKDTby47QP0FOiSGZFGq4L9MmQ==", "requires": { "commander": "^2.19.0", "jmespath": "^0.15.0", @@ -1169,25 +1154,25 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "devOptional": true }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "devOptional": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "devOptional": true }, "@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, + "devOptional": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -1199,6 +1184,12 @@ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", "dev": true }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "optional": true + }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -1352,6 +1343,12 @@ "brace-expansion": "^2.0.1" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -1662,12 +1659,6 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -1711,11 +1702,20 @@ "lodash.flatmap": "~4.5.0" } }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "optional": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "devOptional": true }, "@types/json5": { "version": "0.0.29", @@ -1733,7 +1733,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "aggregate-error": { "version": "3.1.0", @@ -1765,6 +1766,15 @@ "tslib": "2.4.1" } }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "optional": true, + "requires": { + "string-width": "^4.1.0" + } + }, "ansi-color": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz", @@ -1790,13 +1800,13 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "devOptional": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "requires": { "color-convert": "^2.0.1" } @@ -1805,7 +1815,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, + "devOptional": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1830,7 +1840,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "devOptional": true }, "array-from": { "version": "2.1.1", @@ -1867,6 +1877,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "devOptional": true, "requires": { "safer-buffer": "~2.1.0" } @@ -1922,18 +1933,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "devOptional": true }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "devOptional": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "devOptional": true, "requires": { "tweetnacl": "^0.14.3" } @@ -1942,7 +1954,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "devOptional": true }, "bl": { "version": "5.1.0", @@ -1955,6 +1967,41 @@ "readable-stream": "^3.4.0" } }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "optional": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "optional": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "optional": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1969,7 +2016,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "devOptional": true, "requires": { "fill-range": "^7.0.1" } @@ -1984,7 +2031,7 @@ "version": "4.17.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", - "dev": true, + "devOptional": true, "requires": { "caniuse-lite": "^1.0.30001271", "electron-to-chromium": "^1.3.878", @@ -2021,6 +2068,38 @@ "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", "optional": true }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "optional": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "optional": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "optional": true + } + } + }, "caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -2047,7 +2126,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true + "devOptional": true }, "callsites": { "version": "3.1.0", @@ -2059,13 +2138,13 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "devOptional": true }, "caniuse-lite": { "version": "1.0.30001271", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz", "integrity": "sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==", - "dev": true + "devOptional": true }, "caseless": { "version": "0.12.0", @@ -2101,7 +2180,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2111,7 +2190,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "requires": { "has-flag": "^4.0.0" } @@ -2134,7 +2213,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, + "devOptional": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2146,12 +2225,24 @@ "readdirp": "~3.6.0" } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "optional": true + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "optional": true + }, "cli-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", @@ -2177,7 +2268,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "devOptional": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -2188,7 +2279,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "devOptional": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2203,11 +2294,20 @@ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "requires": { "color-name": "~1.1.4" } @@ -2216,7 +2316,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "devOptional": true }, "colors": { "version": "1.4.0", @@ -2250,6 +2350,20 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "optional": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, "confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -2277,7 +2391,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "devOptional": true }, "coveralls": { "version": "3.1.1", @@ -2334,6 +2448,12 @@ "which": "^2.0.1" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true + }, "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", @@ -2358,7 +2478,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, + "devOptional": true, "requires": { "ms": "2.1.2" }, @@ -2367,7 +2487,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true } } }, @@ -2377,6 +2497,15 @@ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-diff": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz", @@ -2391,6 +2520,12 @@ "type-detect": "^4.0.0" } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2423,6 +2558,12 @@ "clone": "^1.0.2" } }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "optional": true + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -2460,6 +2601,21 @@ "esutils": "^2.0.2" } }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "optional": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "optional": true + }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2480,13 +2636,22 @@ "version": "1.3.878", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.878.tgz", "integrity": "sha512-O6yxWCN9ph2AdspAIszBnd9v8s11hQx8ub9w4UGApzmNRnoKhbulOWqbO8THEQec/aEHtvy+donHZMlh6l1rbA==", - "dev": true + "devOptional": true }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "devOptional": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "optional": true, + "requires": { + "once": "^1.4.0" + } }, "enquirer": { "version": "2.3.6", @@ -2587,7 +2752,13 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "devOptional": true + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "optional": true }, "escape-string-regexp": { "version": "4.0.0", @@ -2807,7 +2978,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, + "devOptional": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2882,7 +3053,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, + "devOptional": true, "requires": { "estraverse": "^5.2.0" }, @@ -2891,7 +3062,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "devOptional": true } } }, @@ -2899,7 +3070,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "devOptional": true }, "esutils": { "version": "2.0.3", @@ -3019,7 +3190,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "devOptional": true, "requires": { "to-regex-range": "^5.0.1" } @@ -3113,14 +3284,6 @@ "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" - }, - "dependencies": { - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - } } }, "flatted": { @@ -3192,7 +3355,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "optional": true }, "function-bind": { @@ -3235,7 +3397,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "devOptional": true }, "get-func-name": { "version": "2.0.0", @@ -3309,16 +3471,25 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "devOptional": true, "requires": { "is-glob": "^4.0.1" } }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "optional": true, + "requires": { + "ini": "2.0.0" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "devOptional": true }, "globalthis": { "version": "1.0.3", @@ -3338,11 +3509,41 @@ "get-intrinsic": "^1.1.3" } }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "optional": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "optional": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, "graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true + "devOptional": true }, "har-schema": { "version": "2.0.0", @@ -3379,7 +3580,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "devOptional": true }, "has-property-descriptors": { "version": "1.0.0", @@ -3411,6 +3612,12 @@ "has-symbols": "^1.0.2" } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "optional": true + }, "hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -3453,6 +3660,12 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "optional": true + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -3483,7 +3696,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "devOptional": true }, "ignore": { "version": "4.0.6", @@ -3501,11 +3714,17 @@ "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "optional": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "devOptional": true }, "indent-string": { "version": "4.0.0", @@ -3527,7 +3746,13 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "devOptional": true + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "optional": true }, "inquirer": { "version": "9.1.4", @@ -3627,7 +3852,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, + "devOptional": true, "requires": { "binary-extensions": "^2.0.0" } @@ -3648,6 +3873,15 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "optional": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -3670,19 +3904,19 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "devOptional": true }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "devOptional": true }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "devOptional": true, "requires": { "is-extglob": "^2.1.1" } @@ -3692,6 +3926,16 @@ "resolved": "https://registry.npmjs.org/is-in-subnet/-/is-in-subnet-4.0.1.tgz", "integrity": "sha512-D3mAuAo6vZ+/AxsLkEIZ3moTx7AIGQLLzLQslV6n0RRO/CzdUemXap+lj3OPAehKCbdkGPikxOVUYqRo0GGJAA==" }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "optional": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, "is-interactive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", @@ -3704,11 +3948,17 @@ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "optional": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "devOptional": true }, "is-number-object": { "version": "1.0.7", @@ -3719,6 +3969,18 @@ "has-tostringtag": "^1.0.0" } }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "optional": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "optional": true + }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -3747,7 +4009,8 @@ "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "devOptional": true }, "is-string": { "version": "1.0.7", @@ -3784,7 +4047,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "devOptional": true }, "is-unicode-supported": { "version": "1.3.0", @@ -3807,6 +4070,12 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "optional": true + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -3947,13 +4216,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "devOptional": true }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "devOptional": true, "requires": { "argparse": "^2.0.1" } @@ -3968,10 +4237,16 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "devOptional": true }, - "json-schema": { - "version": "0.4.0", + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "optional": true + }, + "json-schema": { + "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true @@ -4035,6 +4310,24 @@ "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", "dev": true }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "optional": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "optional": true, + "requires": { + "package-json": "^6.3.0" + } + }, "lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", @@ -4064,7 +4357,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "devOptional": true }, "lodash.clonedeep": { "version": "4.5.0", @@ -4177,11 +4470,17 @@ "get-func-name": "^2.0.0" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "optional": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "devOptional": true, "requires": { "yallist": "^4.0.0" } @@ -4190,6 +4489,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "devOptional": true, "requires": { "semver": "^6.0.0" } @@ -4198,7 +4498,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "devOptional": true }, "mime-db": { "version": "1.50.0", @@ -4221,6 +4521,12 @@ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "optional": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4233,12 +4539,13 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "devOptional": true }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", "dev": true }, "mocha": { @@ -4409,9 +4716,9 @@ "dev": true }, "nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "optional": true }, "nanoid": { @@ -4469,12 +4776,12 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true + "devOptional": true }, "node-ssh": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.0.0.tgz", - "integrity": "sha512-8yfPvuB8z1M5rXFR8Z1Tl0a0M43N64VjZfjXRwOGCcImFphuXhMPniPksf1FkVj9djKbpHvLUMIVS399H9yCSQ==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.0.1.tgz", + "integrity": "sha512-prGXb9KXXtrienVBPiyOCm7F8KSsQciN8VCgrkZeJAlSEtF8HsXa/0uVE5a6MgwIBPa0etTgwiyj/lfiFdVK1Q==", "optional": true, "requires": { "is-stream": "^2.0.0", @@ -4489,7 +4796,13 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "devOptional": true + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "optional": true }, "npm-run-path": { "version": "5.1.0", @@ -4719,7 +5032,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, + "devOptional": true, "requires": { "wrappy": "1" } @@ -4799,6 +5112,12 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "optional": true + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4838,6 +5157,18 @@ "release-zalgo": "^1.0.0" } }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "optional": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4896,13 +5227,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "devOptional": true }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "devOptional": true }, "prelude-ls": { "version": "1.2.1", @@ -4910,6 +5241,12 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "optional": true + }, "process": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz", @@ -4937,11 +5274,30 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "optional": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -4960,11 +5316,37 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, + "devOptional": true, "requires": { "safe-buffer": "^5.1.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "optional": true + } + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -4980,7 +5362,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, + "devOptional": true, "requires": { "picomatch": "^2.2.1" } @@ -5005,104 +5387,6 @@ "yargs": "^17.3.1" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "optional": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/generator": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz", - "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==", - "optional": true, - "requires": { - "@babel/types": "^7.14.2", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", - "optional": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-function-name": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", - "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", - "optional": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.14.2" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "optional": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "optional": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "optional": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "optional": true - }, - "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", - "optional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.14.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.4.tgz", - "integrity": "sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==", - "optional": true - }, "@babel/runtime": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", @@ -5112,43 +5396,6 @@ "regenerator-runtime": "^0.13.4" } }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "optional": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", - "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", - "optional": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.2", - "@babel/helper-function-name": "^7.14.2", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.2", - "@babel/types": "^7.14.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.4.tgz", - "integrity": "sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==", - "optional": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - }, "@emotion/is-prop-valid": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", @@ -5186,45 +5433,25 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "optional": true, + "peer": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" } }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, "@jridgewell/source-map": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "optional": true, + "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "@redocly/ajv": { "version": "8.6.4", "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.4.tgz", @@ -5263,25 +5490,12 @@ } } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "optional": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "optional": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@types/eslint": { "version": "8.4.6", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "optional": true, + "peer": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -5291,6 +5505,8 @@ "version": "3.7.4", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "optional": true, + "peer": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -5299,30 +5515,23 @@ "@types/estree": { "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "@types/mkdirp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-1.0.1.tgz", - "integrity": "sha512-HkGSK7CGAXncr8Qn/0VqNtExEE+PHMWb+qlR1faHMao7ng6P3tAaoWWBMdva0gL5h4zprjIO89GJOLXsMcDm1Q==", - "requires": { - "@types/node": "*" - } + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "optional": true, + "peer": true }, "@types/node": { "version": "15.12.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", - "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" + "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", + "optional": true, + "peer": true }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -5331,22 +5540,30 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "optional": true, + "peer": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "optional": true, + "peer": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "optional": true, + "peer": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -5356,12 +5573,16 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "optional": true, + "peer": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5373,6 +5594,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "optional": true, + "peer": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -5381,6 +5604,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "optional": true, + "peer": true, "requires": { "@xtuc/long": "4.2.2" } @@ -5388,12 +5613,16 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "optional": true, + "peer": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5409,6 +5638,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -5421,6 +5652,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5432,6 +5665,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -5445,6 +5680,8 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "optional": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -5453,85 +5690,39 @@ "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "optional": true, + "peer": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "optional": true, + "peer": true }, "acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "optional": true, + "peer": true }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "dependencies": { - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } - } + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "optional": true, + "peer": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "optional": true, - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "optional": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "optional": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "optional": true + "peer": true, + "requires": {} }, "asn1.js": { "version": "5.4.1", @@ -5598,115 +5789,21 @@ "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", "optional": true }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "optional": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "optional": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "optional": true - }, "bn.js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "optional": true }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "optional": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "optional": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "optional": true, "requires": { "balanced-match": "^1.0.0" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -5803,6 +5900,8 @@ "version": "4.21.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "optional": true, + "peer": true, "requires": { "caniuse-lite": "^1.0.30001370", "electron-to-chromium": "^1.4.202", @@ -5832,7 +5931,9 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "optional": true, + "peer": true }, "buffer-xor": { "version": "1.0.3", @@ -5846,50 +5947,6 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "optional": true }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "optional": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "optional": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "optional": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "optional": true - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "optional": true - }, "camelize": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", @@ -5899,45 +5956,16 @@ "caniuse-lite": { "version": "1.0.30001390", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", - "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", "optional": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } + "peer": true }, "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "optional": true + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "optional": true, + "peer": true }, "cipher-base": { "version": "1.0.4", @@ -5955,78 +5983,18 @@ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==", "optional": true }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "optional": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "optional": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "optional": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", "optional": true }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "optional": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "optional": true - }, "colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "optional": true }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "optional": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -6042,13 +6010,9 @@ "core-js": { "version": "3.25.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz", - "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==", + "optional": true, + "peer": true }, "create-ecdh": { "version": "4.0.4", @@ -6114,12 +6078,6 @@ "randomfill": "^1.0.3" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "optional": true - }, "css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -6137,42 +6095,12 @@ "postcss-value-parser": "^4.0.2" } }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "optional": true, - "requires": { - "ms": "2.1.2" - } - }, "decko": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz", "integrity": "sha1-/UPHNelnuAEzBohKVvvmZZlraBc=", "optional": true }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "optional": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "optional": true - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "optional": true - }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -6214,25 +6142,12 @@ "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==", "optional": true }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "optional": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "optional": true - }, "electron-to-chromium": { "version": "1.4.242", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.242.tgz", - "integrity": "sha512-nPdgMWtjjWGCtreW/2adkrB2jyHjClo9PtVhR6rW+oxa4E4Wom642Tn+5LslHP3XPL5MCpkn5/UEY60EXylNeQ==" + "integrity": "sha512-nPdgMWtjjWGCtreW/2adkrB2jyHjClo9PtVhR6rW+oxa4E4Wom642Tn+5LslHP3XPL5MCpkn5/UEY60EXylNeQ==", + "optional": true, + "peer": true }, "elliptic": { "version": "6.5.4", @@ -6257,25 +6172,12 @@ } } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "optional": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "optional": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "optional": true, + "peer": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6284,7 +6186,9 @@ "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "optional": true, + "peer": true }, "es6-promise": { "version": "3.3.1", @@ -6292,52 +6196,6 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", "optional": true }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "optional": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "optional": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -6347,7 +6205,8 @@ "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "optional": true }, "evp_bytestokey": { "version": "1.0.3", @@ -6359,110 +6218,31 @@ "safe-buffer": "^5.1.1" } }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, "fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "optional": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "foreach": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", "optional": true }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "optional": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "optional": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } - }, "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "optional": true, - "requires": { - "ini": "2.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "optional": true - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "optional": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } + "peer": true }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "optional": true, + "peer": true }, "handlebars": { "version": "4.7.7", @@ -6477,18 +6257,6 @@ "wordwrap": "^1.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "optional": true - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "optional": true - }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -6551,12 +6319,6 @@ } } }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "optional": true - }, "http2-client": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", @@ -6569,121 +6331,6 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "optional": true }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "optional": true - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "optional": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "optional": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "optional": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "optional": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "optional": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "optional": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "optional": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "optional": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "optional": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "optional": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "optional": true - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "optional": true - }, "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -6694,6 +6341,8 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "optional": true, + "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -6703,12 +6352,16 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -6721,37 +6374,12 @@ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "optional": true }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "optional": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "optional": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "optional": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "optional": true - }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "optional": true, + "peer": true }, "json-pointer": { "version": "0.6.2", @@ -6768,34 +6396,12 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "optional": true }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "optional": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "optional": true, - "requires": { - "package-json": "^6.3.0" - } - }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "optional": true + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "optional": true, + "peer": true }, "lodash.isequal": { "version": "4.5.0", @@ -6812,44 +6418,12 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "optional": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "requires": { - "yallist": "^4.0.0" - } - }, "lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "optional": true }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "optional": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "optional": true - } - } - }, "mark.js": { "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", @@ -6873,11 +6447,6 @@ "safe-buffer": "^5.1.2" } }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -6899,22 +6468,20 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "optional": true, + "peer": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "optional": true, + "peer": true, "requires": { "mime-db": "1.52.0" } }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "optional": true - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -6936,12 +6503,6 @@ "brace-expansion": "^2.0.1" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "optional": true - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -6967,18 +6528,14 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-3.2.3.tgz", "integrity": "sha512-7exWp1FV0M9dP08H9PIeHlJqDw4IdkQVRMfLYaZFMmlbzSS6ZU6p/kx392KN+rVf81hH3IQYewvRGQ70oiwmbw==", - "optional": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true + "optional": true, + "requires": {} }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "optional": true }, "node-fetch": { "version": "2.6.7", @@ -7041,19 +6598,9 @@ "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "optional": true + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "optional": true, + "peer": true }, "oas-kit-common": { "version": "1.0.8", @@ -7116,15 +6663,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "optional": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "optional": true, - "requires": { - "wrappy": "1" - } - }, "openapi-sampler": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.3.0.tgz", @@ -7141,32 +6679,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "optional": true }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "optional": true - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "optional": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "optional": true - } - } - }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -7211,17 +6723,6 @@ "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==", "optional": true }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "optional": true - }, "pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -7243,12 +6744,6 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "optional": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "optional": true - }, "prismjs": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", @@ -7308,31 +6803,12 @@ } } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "optional": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "optional": true }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "optional": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -7345,14 +6821,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "optional": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, "randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", @@ -7363,26 +6831,6 @@ "safe-buffer": "^5.1.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true - } - } - }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -7407,7 +6855,9 @@ "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true }, "react-tabs": { "version": "3.2.3", @@ -7457,15 +6907,6 @@ } } }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, "redoc": { "version": "2.0.0-rc.77", "resolved": "https://registry.npmjs.org/redoc/-/redoc-2.0.0-rc.77.tgz", @@ -7516,45 +6957,6 @@ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "optional": true }, - "registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "optional": true, - "requires": { - "rc": "1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "optional": true, - "requires": { - "rc": "^1.2.8" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "optional": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "optional": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "optional": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -7565,17 +6967,6 @@ "inherits": "^2.0.1" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, "scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -7590,46 +6981,14 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "optional": true, + "peer": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "optional": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "optional": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -7706,12 +7065,6 @@ "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", "optional": true }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "optional": true - }, "slugify": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.7.tgz", @@ -7721,12 +7074,15 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "optional": true, + "peer": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7754,53 +7110,19 @@ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "optional": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "optional": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "optional": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "optional": true, - "requires": { - "ansi-regex": "^5.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "optional": true - }, "style-loader": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "optional": true + "optional": true, + "requires": {} }, "styled-components": { "version": "5.3.0", @@ -7820,15 +7142,6 @@ "supports-color": "^5.5.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "optional": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "swagger2openapi": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", @@ -7851,12 +7164,16 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "optional": true, + "peer": true }, "terser": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "optional": true, + "peer": true, "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -7868,6 +7185,8 @@ "version": "5.3.6", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "optional": true, + "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -7891,27 +7210,6 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "optional": true }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "optional": true - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "optional": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -7924,133 +7222,12 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "optional": true }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "optional": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "optional": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "uglify-js": { "version": "3.13.9", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.9.tgz", "integrity": "sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==", "optional": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "optional": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "update-browserslist-db": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", - "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "optional": true, - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "optional": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - } - } - }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -8069,15 +7246,6 @@ } } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "optional": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, "url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", @@ -8101,12 +7269,6 @@ } } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -8117,6 +7279,8 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "optional": true, + "peer": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -8132,6 +7296,8 @@ "version": "5.74.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "optional": true, + "peer": true, "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -8162,7 +7328,9 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "optional": true, + "peer": true }, "whatwg-url": { "version": "5.0.0", @@ -8174,100 +7342,12 @@ "webidl-conversions": "^3.0.0" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "optional": true, - "requires": { - "string-width": "^4.0.0" - } - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "optional": true }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "optional": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "optional": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "optional": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "optional": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "optional": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "optional": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -8320,6 +7400,24 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "optional": true, + "requires": { + "rc": "1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "optional": true, + "requires": { + "rc": "^1.2.8" + } + }, "release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -8358,9 +7456,9 @@ }, "dependencies": { "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true } } @@ -8369,13 +7467,13 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "devOptional": true }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true + "devOptional": true }, "require-main-filename": { "version": "2.0.0", @@ -8400,6 +7498,15 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "optional": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", @@ -8461,7 +7568,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "devOptional": true }, "safe-regex-test": { "version": "1.0.0", @@ -8477,7 +7584,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true }, "sb-promise-queue": { "version": "2.1.0", @@ -8497,13 +7605,23 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "devOptional": true + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "optional": true, + "requires": { + "semver": "^6.3.0" + } }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, + "devOptional": true, "requires": { "randombytes": "^2.1.0" } @@ -8550,7 +7668,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true + "devOptional": true }, "sinon": { "version": "7.5.0", @@ -8572,21 +7690,6 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -8689,6 +7792,15 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "devOptional": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -8699,7 +7811,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "devOptional": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8728,20 +7840,11 @@ "es-abstract": "^1.20.4" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "devOptional": true, "requires": { "ansi-regex": "^5.0.1" } @@ -8768,7 +7871,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "devOptional": true, "requires": { "has-flag": "^3.0.0" }, @@ -8777,7 +7880,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "devOptional": true } } }, @@ -8880,13 +7983,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "devOptional": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "optional": true }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "devOptional": true, "requires": { "is-number": "^7.0.0" } @@ -8954,7 +8063,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "devOptional": true }, "type-check": { "version": "0.4.0", @@ -9009,7 +8119,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, + "devOptional": true, "requires": { "is-typedarray": "^1.0.0" } @@ -9032,6 +8142,15 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -9042,12 +8161,45 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, + "devOptional": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" } }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "optional": true, + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -9056,11 +8208,20 @@ "punycode": "^2.1.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "optional": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "devOptional": true }, "uuid": { "version": "3.4.0", @@ -9146,6 +8307,15 @@ "is-typed-array": "^1.1.10" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "optional": true, + "requires": { + "string-width": "^4.0.0" + } + }, "winston": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", @@ -9233,13 +8403,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "devOptional": true }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, + "devOptional": true, "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -9247,6 +8417,12 @@ "typedarray-to-buffer": "^3.1.5" } }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "optional": true + }, "xorshift": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/xorshift/-/xorshift-1.2.0.tgz", @@ -9263,13 +8439,13 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "devOptional": true }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "devOptional": true }, "yargs": { "version": "16.2.0", diff --git a/package.json b/package.json index 69d5ba04..ca527b83 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "author": "F5 Networks", "license": "Apache-2.0", "dependencies": { - "@f5devcentral/atg-shared-utilities": "^0.5.4", - "@f5devcentral/f5-cloud-libs": "^4.28.1", + "@f5devcentral/atg-shared-utilities": "^0.5.5", + "@f5devcentral/f5-cloud-libs": "^4.28.2", "@f5devcentral/f5-teem": "^1.5.0", "ajv": "6.12.6", "deep-diff": "^1.0.2", @@ -28,7 +28,7 @@ "uuid": "3.4.0" }, "devDependencies": { - "@f5devcentral/atg-shared-utilities-dev": "^0.2.11", + "@f5devcentral/atg-shared-utilities-dev": "^0.2.12", "@f5devcentral/eslint-config-f5-atg": "^0.1.8", "@stryker-mutator/core": "^6.3.1", "@stryker-mutator/mocha-runner": "^6.3.1", @@ -38,7 +38,7 @@ "coveralls": "^3.1.1", "eslint": "7.32.0", "json-schema-ref-parser": "^9.0.9", - "mkdirp": "^1.0.4", + "mkdirp": "^2.1.3", "mocha": "^10.2.0", "mocha-multi-reporters": "^1.5.1", "nyc": "^15.1.0", @@ -68,7 +68,7 @@ "extends": "@f5devcentral/eslint-config-f5-atg" }, "optionalDependencies": { - "node-ssh": "^13.0.0", + "node-ssh": "^13.0.1", "redoc-cli": "^0.13.20" } } From 7bd0ecf30b183d63e85c0cadbd12d00ede6f7ed6 Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Thu, 16 Feb 2023 15:25:42 -0800 Subject: [PATCH 05/22] removing slack badge link from readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 78a59928..60f9e7b1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # F5 BIG-IP Declarative Onboarding -[![Slack Status](https://f5cloudsolutions.herokuapp.com/badge.svg)](https://f5cloudsolutions.herokuapp.com) [![Releases](https://img.shields.io/github/release/F5Networks/f5-declarative-onboarding.svg)](https://github.com/F5Networks/f5-declarative-onboarding/releases) [![Issues](https://img.shields.io/github/issues/F5Networks/f5-declarative-onboarding.svg)](https://github.com/F5Networks/f5-declarative-onboarding/issues) @@ -24,9 +23,6 @@ Because BIG-IP Declarative Onboarding versions 1.1.0 and later have been created Be sure to see the [Support page](SUPPORT.md) in this repo for more details and supported versions of BIG-IP Declarative Onboarding. -### Community Help -We encourage you to use our [Slack channel](https://f5cloudsolutions.herokuapp.com) for discussion and assistance on Declarative Onboarding templates (click the **declarative-onboard** channel). There are F5 employees who are members of this community who typically monitor the channel Monday-Friday 9-5 PST and will offer best-effort assistance. See the [Slack Channel Statement](slack-channel-statement.md) for guidelines on using this channel. - ## Copyright Copyright 2014-2023 F5 Networks Inc. From 6c812630e19bdf5c82572caac4093cca9d17c271 Mon Sep 17 00:00:00 2001 From: pitkin Date: Sun, 19 Feb 2023 20:10:33 +0000 Subject: [PATCH 06/22] bump 1.37.0-1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab0b1a9d..2a707240 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.37.0-0", + "version": "1.37.0-1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ca527b83..56ee3487 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.37.0-0", + "version": "1.37.0-1", "description": "F5 Declarative Onboarding", "main": "index.js", "repository": { From 32d7bf1fab262b8c2c1be7991e8c6babfde1ff5e Mon Sep 17 00:00:00 2001 From: Tom Pitkin Date: Tue, 28 Feb 2023 15:49:05 -0800 Subject: [PATCH 07/22] Replace IPv4 test address --- src/schema/1.10.0/base.schema.json | 2 +- src/schema/1.10.0/remote.schema.json | 2 +- src/schema/1.11.0/base.schema.json | 2 +- src/schema/1.11.0/remote.schema.json | 2 +- src/schema/1.12.0/base.schema.json | 2 +- src/schema/1.12.0/remote.schema.json | 2 +- src/schema/1.13.0/base.schema.json | 2 +- src/schema/1.13.0/remote.schema.json | 2 +- src/schema/1.14.0/base.schema.json | 2 +- src/schema/1.14.0/remote.schema.json | 2 +- src/schema/1.15.0/base.schema.json | 2 +- src/schema/1.15.0/remote.schema.json | 2 +- src/schema/1.16.0/base.schema.json | 2 +- src/schema/1.16.0/remote.schema.json | 2 +- src/schema/1.17.0/base.schema.json | 2 +- src/schema/1.17.0/remote.schema.json | 2 +- src/schema/1.18.0/base.schema.json | 2 +- src/schema/1.18.0/remote.schema.json | 2 +- src/schema/1.19.0/base.schema.json | 2 +- src/schema/1.19.0/remote.schema.json | 2 +- src/schema/1.2.0/base.schema.json | 2 +- src/schema/1.2.0/remote.schema.json | 2 +- src/schema/1.20.0/base.schema.json | 2 +- src/schema/1.20.0/remote.schema.json | 2 +- src/schema/1.21.0/base.schema.json | 2 +- src/schema/1.21.0/remote.schema.json | 2 +- src/schema/1.21.1/base.schema.json | 2 +- src/schema/1.21.1/remote.schema.json | 2 +- src/schema/1.22.0/base.schema.json | 2 +- src/schema/1.22.0/remote.schema.json | 2 +- src/schema/1.23.0/base.schema.json | 2 +- src/schema/1.23.0/remote.schema.json | 2 +- src/schema/1.24.0/base.schema.json | 2 +- src/schema/1.24.0/remote.schema.json | 2 +- src/schema/1.25.0/base.schema.json | 2 +- src/schema/1.25.0/remote.schema.json | 2 +- src/schema/1.26.0/base.schema.json | 2 +- src/schema/1.26.0/remote.schema.json | 2 +- src/schema/1.27.0/base.schema.json | 2 +- src/schema/1.27.0/remote.schema.json | 2 +- src/schema/1.27.1/base.schema.json | 2 +- src/schema/1.27.1/remote.schema.json | 2 +- src/schema/1.28.0/base.schema.json | 2 +- src/schema/1.28.0/remote.schema.json | 2 +- src/schema/1.29.0/base.schema.json | 2 +- src/schema/1.29.0/remote.schema.json | 2 +- src/schema/1.3.0/base.schema.json | 2 +- src/schema/1.3.0/remote.schema.json | 2 +- src/schema/1.3.1/base.schema.json | 2 +- src/schema/1.3.1/remote.schema.json | 2 +- src/schema/1.30.0/base.schema.json | 2 +- src/schema/1.30.0/remote.schema.json | 2 +- src/schema/1.31.0/base.schema.json | 2 +- src/schema/1.31.0/remote.schema.json | 2 +- src/schema/1.33.0/base.schema.json | 2 +- src/schema/1.33.0/remote.schema.json | 2 +- src/schema/1.34.0/base.schema.json | 2 +- src/schema/1.34.0/remote.schema.json | 2 +- src/schema/1.35.0/base.schema.json | 2 +- src/schema/1.35.0/remote.schema.json | 2 +- src/schema/1.36.0/base.schema.json | 2 +- src/schema/1.36.0/remote.schema.json | 2 +- src/schema/1.4.0/base.schema.json | 2 +- src/schema/1.4.0/remote.schema.json | 2 +- src/schema/1.4.1/base.schema.json | 2 +- src/schema/1.4.1/remote.schema.json | 2 +- src/schema/1.5.0/base.schema.json | 2 +- src/schema/1.5.0/remote.schema.json | 2 +- src/schema/1.6.0/base.schema.json | 2 +- src/schema/1.6.0/remote.schema.json | 2 +- src/schema/1.6.1/base.schema.json | 2 +- src/schema/1.6.1/remote.schema.json | 2 +- src/schema/1.7.0/base.schema.json | 2 +- src/schema/1.7.0/remote.schema.json | 2 +- src/schema/1.8.0/base.schema.json | 2 +- src/schema/1.8.0/remote.schema.json | 2 +- src/schema/1.9.0/base.schema.json | 2 +- src/schema/1.9.0/remote.schema.json | 2 +- src/schema/latest/base.schema.json | 2 +- src/schema/latest/remote.schema.json | 2 +- test/integration/bodies/gslb.json | 10 +- test/integration/bodies/network.json | 2 +- test/integration/bodies/onboard.json | 6 +- test/integration/misc/deleteTests.js | 2 +- test/integration/misc/rollback.js | 2 +- .../property/propertiesAuthentication.js | 16 +- test/integration/property/propertiesHttpd.js | 4 +- test/integration/property/propertiesSnmp.js | 8 +- test/integration/property/propertiesTunnel.js | 8 +- test/integration/test.js | 18 +- test/unit/lib/authHandlerTests.js | 30 +-- test/unit/lib/bigIqSettingsValidatorTests.js | 16 +- test/unit/lib/configManagerTests.js | 82 ++++---- test/unit/lib/configResponseTests.js | 8 +- test/unit/lib/declarationHandlerTests.js | 42 ++--- test/unit/lib/declarationParserTests.js | 16 +- test/unit/lib/deleteHandlerTests.js | 22 +-- test/unit/lib/doUtilTests.js | 4 +- test/unit/lib/dscHandlerTests.js | 44 ++--- test/unit/lib/gslbHandlerTests.js | 12 +- test/unit/lib/inspectHandlerTests.js | 104 +++++------ test/unit/lib/licensePoolValidatorTests.js | 6 +- test/unit/lib/networkHandlerTests.js | 94 +++++----- .../lib/routingAccessListValidatorTests.js | 12 +- test/unit/lib/routingBgpValidatorTests.js | 8 +- .../lib/routingPrefixListValidatorTests.js | 30 +-- test/unit/lib/systemHandlerTests.js | 176 +++++++++--------- test/unit/lib/userValidatorTests.js | 8 +- test/unit/lib/validatorTests.js | 2 +- test/unit/nodejs/restWorkerTests.js | 22 +-- test/unit/schema/authSchemaTests.js | 12 +- test/unit/schema/dscSchemaTests.js | 40 ++-- test/unit/schema/formatsTests.js | 84 ++++----- test/unit/schema/gslbSchemaTests.js | 2 +- test/unit/schema/networkSchemaTests.js | 50 ++--- test/unit/schema/remoteSchemaTests.js | 2 +- test/unit/schema/systemSchemaTests.js | 58 +++--- 117 files changed, 611 insertions(+), 611 deletions(-) diff --git a/src/schema/1.10.0/base.schema.json b/src/schema/1.10.0/base.schema.json index 06562e8c..3c21e562 100644 --- a/src/schema/1.10.0/base.schema.json +++ b/src/schema/1.10.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.10.0/remote.schema.json b/src/schema/1.10.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.10.0/remote.schema.json +++ b/src/schema/1.10.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.11.0/base.schema.json b/src/schema/1.11.0/base.schema.json index 5c8ea606..c45adfbd 100644 --- a/src/schema/1.11.0/base.schema.json +++ b/src/schema/1.11.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.11.0/remote.schema.json b/src/schema/1.11.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.11.0/remote.schema.json +++ b/src/schema/1.11.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.12.0/base.schema.json b/src/schema/1.12.0/base.schema.json index 23cb8045..6f3d003d 100644 --- a/src/schema/1.12.0/base.schema.json +++ b/src/schema/1.12.0/base.schema.json @@ -76,7 +76,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.12.0/remote.schema.json b/src/schema/1.12.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.12.0/remote.schema.json +++ b/src/schema/1.12.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.13.0/base.schema.json b/src/schema/1.13.0/base.schema.json index 29bff544..8267e154 100644 --- a/src/schema/1.13.0/base.schema.json +++ b/src/schema/1.13.0/base.schema.json @@ -77,7 +77,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.13.0/remote.schema.json b/src/schema/1.13.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.13.0/remote.schema.json +++ b/src/schema/1.13.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.14.0/base.schema.json b/src/schema/1.14.0/base.schema.json index e56047fe..f67a8327 100644 --- a/src/schema/1.14.0/base.schema.json +++ b/src/schema/1.14.0/base.schema.json @@ -78,7 +78,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.14.0/remote.schema.json b/src/schema/1.14.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.14.0/remote.schema.json +++ b/src/schema/1.14.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.15.0/base.schema.json b/src/schema/1.15.0/base.schema.json index fb6b6c13..8d25e112 100644 --- a/src/schema/1.15.0/base.schema.json +++ b/src/schema/1.15.0/base.schema.json @@ -79,7 +79,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.15.0/remote.schema.json b/src/schema/1.15.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.15.0/remote.schema.json +++ b/src/schema/1.15.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.16.0/base.schema.json b/src/schema/1.16.0/base.schema.json index 02507593..f5fb99d5 100644 --- a/src/schema/1.16.0/base.schema.json +++ b/src/schema/1.16.0/base.schema.json @@ -80,7 +80,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.16.0/remote.schema.json b/src/schema/1.16.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.16.0/remote.schema.json +++ b/src/schema/1.16.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.17.0/base.schema.json b/src/schema/1.17.0/base.schema.json index 60913079..33a3860f 100644 --- a/src/schema/1.17.0/base.schema.json +++ b/src/schema/1.17.0/base.schema.json @@ -81,7 +81,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.17.0/remote.schema.json b/src/schema/1.17.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.17.0/remote.schema.json +++ b/src/schema/1.17.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.18.0/base.schema.json b/src/schema/1.18.0/base.schema.json index 9dfc8330..1bfccd40 100644 --- a/src/schema/1.18.0/base.schema.json +++ b/src/schema/1.18.0/base.schema.json @@ -82,7 +82,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.18.0/remote.schema.json b/src/schema/1.18.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.18.0/remote.schema.json +++ b/src/schema/1.18.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.19.0/base.schema.json b/src/schema/1.19.0/base.schema.json index 3250be71..86f6d200 100644 --- a/src/schema/1.19.0/base.schema.json +++ b/src/schema/1.19.0/base.schema.json @@ -83,7 +83,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.19.0/remote.schema.json b/src/schema/1.19.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.19.0/remote.schema.json +++ b/src/schema/1.19.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.2.0/base.schema.json b/src/schema/1.2.0/base.schema.json index f81ca489..8dbc6fed 100644 --- a/src/schema/1.2.0/base.schema.json +++ b/src/schema/1.2.0/base.schema.json @@ -45,7 +45,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.2.0/remote.schema.json b/src/schema/1.2.0/remote.schema.json index ba783d34..edda2fe9 100644 --- a/src/schema/1.2.0/remote.schema.json +++ b/src/schema/1.2.0/remote.schema.json @@ -45,7 +45,7 @@ ] }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.20.0/base.schema.json b/src/schema/1.20.0/base.schema.json index 8c65ac4a..2b3579f4 100644 --- a/src/schema/1.20.0/base.schema.json +++ b/src/schema/1.20.0/base.schema.json @@ -84,7 +84,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.20.0/remote.schema.json b/src/schema/1.20.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.20.0/remote.schema.json +++ b/src/schema/1.20.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.21.0/base.schema.json b/src/schema/1.21.0/base.schema.json index 7e6fd729..5fcea1ca 100644 --- a/src/schema/1.21.0/base.schema.json +++ b/src/schema/1.21.0/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.21.0/remote.schema.json b/src/schema/1.21.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.21.0/remote.schema.json +++ b/src/schema/1.21.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.21.1/base.schema.json b/src/schema/1.21.1/base.schema.json index 7e6fd729..5fcea1ca 100644 --- a/src/schema/1.21.1/base.schema.json +++ b/src/schema/1.21.1/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.21.1/remote.schema.json b/src/schema/1.21.1/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.21.1/remote.schema.json +++ b/src/schema/1.21.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.22.0/base.schema.json b/src/schema/1.22.0/base.schema.json index 9dc4e904..6c078151 100644 --- a/src/schema/1.22.0/base.schema.json +++ b/src/schema/1.22.0/base.schema.json @@ -86,7 +86,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.22.0/remote.schema.json b/src/schema/1.22.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.22.0/remote.schema.json +++ b/src/schema/1.22.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.23.0/base.schema.json b/src/schema/1.23.0/base.schema.json index d110be92..25aa11c4 100644 --- a/src/schema/1.23.0/base.schema.json +++ b/src/schema/1.23.0/base.schema.json @@ -87,7 +87,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.23.0/remote.schema.json b/src/schema/1.23.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.23.0/remote.schema.json +++ b/src/schema/1.23.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.24.0/base.schema.json b/src/schema/1.24.0/base.schema.json index 90c0b5b5..6661f63f 100644 --- a/src/schema/1.24.0/base.schema.json +++ b/src/schema/1.24.0/base.schema.json @@ -88,7 +88,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.24.0/remote.schema.json b/src/schema/1.24.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.24.0/remote.schema.json +++ b/src/schema/1.24.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.25.0/base.schema.json b/src/schema/1.25.0/base.schema.json index 3d24995d..341027d2 100644 --- a/src/schema/1.25.0/base.schema.json +++ b/src/schema/1.25.0/base.schema.json @@ -89,7 +89,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.25.0/remote.schema.json b/src/schema/1.25.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.25.0/remote.schema.json +++ b/src/schema/1.25.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.26.0/base.schema.json b/src/schema/1.26.0/base.schema.json index fa781bc5..a6190eee 100644 --- a/src/schema/1.26.0/base.schema.json +++ b/src/schema/1.26.0/base.schema.json @@ -90,7 +90,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.26.0/remote.schema.json b/src/schema/1.26.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.26.0/remote.schema.json +++ b/src/schema/1.26.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.27.0/base.schema.json b/src/schema/1.27.0/base.schema.json index 7b4f04ed..c8b24223 100644 --- a/src/schema/1.27.0/base.schema.json +++ b/src/schema/1.27.0/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.27.0/remote.schema.json b/src/schema/1.27.0/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.27.0/remote.schema.json +++ b/src/schema/1.27.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.27.1/base.schema.json b/src/schema/1.27.1/base.schema.json index 7b4f04ed..c8b24223 100644 --- a/src/schema/1.27.1/base.schema.json +++ b/src/schema/1.27.1/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.27.1/remote.schema.json b/src/schema/1.27.1/remote.schema.json index 932f7a29..b555b9d8 100644 --- a/src/schema/1.27.1/remote.schema.json +++ b/src/schema/1.27.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.28.0/base.schema.json b/src/schema/1.28.0/base.schema.json index 2344aab5..5cfc4210 100644 --- a/src/schema/1.28.0/base.schema.json +++ b/src/schema/1.28.0/base.schema.json @@ -86,7 +86,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.28.0/remote.schema.json b/src/schema/1.28.0/remote.schema.json index e2348fba..bf1e9494 100644 --- a/src/schema/1.28.0/remote.schema.json +++ b/src/schema/1.28.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.29.0/base.schema.json b/src/schema/1.29.0/base.schema.json index 0fad98ac..956bf4f9 100644 --- a/src/schema/1.29.0/base.schema.json +++ b/src/schema/1.29.0/base.schema.json @@ -87,7 +87,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.29.0/remote.schema.json b/src/schema/1.29.0/remote.schema.json index e2348fba..bf1e9494 100644 --- a/src/schema/1.29.0/remote.schema.json +++ b/src/schema/1.29.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.3.0/base.schema.json b/src/schema/1.3.0/base.schema.json index 9c04ddaa..fbd64692 100644 --- a/src/schema/1.3.0/base.schema.json +++ b/src/schema/1.3.0/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.3.0/remote.schema.json b/src/schema/1.3.0/remote.schema.json index ba783d34..edda2fe9 100644 --- a/src/schema/1.3.0/remote.schema.json +++ b/src/schema/1.3.0/remote.schema.json @@ -45,7 +45,7 @@ ] }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.3.1/base.schema.json b/src/schema/1.3.1/base.schema.json index 9c04ddaa..fbd64692 100644 --- a/src/schema/1.3.1/base.schema.json +++ b/src/schema/1.3.1/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.3.1/remote.schema.json b/src/schema/1.3.1/remote.schema.json index ba783d34..edda2fe9 100644 --- a/src/schema/1.3.1/remote.schema.json +++ b/src/schema/1.3.1/remote.schema.json @@ -45,7 +45,7 @@ ] }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.30.0/base.schema.json b/src/schema/1.30.0/base.schema.json index 0ae2a399..50b541ff 100644 --- a/src/schema/1.30.0/base.schema.json +++ b/src/schema/1.30.0/base.schema.json @@ -88,7 +88,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.30.0/remote.schema.json b/src/schema/1.30.0/remote.schema.json index e2348fba..bf1e9494 100644 --- a/src/schema/1.30.0/remote.schema.json +++ b/src/schema/1.30.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.31.0/base.schema.json b/src/schema/1.31.0/base.schema.json index 3f3d25d3..5d33a300 100644 --- a/src/schema/1.31.0/base.schema.json +++ b/src/schema/1.31.0/base.schema.json @@ -89,7 +89,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.31.0/remote.schema.json b/src/schema/1.31.0/remote.schema.json index e2348fba..bf1e9494 100644 --- a/src/schema/1.31.0/remote.schema.json +++ b/src/schema/1.31.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.33.0/base.schema.json b/src/schema/1.33.0/base.schema.json index b511b95e..683a680a 100644 --- a/src/schema/1.33.0/base.schema.json +++ b/src/schema/1.33.0/base.schema.json @@ -91,7 +91,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.33.0/remote.schema.json b/src/schema/1.33.0/remote.schema.json index cc4660d3..e315f918 100644 --- a/src/schema/1.33.0/remote.schema.json +++ b/src/schema/1.33.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.34.0/base.schema.json b/src/schema/1.34.0/base.schema.json index 61c8d84d..a37b5326 100644 --- a/src/schema/1.34.0/base.schema.json +++ b/src/schema/1.34.0/base.schema.json @@ -92,7 +92,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.34.0/remote.schema.json b/src/schema/1.34.0/remote.schema.json index cc4660d3..e315f918 100644 --- a/src/schema/1.34.0/remote.schema.json +++ b/src/schema/1.34.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.35.0/base.schema.json b/src/schema/1.35.0/base.schema.json index e25d62ef..5d97fb66 100644 --- a/src/schema/1.35.0/base.schema.json +++ b/src/schema/1.35.0/base.schema.json @@ -93,7 +93,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.35.0/remote.schema.json b/src/schema/1.35.0/remote.schema.json index cc4660d3..e315f918 100644 --- a/src/schema/1.35.0/remote.schema.json +++ b/src/schema/1.35.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.36.0/base.schema.json b/src/schema/1.36.0/base.schema.json index fb21ca3b..0f3d0458 100644 --- a/src/schema/1.36.0/base.schema.json +++ b/src/schema/1.36.0/base.schema.json @@ -94,7 +94,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.36.0/remote.schema.json b/src/schema/1.36.0/remote.schema.json index cc4660d3..e315f918 100644 --- a/src/schema/1.36.0/remote.schema.json +++ b/src/schema/1.36.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.4.0/base.schema.json b/src/schema/1.4.0/base.schema.json index 9c04ddaa..fbd64692 100644 --- a/src/schema/1.4.0/base.schema.json +++ b/src/schema/1.4.0/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.4.0/remote.schema.json b/src/schema/1.4.0/remote.schema.json index b81385b0..93d931ac 100644 --- a/src/schema/1.4.0/remote.schema.json +++ b/src/schema/1.4.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.4.1/base.schema.json b/src/schema/1.4.1/base.schema.json index 9c04ddaa..fbd64692 100644 --- a/src/schema/1.4.1/base.schema.json +++ b/src/schema/1.4.1/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.4.1/remote.schema.json b/src/schema/1.4.1/remote.schema.json index b81385b0..93d931ac 100644 --- a/src/schema/1.4.1/remote.schema.json +++ b/src/schema/1.4.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.5.0/base.schema.json b/src/schema/1.5.0/base.schema.json index 022f934d..3e9a58bc 100644 --- a/src/schema/1.5.0/base.schema.json +++ b/src/schema/1.5.0/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.5.0/remote.schema.json b/src/schema/1.5.0/remote.schema.json index 336e23de..7d5943fc 100644 --- a/src/schema/1.5.0/remote.schema.json +++ b/src/schema/1.5.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.6.0/base.schema.json b/src/schema/1.6.0/base.schema.json index cb327c21..4740c1db 100644 --- a/src/schema/1.6.0/base.schema.json +++ b/src/schema/1.6.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.6.0/remote.schema.json b/src/schema/1.6.0/remote.schema.json index 336e23de..7d5943fc 100644 --- a/src/schema/1.6.0/remote.schema.json +++ b/src/schema/1.6.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.6.1/base.schema.json b/src/schema/1.6.1/base.schema.json index cb327c21..4740c1db 100644 --- a/src/schema/1.6.1/base.schema.json +++ b/src/schema/1.6.1/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.6.1/remote.schema.json b/src/schema/1.6.1/remote.schema.json index 336e23de..7d5943fc 100644 --- a/src/schema/1.6.1/remote.schema.json +++ b/src/schema/1.6.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.7.0/base.schema.json b/src/schema/1.7.0/base.schema.json index 23764bef..321e8d60 100644 --- a/src/schema/1.7.0/base.schema.json +++ b/src/schema/1.7.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.7.0/remote.schema.json b/src/schema/1.7.0/remote.schema.json index 034c3985..d6648083 100644 --- a/src/schema/1.7.0/remote.schema.json +++ b/src/schema/1.7.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.8.0/base.schema.json b/src/schema/1.8.0/base.schema.json index 88282cd5..8dd2984f 100644 --- a/src/schema/1.8.0/base.schema.json +++ b/src/schema/1.8.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.8.0/remote.schema.json b/src/schema/1.8.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.8.0/remote.schema.json +++ b/src/schema/1.8.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.9.0/base.schema.json b/src/schema/1.9.0/base.schema.json index 5c8ea606..c45adfbd 100644 --- a/src/schema/1.9.0/base.schema.json +++ b/src/schema/1.9.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.9.0/remote.schema.json b/src/schema/1.9.0/remote.schema.json index d2fb38e1..b131de77 100644 --- a/src/schema/1.9.0/remote.schema.json +++ b/src/schema/1.9.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/latest/base.schema.json b/src/schema/latest/base.schema.json index efe1e822..f6b9f3c6 100644 --- a/src/schema/latest/base.schema.json +++ b/src/schema/latest/base.schema.json @@ -95,7 +95,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/latest/remote.schema.json b/src/schema/latest/remote.schema.json index cc4660d3..e315f918 100644 --- a/src/schema/latest/remote.schema.json +++ b/src/schema/latest/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/test/integration/bodies/gslb.json b/test/integration/bodies/gslb.json index c1cf9469..81e04c31 100644 --- a/test/integration/bodies/gslb.json +++ b/test/integration/bodies/gslb.json @@ -108,7 +108,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "http", - "target": "1.1.1.1:80", + "target": "192.0.2.10:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -122,7 +122,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "https", - "target": "2.2.2.2:80", + "target": "192.0.2.16:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -138,7 +138,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "gateway-icmp", - "target": "3.3.3.3:80", + "target": "192.0.2.15:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -151,7 +151,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "tcp", - "target": "4.4.4.4:80", + "target": "192.0.2.12:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -165,7 +165,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "udp", - "target": "5.5.5.5:80", + "target": "192.0.2.18:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, diff --git a/test/integration/bodies/network.json b/test/integration/bodies/network.json index 4cc88a85..687cc1bd 100644 --- a/test/integration/bodies/network.json +++ b/test/integration/bodies/network.json @@ -107,7 +107,7 @@ "name": "forward.net", "nameservers": [ "10.10.10.10:53", - "::ffff:1414:1414.53" + "::ffff:c000:20b.53" ] } ] diff --git a/test/integration/bodies/onboard.json b/test/integration/bodies/onboard.json index 512a36ef..2a0509d9 100644 --- a/test/integration/bodies/onboard.json +++ b/test/integration/bodies/onboard.json @@ -86,7 +86,7 @@ "myFailoverMulticast": { "class": "FailoverMulticast", "interface": "eth0", - "address": "224.0.0.100", + "address": "233.252.0.10", "port": 123 }, "mySystem": { @@ -139,8 +139,8 @@ "myManagementRoute": { "class": "ManagementRoute", "remark": "not-configured-by-dhcp", - "network": "1.2.3.4", - "gw": "4.3.2.1", + "network": "192.0.2.13", + "gw": "192.0.2.14", "mtu": 0 } } diff --git a/test/integration/misc/deleteTests.js b/test/integration/misc/deleteTests.js index db07f5b5..ceb6887d 100644 --- a/test/integration/misc/deleteTests.js +++ b/test/integration/misc/deleteTests.js @@ -50,7 +50,7 @@ describe('Delete items', function DeleteItems() { }, mySelfIp: { class: 'SelfIp', - address: '192.0.1.1/32', + address: '192.0.2.10/32', vlan: 'myVlan', allowService: 'default' } diff --git a/test/integration/misc/rollback.js b/test/integration/misc/rollback.js index be411671..ce5c3a42 100644 --- a/test/integration/misc/rollback.js +++ b/test/integration/misc/rollback.js @@ -57,7 +57,7 @@ describe('Rollback', function User() { }, mySelfIp: { class: 'SelfIp', - address: '192.0.1.1/32', + address: '192.0.2.10/32', vlan: 'myVlan', allowService: 'default' } diff --git a/test/integration/property/propertiesAuthentication.js b/test/integration/property/propertiesAuthentication.js index 42a9b39a..d604cc1a 100644 --- a/test/integration/property/propertiesAuthentication.js +++ b/test/integration/property/propertiesAuthentication.js @@ -195,7 +195,7 @@ describe('Authentication', function testAuthentication() { searchTimeout: 687, servers: [ 'a.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'enabled', @@ -228,7 +228,7 @@ describe('Authentication', function testAuthentication() { searchTimeout: 888, servers: [ 'b.host.com', - '5.6.7.8', + '192.0.2.20', 'FE80:0000:0000:0000:0202:B3FF:FE1E:1111' ], ssl: 'disabled', @@ -265,7 +265,7 @@ describe('Authentication', function testAuthentication() { searchTimeout: 687, servers: [ 'a.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'enabled', @@ -295,7 +295,7 @@ describe('Authentication', function testAuthentication() { searchTimeout: 888, servers: [ 'b.host.com', - '5.6.7.8', + '192.0.2.20', 'FE80:0000:0000:0000:0202:B3FF:FE1E:1111' ], ssl: 'disabled', @@ -354,7 +354,7 @@ describe('Authentication', function testAuthentication() { secret: 'test', servers: [ 'a.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], service: 'ppp' @@ -369,7 +369,7 @@ describe('Authentication', function testAuthentication() { secret: 'test', servers: [ 'b.host.com', - '5.6.7.8', + '192.0.2.20', 'FE80:0000:0000:0000:0202:B3FF:FE1E:1111' ], service: 'shell' @@ -383,7 +383,7 @@ describe('Authentication', function testAuthentication() { protocol: 'ip', servers: [ 'a.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], service: 'ppp' @@ -397,7 +397,7 @@ describe('Authentication', function testAuthentication() { protocol: 'ipx', servers: [ 'b.host.com', - '5.6.7.8', + '192.0.2.20', 'FE80:0000:0000:0000:0202:B3FF:FE1E:1111' ], service: 'shell' diff --git a/test/integration/property/propertiesHttpd.js b/test/integration/property/propertiesHttpd.js index 6c99be0e..489df2b4 100644 --- a/test/integration/property/propertiesHttpd.js +++ b/test/integration/property/propertiesHttpd.js @@ -35,8 +35,8 @@ describe('HTTPD', function testAuthentication() { const properties = [ { name: 'allow', - inputValue: [undefined, ['1.2.3.4'], undefined], - expectedValue: [['All'], ['1.2.3.4'], ['All']] + inputValue: [undefined, ['192.0.2.10'], undefined], + expectedValue: [['All'], ['192.0.2.10'], ['All']] }, { name: 'authPamIdleTimeout', diff --git a/test/integration/property/propertiesSnmp.js b/test/integration/property/propertiesSnmp.js index 628da55a..b63b7d9f 100644 --- a/test/integration/property/propertiesSnmp.js +++ b/test/integration/property/propertiesSnmp.js @@ -48,20 +48,20 @@ describe('Snmp', function testSnmp() { { name: 'allowList', inputValue: [ - ['127.0.0.0/8'], + ['192.0.2.10/8'], [ '10.30.100.0/23', '10.40.100.0/23' ], - ['127.0.0.0/8'] + ['192.0.2.10/8'] ], expectedValue: [ - ['127.0.0.0/8'], + ['192.0.2.10/8'], [ '10.30.100.0/23', '10.40.100.0/23' ], - ['127.0.0.0/8'] + ['192.0.2.10/8'] ] }, { diff --git a/test/integration/property/propertiesTunnel.js b/test/integration/property/propertiesTunnel.js index a035cc07..54151c7a 100644 --- a/test/integration/property/propertiesTunnel.js +++ b/test/integration/property/propertiesTunnel.js @@ -71,8 +71,8 @@ describe('Tunnel', function testAuthentication() { // Any6 is outside the remote address range of ips { name: 'remoteAddress', - inputValue: ['any', '224.0.0.1', 'any'], - expectedValue: ['any', '224.0.0.1', 'any'] + inputValue: ['any', '192.0.2.10', 'any'], + expectedValue: ['any', '192.0.2.10', 'any'] }, // Can only be configured with a NVGRE Tunnel { @@ -170,12 +170,12 @@ describe('Tunnel', function testAuthentication() { // Any6 is outside the remote address range of ips { name: 'remoteAddress', - inputValue: ['224.0.0.1', 'any', '224.0.0.1'], + inputValue: ['233.252.0.10', 'any', '233.252.0.10'], skipAssert: true }, { name: 'localAddress', - inputValue: ['224.0.0.2'], + inputValue: ['192.0.2.11'], skipAssert: true } ]; diff --git a/test/integration/test.js b/test/integration/test.js index 82f19ee2..dd3b901e 100644 --- a/test/integration/test.js +++ b/test/integration/test.js @@ -151,7 +151,7 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr currentState.FailoverMulticast, { multicastInterface: 'eth0', - multicastIp: '224.0.0.100', + multicastIp: '233.252.0.10', multicastPort: 123 } )); @@ -214,9 +214,9 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr { name: 'myManagementRoute', description: 'not-configured-by-dhcp', - gateway: '4.3.2.1', + gateway: '192.0.2.14', mtu: 0, - network: '1.2.3.4/32' + network: '192.0.2.13/32' } )); @@ -1018,7 +1018,7 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr transparent: 'enabled', monitorType: 'http', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', ignoreDownResponse: 'enabled', reverse: 'enabled', recv: 'HTTP' @@ -1036,7 +1036,7 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr transparent: 'enabled', monitorType: 'https', description: 'description', - destination: '2.2.2.2:80', + destination: '192.0.2.16:80', ignoreDownResponse: 'enabled', reverse: 'enabled', recv: 'HTTP', @@ -1055,7 +1055,7 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr transparent: 'enabled', monitorType: 'gateway-icmp', description: 'description', - destination: '3.3.3.3:80', + destination: '192.0.2.15:80', ignoreDownResponse: 'enabled', probeInterval: 1, probeAttempts: 3 @@ -1072,7 +1072,7 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr transparent: 'enabled', monitorType: 'tcp', description: 'description', - destination: '4.4.4.4:80', + destination: '192.0.2.12:80', ignoreDownResponse: 'enabled', reverse: 'enabled', recv: 'example receive', @@ -1091,7 +1091,7 @@ describe('Declarative Onboarding Integration Test Suite', function performIntegr transparent: 'enabled', monitorType: 'udp', description: 'description', - destination: '5.5.5.5:80', + destination: '192.0.2.18:80', ignoreDownResponse: 'enabled', reverse: 'enabled', recv: 'udp receive', @@ -1546,7 +1546,7 @@ function testDnsResolver(target, response) { const responseForwardZone = responseResolver.forwardZones[0]; const validName = responseForwardZone.name === 'forward.net'; const validNameserver = responseForwardZone.nameservers[0].name === '10.10.10.10:53'; - const validIpv6Nameserver = responseForwardZone.nameservers[1].name === '20.20.20.20:53'; + const validIpv6Nameserver = responseForwardZone.nameservers[1].name === '192.0.2.11:53'; return validName && validNameserver && validIpv6Nameserver diff --git a/test/unit/lib/authHandlerTests.js b/test/unit/lib/authHandlerTests.js index ddf4a1c0..bf9f3df7 100644 --- a/test/unit/lib/authHandlerTests.js +++ b/test/unit/lib/authHandlerTests.js @@ -124,7 +124,7 @@ describe('authHandler', () => { serviceType: 'callback-login', servers: { primary: { - server: '1.2.3.4', + server: '192.0.2.10', port: 1811, secret: 'something' }, @@ -147,7 +147,7 @@ describe('authHandler', () => { assert.strictEqual(pathsSent[0], '/tm/auth/radius-server'); assert.deepEqual(dataSent[0], { - server: '1.2.3.4', + server: '192.0.2.10', port: 1811, secret: 'something', name: 'system_auth_name1', @@ -196,7 +196,7 @@ describe('authHandler', () => { serviceType: 'callback-login', servers: { primary: { - server: '1.2.3.4', + server: '192.0.2.10', port: 1811, secret: 'something' } @@ -229,7 +229,7 @@ describe('authHandler', () => { serviceType: 'callback-login', servers: { primary: { - server: '1.2.3.4', + server: '192.0.2.10', port: 1811, secret: 'something' } @@ -259,7 +259,7 @@ describe('authHandler', () => { radius: { servers: { name: 'foo', - server: '1.2.3.4', + server: '192.0.2.10', port: 1811, secret: 'something' } @@ -306,7 +306,7 @@ describe('authHandler', () => { tacacs: { servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], secret: 'test', @@ -333,7 +333,7 @@ describe('authHandler', () => { secret: 'test', servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], service: 'ppp' @@ -357,7 +357,7 @@ describe('authHandler', () => { servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], secret: 'test', @@ -382,7 +382,7 @@ describe('authHandler', () => { protocol: 'http', servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], secret: 'test', @@ -442,7 +442,7 @@ describe('authHandler', () => { searchTimeout: 30, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'disabled', @@ -485,7 +485,7 @@ describe('authHandler', () => { searchTimeout: 30, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'disabled', @@ -527,7 +527,7 @@ describe('authHandler', () => { searchTimeout: 687, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'tls-start', @@ -653,7 +653,7 @@ describe('authHandler', () => { searchTimeout: 687, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'tls-start', @@ -688,7 +688,7 @@ describe('authHandler', () => { searchTimeout: 30, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'disabled', @@ -742,7 +742,7 @@ describe('authHandler', () => { searchTimeout: 30, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: 'disabled', diff --git a/test/unit/lib/bigIqSettingsValidatorTests.js b/test/unit/lib/bigIqSettingsValidatorTests.js index e7cd6d39..9c791f85 100644 --- a/test/unit/lib/bigIqSettingsValidatorTests.js +++ b/test/unit/lib/bigIqSettingsValidatorTests.js @@ -25,7 +25,7 @@ describe('bigIqSettingsValidator', () => { describe('valid', () => { it('should validate declarations with no bigIqSettings', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { } @@ -39,7 +39,7 @@ describe('bigIqSettingsValidator', () => { it('should validate declarations with valid bigIqSettings', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true }, @@ -58,7 +58,7 @@ describe('bigIqSettingsValidator', () => { describe('clusterName', () => { it('should validate declarations with deviceGroup and clusterName', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true, clusterName: 'foo' @@ -79,7 +79,7 @@ describe('bigIqSettingsValidator', () => { it('should invalidate declarations with deviceGroup but no clusterName', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true }, @@ -101,7 +101,7 @@ describe('bigIqSettingsValidator', () => { describe('accessModuleProperties', () => { it('should validate declarations with apm and accessModuleProperties', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true, accessModuleProperties: { @@ -125,7 +125,7 @@ describe('bigIqSettingsValidator', () => { it('should validate declarations with apm none and no accessModuleProperties', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true }, @@ -146,7 +146,7 @@ describe('bigIqSettingsValidator', () => { it('should validate declarations with no apm and no accessModuleProperties', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true }, @@ -166,7 +166,7 @@ describe('bigIqSettingsValidator', () => { it('should invalidate declarations with apm but no accessModuleProperties', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', bigIqSettings: { snapshotWorkingConfig: true }, diff --git a/test/unit/lib/configManagerTests.js b/test/unit/lib/configManagerTests.js index 8ed9b4c7..4bd6fbc3 100644 --- a/test/unit/lib/configManagerTests.js +++ b/test/unit/lib/configManagerTests.js @@ -30,7 +30,7 @@ const ConfigItems = require('../../../src/lib/configItems.json'); describe('configManager', () => { const hostname = 'myhost.bigip.com'; const deviceName = 'device1'; - const version = '15.1.6.5'; + const version = '15.1.6'; let listResponses; let bigIpMock; @@ -101,7 +101,7 @@ describe('configManager', () => { { name: 'default', partition: 'Common', - gw: '1.2.3.4', + gw: '192.0.2.70', network: 'default', mtu: 0 }, @@ -109,13 +109,13 @@ describe('configManager', () => { name: 'route1', partition: 'LOCAL_ONLY', tmInterface: '/Common/myVlan', - network: '5.5.5.5', + network: '192.0.2.90', mtu: 1500 }, { name: 'outsideDoRoute', partition: 'otherPartition', - gw: '3.3.3.5', + gw: '192.0.2.60', network: 'default', mtu: 12 } @@ -128,7 +128,7 @@ describe('configManager', () => { state.currentConfig.Common.Route, { default: { - gw: '1.2.3.4', + gw: '192.0.2.70', mtu: 0, name: 'default', network: 'default' @@ -137,7 +137,7 @@ describe('configManager', () => { tmInterface: 'myVlan', mtu: 1500, name: 'route1', - network: '5.5.5.5', + network: '192.0.2.90', localOnly: true } } @@ -233,14 +233,14 @@ describe('configManager', () => { listResponses['/tm/net/route'] = [ { name: 'default', - gw: '1.2.3.4', + gw: '192.0.2.70', network: 'default', mtu: 0 }, { name: 'route1', - gw: '5.6.7.8', - network: '5.5.5.5', + gw: '192.0.2.71', + network: '192.0.2.90', mtu: 1500 } ]; @@ -252,7 +252,7 @@ describe('configManager', () => { state.currentConfig.Common.Route.default, { name: 'default', - gw: '1.2.3.4', + gw: '192.0.2.70', network: 'default', mtu: 0 } @@ -261,8 +261,8 @@ describe('configManager', () => { state.currentConfig.Common.Route.route1, { name: 'route1', - gw: '5.6.7.8', - network: '5.5.5.5', + gw: '192.0.2.71', + network: '192.0.2.90', mtu: 1500 } ); @@ -501,7 +501,7 @@ describe('configManager', () => { { name: 'default', fullPath: '/Common/default', - gateway: '8.8.8.8', + gateway: '192.0.2.40', network: 'default', mtu: 0, myProp1: 'my property 1', @@ -518,7 +518,7 @@ describe('configManager', () => { .then(() => { assert.strictEqual( state.currentConfig.Common.ManagementRoute.default.gw, - '8.8.8.8' + '192.0.2.40' ); assert.strictEqual( state.currentConfig.Common.ManagementRoute.default.gateway, @@ -631,7 +631,7 @@ describe('configManager', () => { { name: 'examplePrefixList', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/prefix-list/~Common~examplePrefixList/entries?ver=14.1.2.7' + link: 'https://localhost/mgmt/tm/net/routing/prefix-list/~Common~examplePrefixList/entries?ver=14.1.2' } } ]; @@ -750,15 +750,15 @@ describe('configManager', () => { name: deviceName, unicastAddress: [ { - effectiveIp: '1.1.1.106', + effectiveIp: '192.0.2.50', effectivePort: 1026, - ip: '1.1.1.106', + ip: '192.0.2.50', port: 1026 }, { - effectiveIp: '1.1.1.2', + effectiveIp: '192.0.2.51', effectivePort: 777, - ip: '1.1.1.2', + ip: '192.0.2.51', port: 777 } ] @@ -771,11 +771,11 @@ describe('configManager', () => { { unicastAddress: [ { - ip: '1.1.1.106', + ip: '192.0.2.50', port: 1026 }, { - ip: '1.1.1.2', + ip: '192.0.2.51', port: 777 } ] @@ -2271,14 +2271,14 @@ describe('configManager', () => { name: 'kernel', routeMap: '/Common/routeMap1', routeMapReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2' } }, { name: 'static', routeMap: '/Common/routeMap1', routeMapReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2' } } ] @@ -2297,24 +2297,24 @@ describe('configManager', () => { name: 'kernel', routeMap: '/Common/routeMap1', routeMapReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2' } }, { name: 'static', routeMap: '/Common/routeMap1', routeMapReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2' } } ] } ], neighborReference: { - link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~peerGroup/neighbor?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~peerGroup/neighbor?ver=14.1.2' }, peerGroupReference: { - link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~peerGroup/peer-group?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~peerGroup/peer-group?ver=14.1.2' } } ]; @@ -2352,11 +2352,11 @@ describe('configManager', () => { routeMap: { in: '/Common/routeMap1', inReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2' }, out: '/Common/routeMap1', outReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMap1?ver=14.1.2' } }, softReconfigurationInbound: 'enabled' @@ -2492,7 +2492,7 @@ describe('configManager', () => { { name: 'exampleAsPath', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/as-path/~Common~exampleAsPath/entries?ver=14.1.2.7' + link: 'https://localhost/mgmt/tm/net/routing/as-path/~Common~exampleAsPath/entries?ver=14.1.2' } } ]; @@ -2541,7 +2541,7 @@ describe('configManager', () => { { name: 'exampleRouteMap', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~exampleRouteMap/entries?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~exampleRouteMap/entries?ver=14.1.2' } } ]; @@ -2647,7 +2647,7 @@ describe('configManager', () => { { name: 'examplePrefixList', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/prefix-list/~Common~examplePrefixList/entries?ver=14.1.2.7' + link: 'https://localhost/mgmt/tm/net/routing/prefix-list/~Common~examplePrefixList/entries?ver=14.1.2' } } ]; @@ -2880,7 +2880,7 @@ describe('configManager', () => { { name: 'virtualServer1', description: 'virtual server description one', - destination: '192.0.10.20:443', + destination: '192.0.2.80:443', enabled: false, disabled: true, translationAddress: '10.10.0.10', @@ -2941,7 +2941,7 @@ describe('configManager', () => { name: 'virtualServer1', description: 'virtual server description one', enabled: false, - address: '192.0.10.20', + address: '192.0.2.80', port: 443, translationAddress: '10.10.0.10', translationPort: 23, @@ -3064,7 +3064,7 @@ describe('configManager', () => { selfLink: 'https://localhost/mgmt/tm/gtm/monitor/http/~Common~GSLBmonitor?ver=15.1.2', defaultsFrom: '/Common/http', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.20:80', ignoreDownResponse: 'enabled', interval: 100, probeTimeout: 110, @@ -3095,7 +3095,7 @@ describe('configManager', () => { description: 'description', reverse: 'enabled', send: 'HEAD / HTTP/1.0\\r\\n', - destination: '1.1.1.1:80', + destination: '192.0.2.20:80', timeout: 1000, transparent: 'enabled' } @@ -3573,7 +3573,7 @@ describe('configManager', () => { listResponses['/tm/sys/management-route'] = [ { name: '24', - fullPath: '/Common/8.8.8.8/32' + fullPath: '/Common/192.0.2.40/32' } ]; @@ -3583,8 +3583,8 @@ describe('configManager', () => { assert.deepStrictEqual( state.currentConfig.Common.ManagementRoute, { - '8.8.8.8/32': { - name: '8.8.8.8/32', + '192.0.2.40/32': { + name: '192.0.2.40/32', description: 'none' } } @@ -3662,7 +3662,7 @@ describe('configManager', () => { tos: 'preserve', usePmtu: 'enabled', localAddress: '10.145.0.1', - remoteAddress: '250.250.0.1', + remoteAddress: '192.0.2.30', secondaryAddress: 'any6', key: 0, mode: 'bidirectional', @@ -3720,7 +3720,7 @@ describe('configManager', () => { tos: 'preserve', usePmtu: 'enabled', localAddress: '10.145.0.1', - remoteAddress: '250.250.0.1', + remoteAddress: '192.0.2.30', secondaryAddress: 'any6', key: 0, mode: 'bidirectional', diff --git a/test/unit/lib/configResponseTests.js b/test/unit/lib/configResponseTests.js index f5bd6706..fe3f0e46 100644 --- a/test/unit/lib/configResponseTests.js +++ b/test/unit/lib/configResponseTests.js @@ -37,7 +37,7 @@ state.originalConfig = { }, DNS: { nameServers: [ - '8.8.8.8' + '192.0.2.10' ] }, VLAN: { @@ -59,7 +59,7 @@ state.originalConfig = { }, DNS: { nameServers: [ - '127.0.1.1' + '192.0.2.20' ] }, VLAN: { @@ -123,7 +123,7 @@ describe('configResponse', () => { hostname: 'bigip1.example.com', Provision: { afm: 'none', ltm: 'nominal', urldb: 'none' }, NTP: { timezone: 'UTC' }, - DNS: { nameServers: ['8.8.8.8'] }, + DNS: { nameServers: ['192.0.2.10'] }, VLAN: { foo: '1234 vlan' } }, lastUpdate: 'last update 1234' @@ -135,7 +135,7 @@ describe('configResponse', () => { hostname: 'bigip2.example.com', Provision: { afm: 'nominal', ltm: 'none', urldb: 'none' }, NTP: { timezone: 'America/Los_Angeles' }, - DNS: { nameServers: ['127.0.1.1'] }, + DNS: { nameServers: ['192.0.2.20'] }, VLAN: { foo: '5678 vlan' } }, lastUpdate: 'last update 5678' diff --git a/test/unit/lib/declarationHandlerTests.js b/test/unit/lib/declarationHandlerTests.js index b999c85b..1d9c3797 100644 --- a/test/unit/lib/declarationHandlerTests.js +++ b/test/unit/lib/declarationHandlerTests.js @@ -127,7 +127,7 @@ describe('declarationHandler', () => { name: 'afm', fullPath: 'afm', generation: 1, - selfLink: 'https://localhost/mgmt/tm/sys/provision/afm?ver=12.1.5.1', + selfLink: 'https://localhost/mgmt/tm/sys/provision/afm?ver=12.1.5', cpuRatio: 0, diskRatio: 0, level: 'none', @@ -138,7 +138,7 @@ describe('declarationHandler', () => { name: 'avr', fullPath: 'avr', generation: 1, - selfLink: 'https://localhost/mgmt/tm/sys/provision/avr?ver=12.1.5.1', + selfLink: 'https://localhost/mgmt/tm/sys/provision/avr?ver=12.1.5', cpuRatio: 0, diskRatio: 0, level: 'none', @@ -149,7 +149,7 @@ describe('declarationHandler', () => { name: 'urldb', fullPath: 'urldb', generation: 1, - selfLink: 'https://localhost/mgmt/tm/sys/provision/urldb?ver=12.1.5.1', + selfLink: 'https://localhost/mgmt/tm/sys/provision/urldb?ver=12.1.5', cpuRatio: 0, diskRatio: 0, level: 'none', @@ -778,7 +778,7 @@ describe('declarationHandler', () => { Common: { ManagementIp: { myManagementIp: { - name: '1.2.3.4/5' + name: '192.0.2.10/5' } } } @@ -797,8 +797,8 @@ describe('declarationHandler', () => { assert.deepStrictEqual( declarationWithDefaults.Common.ManagementIp, { - '1.2.3.4/5': { - name: '1.2.3.4/5' + '192.0.2.10/5': { + name: '192.0.2.10/5' } } ); @@ -819,8 +819,8 @@ describe('declarationHandler', () => { originalConfig: { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5' + '192.0.2.10/5': { + name: '192.0.2.10/5' } } } @@ -832,8 +832,8 @@ describe('declarationHandler', () => { assert.deepStrictEqual( declarationWithDefaults.Common.ManagementIp, { - '1.2.3.4/5': { - name: '1.2.3.4/5' + '192.0.2.10/5': { + name: '192.0.2.10/5' } } ); @@ -2294,7 +2294,7 @@ describe('declarationHandler', () => { name: '20', destination: '10.10.10.10', action: 'deny', - source: '20.20.20.20' + source: '192.0.2.20' } ]; @@ -2302,7 +2302,7 @@ describe('declarationHandler', () => { return declarationHandler.process(newDeclaration) .then(() => { assert.strictEqual(declarationWithDefaults.Common.RoutingAccessList.list.entries[0].destination, '10.10.10.10/32'); - assert.strictEqual(declarationWithDefaults.Common.RoutingAccessList.list.entries[0].source, '20.20.20.20/32'); + assert.strictEqual(declarationWithDefaults.Common.RoutingAccessList.list.entries[0].source, '192.0.2.20/32'); }); }); @@ -2330,7 +2330,7 @@ describe('declarationHandler', () => { name: '20', destination: '10.10.0.0/16', action: 'deny', - source: '20.20.0.0/16' + source: '192.0.2.20/16' } ]; @@ -2338,7 +2338,7 @@ describe('declarationHandler', () => { return declarationHandler.process(newDeclaration) .then(() => { assert.strictEqual(declarationWithDefaults.Common.RoutingAccessList.list.entries[0].destination, '10.10.0.0/16'); - assert.strictEqual(declarationWithDefaults.Common.RoutingAccessList.list.entries[0].source, '20.20.0.0/16'); + assert.strictEqual(declarationWithDefaults.Common.RoutingAccessList.list.entries[0].source, '192.0.2.20/16'); }); }); @@ -3336,8 +3336,8 @@ describe('declarationHandler', () => { ManagementRoute: { newManagementRoute: { name: 'newManagementRoute', - network: '1.2.3.4', - gw: '4.3.2.1', + network: '192.0.2.10', + gw: '192.0.2.30', mtu: 0 } } @@ -3392,8 +3392,8 @@ describe('declarationHandler', () => { ManagementRoute: { newManagementRoute: { name: 'newManagementRoute', - network: '1.2.3.4', - gw: '4.3.2.1', + network: '192.0.2.10', + gw: '192.0.2.30', mtu: 0 } } @@ -3678,7 +3678,7 @@ describe('declarationHandler', () => { name: 'afm', fullPath: 'afm', generation: 1, - selfLink: 'https://localhost/mgmt/tm/sys/provision/afm?ver=12.1.5.1', + selfLink: 'https://localhost/mgmt/tm/sys/provision/afm?ver=12.1.5', cpuRatio: 0, diskRatio: 0, level: 'none', @@ -3689,7 +3689,7 @@ describe('declarationHandler', () => { name: 'avr', fullPath: 'avr', generation: 1, - selfLink: 'https://localhost/mgmt/tm/sys/provision/avr?ver=12.1.5.1', + selfLink: 'https://localhost/mgmt/tm/sys/provision/avr?ver=12.1.5', cpuRatio: 0, diskRatio: 0, level: 'none', @@ -3700,7 +3700,7 @@ describe('declarationHandler', () => { name: 'urldb', fullPath: 'urldb', generation: 1, - selfLink: 'https://localhost/mgmt/tm/sys/provision/urldb?ver=12.1.5.1', + selfLink: 'https://localhost/mgmt/tm/sys/provision/urldb?ver=12.1.5', cpuRatio: 0, diskRatio: 0, level: 'none', diff --git a/test/unit/lib/declarationParserTests.js b/test/unit/lib/declarationParserTests.js index f82a70d8..8e23b480 100644 --- a/test/unit/lib/declarationParserTests.js +++ b/test/unit/lib/declarationParserTests.js @@ -94,7 +94,7 @@ describe('declarationParser', () => { myDns: { class: 'DNS', nameServers: [ - '1.2.3.4', + '192.0.2.20', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], search: [ @@ -163,9 +163,9 @@ describe('declarationParser', () => { class: 'DNS_Resolver', forwardZones: [ { - name: 'google.public.dns', + name: 'test.public.dns', nameservers: [ - '8.8.8.8:53' + '192.0.2.10:53' ] } ] @@ -233,8 +233,8 @@ describe('declarationParser', () => { assert.strictEqual(parsedDeclaration.Common.MAC_Masquerade.commonMac2.source.interface, '1.2'); assert.strictEqual(parsedDeclaration.Common.MAC_Masquerade.commonMac2.trafficGroup, 'traffic-group-local-only'); assert.strictEqual(parsedDeclaration.Common.DNS_Resolver.commonDNS.name, 'commonDNS'); - assert.strictEqual(parsedDeclaration.Common.DNS_Resolver.commonDNS.forwardZones[0].name, 'google.public.dns'); - assert.strictEqual(parsedDeclaration.Common.DNS_Resolver.commonDNS.forwardZones[0].nameservers[0], '8.8.8.8:53'); + assert.strictEqual(parsedDeclaration.Common.DNS_Resolver.commonDNS.forwardZones[0].name, 'test.public.dns'); + assert.strictEqual(parsedDeclaration.Common.DNS_Resolver.commonDNS.forwardZones[0].nameservers[0], '192.0.2.10:53'); assert.strictEqual(parsedDeclaration.Tenant1.VLAN.app1Vlan.name, 'app1Vlan'); assert.strictEqual(parsedDeclaration.Tenant1.VLAN.app1Vlan.tag, 1234); assert.strictEqual(parsedDeclaration.Tenant1.VLAN.app2Vlan.tag, 3456); @@ -431,7 +431,7 @@ describe('declarationParser', () => { }, mySelfIp: { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.20', vlan: '/Common/myVlan' }, myConfigSync: { @@ -457,10 +457,10 @@ describe('declarationParser', () => { const declarationParser = new DeclarationParser(declaration); const parsedDeclaration = declarationParser.parse().parsedDeclaration; assert.strictEqual(parsedDeclaration.Common.SelfIp.mySelfIp.vlan, '/Common/myVlan'); - assert.strictEqual(parsedDeclaration.Common.ConfigSync.configsyncIp, '1.2.3.4'); + assert.strictEqual(parsedDeclaration.Common.ConfigSync.configsyncIp, '192.0.2.20'); assert.strictEqual(parsedDeclaration.Common.License.bigIpUsername, 'myUser'); assert.strictEqual(parsedDeclaration.Common.License.bigIqUsername, 'myOtherUser'); - assert.strictEqual(parsedDeclaration.Common.FailoverUnicast.unicastAddress[0].ip, '1.2.3.4'); + assert.strictEqual(parsedDeclaration.Common.FailoverUnicast.unicastAddress[0].ip, '192.0.2.20'); // If we get a pointer that does not de-reference, we should just get back the // original pointer diff --git a/test/unit/lib/deleteHandlerTests.js b/test/unit/lib/deleteHandlerTests.js index 69dadff8..27412070 100644 --- a/test/unit/lib/deleteHandlerTests.js +++ b/test/unit/lib/deleteHandlerTests.js @@ -131,7 +131,7 @@ describe(('deleteHandler'), function testDeleteHandler() { deleteThisRoute: { name: 'deleteThisRoute', mtu: 0, - network: '1.2.3.5' + network: '192.0.2.10' } } } @@ -486,7 +486,7 @@ describe(('deleteHandler'), function testDeleteHandler() { deleteThisRoute: { name: 'deleteThisRoute', mtu: 0, - network: '1.2.3.5' + network: '192.0.2.10' } } } @@ -611,7 +611,7 @@ describe(('deleteHandler'), function testDeleteHandler() { description: 'none', key: 0, localAddress: '10.10.0.0', - remoteAddress: '20.20.0.0', + remoteAddress: '192.0.2.20', secondaryAddress: 'any6', mode: 'bidirectional', transparent: 'disabled', @@ -675,12 +675,12 @@ describe(('deleteHandler'), function testDeleteHandler() { route: { name: 'route', mtu: 0, - netowrk: '1.2.3.5' + netowrk: '192.0.2.10' }, localRoute: { name: 'localRoute', mtu: 0, - netowrk: '1.2.3.4', + netowrk: '192.0.2.11', localOnly: true } } @@ -1079,7 +1079,7 @@ describe(('deleteHandler'), function testDeleteHandler() { NetAddressList: { netAddressList: { name: 'netAddressList', - addresses: ['192.0.2.10', '192.1.2.0/24'] + addresses: ['192.0.2.10', '192.0.2.0/24'] } } } @@ -1108,13 +1108,13 @@ describe(('deleteHandler'), function testDeleteHandler() { NetAddressList: { netAddressList: { name: 'netAddressList', - addresses: ['192.0.2.10', '192.1.2.0/24'] + addresses: ['192.0.2.10', '192.0.2.0/24'] } }, FirewallAddressList: { netAddressList: { name: 'netAddressList', - addresses: ['192.0.2.10', '192.1.2.0/24'] + addresses: ['192.0.2.10', '192.0.2.0/24'] } } } @@ -1205,7 +1205,7 @@ describe(('deleteHandler'), function testDeleteHandler() { FirewallAddressList: { firewallAddressList: { name: 'firewallAddressList', - addresses: ['192.0.2.10', '192.1.2.0/24'] + addresses: ['192.0.2.10', '192.0.2.0/24'] } } } @@ -1234,13 +1234,13 @@ describe(('deleteHandler'), function testDeleteHandler() { NetAddressList: { netAddressList: { name: 'netAddressList', - addresses: ['192.0.2.10', '192.1.2.0/24'] + addresses: ['192.0.2.10', '192.0.2.0/24'] } }, FirewallAddressList: { netAddressList: { name: 'netAddressList', - addresses: ['192.0.2.10', '192.1.2.0/24'] + addresses: ['192.0.2.10', '192.0.2.0/24'] } } } diff --git a/test/unit/lib/doUtilTests.js b/test/unit/lib/doUtilTests.js index 65044fea..d0ea068a 100644 --- a/test/unit/lib/doUtilTests.js +++ b/test/unit/lib/doUtilTests.js @@ -419,14 +419,14 @@ describe('doUtil', () => { commandResult: 'status: NXDOMAIN' }); - return assert.isRejected(doUtil.checkDnsResolution(bigIpMock, '260.84.18.2'), 'Unable to resolve host 260.84.18.2'); + return assert.isRejected(doUtil.checkDnsResolution(bigIpMock, '260.84.18.2'), 'Unable to resolve host 260.84.18.2'); // gitleaks:allow }); it('should resolve true if a valid ip is given', () => { bigIpMock.create = () => Promise.resolve({ commandResult: 'status: NOERROR' }); - return assert.isFulfilled(doUtil.checkDnsResolution(bigIpMock, '160.84.18.2', true)); + return assert.isFulfilled(doUtil.checkDnsResolution(bigIpMock, '192.0.2.10', true)); }); it('should resolve true if dig returns the address', () => { diff --git a/test/unit/lib/dscHandlerTests.js b/test/unit/lib/dscHandlerTests.js index 98514d31..ca77e5db 100644 --- a/test/unit/lib/dscHandlerTests.js +++ b/test/unit/lib/dscHandlerTests.js @@ -69,7 +69,7 @@ describe('dscHandler', () => { const declaration = { Common: { ConfigSync: { - configsyncIp: '1.2.3.4' + configsyncIp: '192.0.2.10' } } }; @@ -77,7 +77,7 @@ describe('dscHandler', () => { const dscHandler = new DscHandler(declaration, bigIpMock); return dscHandler.process() .then(() => { - assert.strictEqual(configSyncIpSent, '1.2.3.4'); + assert.strictEqual(configSyncIpSent, '192.0.2.10'); }); }); @@ -85,7 +85,7 @@ describe('dscHandler', () => { const declaration = { Common: { ConfigSync: { - configsyncIp: '1.2.3.4/24' + configsyncIp: '192.0.2.10/24' } } }; @@ -93,7 +93,7 @@ describe('dscHandler', () => { const dscHandler = new DscHandler(declaration, bigIpMock); return dscHandler.process() .then(() => { - assert.strictEqual(configSyncIpSent, '1.2.3.4'); + assert.strictEqual(configSyncIpSent, '192.0.2.10'); }); }); @@ -129,7 +129,7 @@ describe('dscHandler', () => { }); describe('FailoverUnicast', () => { - const address = '1.2.3.4'; + const address = '192.0.2.10'; const port = 1234; let pathSent; @@ -148,7 +148,7 @@ describe('dscHandler', () => { FailoverUnicast: { unicastAddress: [ { ip: `${address}/24`, port }, - { ip: '5.6.7.8', port: 3456 } + { ip: '192.0.2.50', port: 3456 } ] } } @@ -160,8 +160,8 @@ describe('dscHandler', () => { assert.strictEqual(pathSent, '/tm/cm/device/~Common~my.bigip.com'); assert.deepStrictEqual(bodySent.unicastAddress, [ - { ip: '1.2.3.4', port: 1234 }, - { ip: '5.6.7.8', port: 3456 } + { ip: '192.0.2.10', port: 1234 }, + { ip: '192.0.2.50', port: 3456 } ]); }); }); @@ -183,7 +183,7 @@ describe('dscHandler', () => { const dscHandler = new DscHandler(declaration, bigIpMock); return dscHandler.process() .then(() => { - assert.strictEqual(bodySent.unicastAddress[0].ip, '1.2.3.4'); + assert.strictEqual(bodySent.unicastAddress[0].ip, '192.0.2.10'); }); }); @@ -224,7 +224,7 @@ describe('dscHandler', () => { FailoverUnicast: { unicastAddress: [ { - ip: '224.0.0.100', + ip: '192.0.2.40', port: 1026 } ] @@ -240,7 +240,7 @@ describe('dscHandler', () => { [ { port: 1026, - ip: '224.0.0.100' + ip: '192.0.2.40' } ] ); @@ -264,7 +264,7 @@ describe('dscHandler', () => { Common: { FailoverMulticast: { multicastInterface: 'exampleInterface', - multicastIp: '1.2.3.4', + multicastIp: '192.0.2.10', multicastPort: 765 } } @@ -275,7 +275,7 @@ describe('dscHandler', () => { .then(() => { assert.deepStrictEqual(bodySent, { multicastInterface: 'exampleInterface', - multicastIp: '1.2.3.4', + multicastIp: '192.0.2.10', multicastPort: 765 }); assert.strictEqual(pathSent, '/tm/cm/device/~Common~my.bigip.com'); @@ -338,7 +338,7 @@ describe('dscHandler', () => { const declaration = { Common: { MirrorIp: { - mirrorIp: '1.0.0.0', + mirrorIp: '192.0.2.30', mirrorSecondaryIp: 'any6' } } @@ -348,7 +348,7 @@ describe('dscHandler', () => { return dscHandler.process() .then(() => { assert.strictEqual(pathSent, '/tm/cm/device/~Common~my.bigip.com'); - assert.strictEqual(bodySent.mirrorIp, '1.0.0.0'); + assert.strictEqual(bodySent.mirrorIp, '192.0.2.30'); assert.strictEqual(bodySent.mirrorSecondaryIp, 'any6'); }); }); @@ -358,7 +358,7 @@ describe('dscHandler', () => { Common: { MirrorIp: { mirrorIp: 'any6', - mirrorSecondaryIp: '1.0.0.0' + mirrorSecondaryIp: '192.0.2.30' } } }; @@ -368,7 +368,7 @@ describe('dscHandler', () => { .then(() => { assert.strictEqual(pathSent, '/tm/cm/device/~Common~my.bigip.com'); assert.strictEqual(bodySent.mirrorIp, 'any6'); - assert.strictEqual(bodySent.mirrorSecondaryIp, '1.0.0.0'); + assert.strictEqual(bodySent.mirrorSecondaryIp, '192.0.2.30'); }); }); @@ -376,8 +376,8 @@ describe('dscHandler', () => { const declaration = { Common: { MirrorIp: { - mirrorIp: '1.0.0.0', - mirrorSecondaryIp: '2.0.0.0' + mirrorIp: '192.0.2.30', + mirrorSecondaryIp: '192.0.2.20' } } }; @@ -386,8 +386,8 @@ describe('dscHandler', () => { return dscHandler.process() .then(() => { assert.strictEqual(pathSent, '/tm/cm/device/~Common~my.bigip.com'); - assert.strictEqual(bodySent.mirrorIp, '1.0.0.0'); - assert.strictEqual(bodySent.mirrorSecondaryIp, '2.0.0.0'); + assert.strictEqual(bodySent.mirrorIp, '192.0.2.30'); + assert.strictEqual(bodySent.mirrorSecondaryIp, '192.0.2.20'); }); }); @@ -1189,7 +1189,7 @@ describe('dscHandler', () => { { name: 'my.bigip.com', configsyncIp: 'fdc3:eaf2:d8b9:123a::1', - managementIp: '1.2.3.4' + managementIp: '192.0.2.10' } ]); } diff --git a/test/unit/lib/gslbHandlerTests.js b/test/unit/lib/gslbHandlerTests.js index 692ce606..12331543 100644 --- a/test/unit/lib/gslbHandlerTests.js +++ b/test/unit/lib/gslbHandlerTests.js @@ -487,7 +487,7 @@ describe('gslbHandler', () => { gslbMonitor1: { name: 'gslbMonitor1', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -536,7 +536,7 @@ describe('gslbHandler', () => { { name: 'gslbMonitor1', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -585,7 +585,7 @@ describe('gslbHandler', () => { { name: 'gslbMonitor1', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -636,7 +636,7 @@ describe('gslbHandler', () => { { name: 'gslbMonitor1', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -681,7 +681,7 @@ describe('gslbHandler', () => { { name: 'gslbMonitor1', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -734,7 +734,7 @@ describe('gslbHandler', () => { { name: 'gslbMonitor1', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, diff --git a/test/unit/lib/inspectHandlerTests.js b/test/unit/lib/inspectHandlerTests.js index d2d1ffea..9759c0bd 100644 --- a/test/unit/lib/inspectHandlerTests.js +++ b/test/unit/lib/inspectHandlerTests.js @@ -557,10 +557,10 @@ describe('inspectHandler', () => { name: 'amazonaws.com', nameservers: [ { - name: '8.8.8.8:53' + name: '192.0.2.13:53' }, { - name: '8.8.8.7:53' + name: '192.0.2.14:53' } ] }, @@ -568,10 +568,10 @@ describe('inspectHandler', () => { name: 'idservice.net', nameservers: [ { - name: '8.8.4.4:53' + name: '192.0.2.12:53' }, { - name: '8.8.4.3:53' + name: '192.0.2.15:53' } ] } @@ -644,7 +644,7 @@ describe('inspectHandler', () => { }, { name: 'externalSelfIp', - address: '11.0.0.2/24', + address: '192.0.2.30/24', vlan: '/Common/externalVlan', trafficGroup: '/Common/traffic-group-local-only', allowService: 'none', @@ -661,7 +661,7 @@ describe('inspectHandler', () => { }, { name: 'testRoute2', - gw: '11.0.0.11', + gw: '192.0.2.11', network: '30.0.0.0/24', mtu: 0, partition: 'Common' @@ -669,7 +669,7 @@ describe('inspectHandler', () => { { name: 'testRoute3', tmInterface: '/Common/tunnel', - network: '1.2.3.4/32', + network: '192.0.2.16/32', mtu: 0, partition: 'LOCAL_ONLY' } @@ -678,7 +678,7 @@ describe('inspectHandler', () => { { name: 'exampleAsPath', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/as-path/~Common~exampleAsPath/entries?ver=14.1.2.7' + link: 'https://localhost/mgmt/tm/net/routing/as-path/~Common~exampleAsPath/entries?ver=14.1.2' } } ], @@ -687,7 +687,7 @@ describe('inspectHandler', () => { name: 'exampleAccessList', description: 'my description', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/access-list/~Common~exampleAccessList/entries?ver=14.1.2.7' + link: 'https://localhost/mgmt/tm/net/routing/access-list/~Common~exampleAccessList/entries?ver=14.1.2' } } ], @@ -723,7 +723,7 @@ describe('inspectHandler', () => { { name: 'examplePrefixList', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/prefix-list/~Common~examplePrefixList/entries?ver=14.1.2.7' + link: 'https://localhost/mgmt/tm/net/routing/prefix-list/~Common~examplePrefixList/entries?ver=14.1.2' } } ], @@ -746,7 +746,7 @@ describe('inspectHandler', () => { name: 'exampleRouteMap', routeDomain: '/Common/one', entriesReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~exampleRouteMap/entries?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~exampleRouteMap/entries?ver=14.1.2' } } ], @@ -786,7 +786,7 @@ describe('inspectHandler', () => { name: 'kernel', routeMap: '/Common/routeMap1', routeMapReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~exampleBGP?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~exampleBGP?ver=14.1.2' } } ] @@ -801,10 +801,10 @@ describe('inspectHandler', () => { keepAlive: 10, localAs: 65010, neighborReference: { - link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~exampleBGP/neighbor?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~exampleBGP/neighbor?ver=14.1.2' }, peerGroupReference: { - link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~exampleBGP/peer-group?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/bgp/~Common~exampleBGP/peer-group?ver=14.1.2' }, routerId: '10.1.1.1', routeDomain: '/Common/4' @@ -828,11 +828,11 @@ describe('inspectHandler', () => { routeMap: { in: '/Common/routeMapIn', inReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMapIn?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMapIn?ver=14.1.2' }, out: '/Common/routeMapOut', outReference: { - link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMapOut?ver=14.1.2.8' + link: 'https://localhost/mgmt/tm/net/routing/route-map/~Common~routeMapOut?ver=14.1.2' } }, softReconfigurationInbound: 'enabled', @@ -851,10 +851,10 @@ describe('inspectHandler', () => { [`/tm/cm/device/~Common~${deviceName}`]: { configsyncIp: '10.0.0.2', mirrorIp: '10.0.0.2', - mirrorSecondaryIp: '11.0.0.2', + mirrorSecondaryIp: '192.0.2.30', unicastAddress: [{ ip: '10.0.0.2', port: 1026 }], multicastInterface: 'exampleInterface', - multicastIp: '1.2.3.4', + multicastIp: '192.0.2.16', multicastPort: 12 }, '/tm/analytics/global-settings': { @@ -869,7 +869,7 @@ describe('inspectHandler', () => { }, '/tm/sys/management-ip': [ { - name: '1.2.3.4/5', + name: '192.0.2.16/5', description: 'configured-statically by DO' } ], @@ -944,7 +944,7 @@ describe('inspectHandler', () => { sysContact: 'me@me.com', sysLocation: 'F5 Tower', allowedAddresses: [ - '1.2.3.4/32' + '192.0.2.16/32' ], bigipTraps: 'enabled', authTrap: 'disabled', @@ -978,7 +978,7 @@ describe('inspectHandler', () => { { name: '/Common/otherTrapDestination', version: '3', - host: '1.2.3.4', + host: '192.0.2.16', port: 8080, authPassword: '$M$4H$PXdpZO3Xd65xnMkC+F+mdQ==', authProtocol: 'sha', @@ -992,7 +992,7 @@ describe('inspectHandler', () => { { name: '/Common/mgmtTrapDestination', version: '3', - host: '1.2.3.4', + host: '192.0.2.16', port: 8080, authPassword: '$M$4H$PXdpZO3Xd65xnMkC+F+mdQ==', authProtocol: 'sha', @@ -1053,7 +1053,7 @@ describe('inspectHandler', () => { { name: 'system_auth_name2', port: 1812, - server: '127.0.0.2', + server: '192.0.2.32', secret: 'secret' } ], @@ -1195,7 +1195,7 @@ describe('inspectHandler', () => { autoLasthop: 'default', localAddress: 'any6', remoteAddress: 'any6', - secondaryAddress: '30.30.30.30', + secondaryAddress: '192.0.2.31', key: 0, mode: 'bidirectional', transparent: 'disabled', @@ -1303,7 +1303,7 @@ describe('inspectHandler', () => { { name: 'virtualServer1', description: 'virtual server description one', - destination: '192.0.10.20:443', + destination: '192.0.2.20:443', enabled: false, disabled: true, translationAddress: '10.10.0.10', @@ -1328,7 +1328,7 @@ describe('inspectHandler', () => { selfLink: 'https://localhost/mgmt/tm/gtm/monitor/http/~Common~currentGSLBMonitorHTTP?ver=15.1.2', defaultsFrom: '/Common/http', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', ignoreDownResponse: 'enabled', interval: 100, probeTimeout: 110, @@ -1351,7 +1351,7 @@ describe('inspectHandler', () => { cert: '/Common/cert', defaultsFrom: '/Common/https', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', ignoreDownResponse: 'enabled', interval: 100, probeTimeout: 110, @@ -1372,7 +1372,7 @@ describe('inspectHandler', () => { selfLink: 'https://localhost/mgmt/tm/gtm/monitor/gateway-icmp/~Common~currentGSLBMonitorICMP?ver=15.1.2', defaultsFrom: '/Common/gateway-icmp', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', ignoreDownResponse: 'enabled', interval: 100, probeAttempts: 3, @@ -1392,7 +1392,7 @@ describe('inspectHandler', () => { selfLink: 'https://localhost/mgmt/tm/gtm/monitor/tcp/~Common~currentGSLBMonitorTCP?ver=15.1.2', defaultsFrom: '/Common/tcp', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', ignoreDownResponse: 'enabled', interval: 100, probeTimeout: 110, @@ -1414,7 +1414,7 @@ describe('inspectHandler', () => { debug: 'no', defaultsFrom: '/Common/udp', description: 'description', - destination: '1.1.1.1:80', + destination: '192.0.2.10:80', ignoreDownResponse: 'enabled', interval: 100, probeAttempts: 3, @@ -1741,15 +1741,15 @@ describe('inspectHandler', () => { { name: 'amazonaws.com', nameservers: [ - '8.8.8.8:53', - '8.8.8.7:53' + '192.0.2.13:53', + '192.0.2.14:53' ] }, { name: 'idservice.net', nameservers: [ - '8.8.4.4:53', - '8.8.4.3:53' + '192.0.2.12:53', + '192.0.2.15:53' ] } ], @@ -1810,7 +1810,7 @@ describe('inspectHandler', () => { }, externalSelfIp: { stagedFirewallPolicy: 'currentFirewallPolicy', - address: '11.0.0.2/24', + address: '192.0.2.30/24', vlan: 'externalVlan', trafficGroup: 'traffic-group-local-only', allowService: 'none', @@ -1823,14 +1823,14 @@ describe('inspectHandler', () => { class: 'Route' }, testRoute2: { - gw: '11.0.0.11', + gw: '192.0.2.11', network: '30.0.0.0/24', mtu: 0, class: 'Route' }, testRoute3: { target: 'tunnel', - network: '1.2.3.4/32', + network: '192.0.2.16/32', mtu: 0, class: 'Route', localOnly: true @@ -1981,7 +1981,7 @@ describe('inspectHandler', () => { }, currentFailoverMulticast: { interface: 'exampleInterface', - address: '1.2.3.4', + address: '192.0.2.16', port: 12, class: 'FailoverMulticast' }, @@ -1998,7 +1998,7 @@ describe('inspectHandler', () => { }, currentManagementIp: { class: 'ManagementIp', - address: '1.2.3.4/5', + address: '192.0.2.16/5', remark: 'configured-statically by DO' }, 'default-mgmt-route': { @@ -2066,7 +2066,7 @@ describe('inspectHandler', () => { contact: 'me@me.com', location: 'F5 Tower', allowList: [ - '1.2.3.4/32' + '192.0.2.16/32' ], snmpV1: true, snmpV2c: true @@ -2080,7 +2080,7 @@ describe('inspectHandler', () => { otherTrapDestination: { class: 'SnmpTrapDestination', version: '3', - destination: '1.2.3.4', + destination: '192.0.2.16', community: 'communityName', port: 8080, network: 'other', @@ -2098,7 +2098,7 @@ describe('inspectHandler', () => { mgmtTrapDestination: { class: 'SnmpTrapDestination', version: '3', - destination: '1.2.3.4', + destination: '192.0.2.16', community: 'communityName', port: 8080, network: 'management', @@ -2175,7 +2175,7 @@ describe('inspectHandler', () => { }, secondary: { port: 1812, - server: '127.0.0.2', + server: '192.0.2.32', secret: 'secret' } } @@ -2328,7 +2328,7 @@ describe('inspectHandler', () => { transparent: false, localAddress: 'any6', remoteAddress: 'any6', - secondaryAddress: '30.30.30.30', + secondaryAddress: '192.0.2.31', key: 0, mode: 'bidirectional', trafficGroup: 'none', @@ -2344,7 +2344,7 @@ describe('inspectHandler', () => { currentMirrorIp: { class: 'MirrorIp', primaryIp: '10.0.0.2', - secondaryIp: '11.0.0.2' + secondaryIp: '192.0.2.30' }, currentGSLBGlobals: { class: 'GSLBGlobals', @@ -2406,7 +2406,7 @@ describe('inspectHandler', () => { name: 'virtualServer1', remark: 'virtual server description one', enabled: false, - address: '192.0.10.20', + address: '192.0.2.20', port: 443, addressTranslation: '10.10.0.10', addressTranslationPort: 23, @@ -2434,7 +2434,7 @@ describe('inspectHandler', () => { class: 'GSLBMonitor', remark: 'description', monitorType: 'http', - target: '1.1.1.1:80', + target: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -2448,7 +2448,7 @@ describe('inspectHandler', () => { class: 'GSLBMonitor', remark: 'description', monitorType: 'https', - target: '1.1.1.1:80', + target: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -2464,7 +2464,7 @@ describe('inspectHandler', () => { class: 'GSLBMonitor', remark: 'description', monitorType: 'gateway-icmp', - target: '1.1.1.1:80', + target: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -2477,7 +2477,7 @@ describe('inspectHandler', () => { class: 'GSLBMonitor', remark: 'description', monitorType: 'tcp', - target: '1.1.1.1:80', + target: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -2491,7 +2491,7 @@ describe('inspectHandler', () => { class: 'GSLBMonitor', remark: 'description', monitorType: 'udp', - target: '1.1.1.1:80', + target: '192.0.2.10:80', interval: 100, timeout: 1000, probeTimeout: 110, @@ -2734,7 +2734,7 @@ describe('inspectHandler', () => { const sharedName = 'sharedName'; listResponses['/tm/net/self'].push({ name: sharedName, - address: '11.0.0.2/24', + address: '192.0.2.30/24', vlan: '/Common/externalVlan', trafficGroup: '/Common/traffic-group-local-only', allowService: 'none' diff --git a/test/unit/lib/licensePoolValidatorTests.js b/test/unit/lib/licensePoolValidatorTests.js index 52e63723..c843785e 100644 --- a/test/unit/lib/licensePoolValidatorTests.js +++ b/test/unit/lib/licensePoolValidatorTests.js @@ -74,7 +74,7 @@ describe('licensePoolValidator', () => { myLicense: { class: 'License', licenseType: 'licensePool', - bigIqHost: '1.2.3.4', + bigIqHost: '192.0.2.10', bigIqUsername: 'myUser', bigIqPassword: 'myPassword' } @@ -133,7 +133,7 @@ describe('licensePoolValidator', () => { myLicense: { class: 'License', licenseType: 'licensePool', - bigIqHost: '1.2.3.4', + bigIqHost: '192.0.2.10', bigIqPassword: 'myPassword' } } @@ -152,7 +152,7 @@ describe('licensePoolValidator', () => { myLicense: { class: 'License', licenseType: 'licensePool', - bigIqHost: '1.2.3.4', + bigIqHost: '192.0.2.10', bigIqUsername: 'myUser' } } diff --git a/test/unit/lib/networkHandlerTests.js b/test/unit/lib/networkHandlerTests.js index ec6f736d..21dfb444 100644 --- a/test/unit/lib/networkHandlerTests.js +++ b/test/unit/lib/networkHandlerTests.js @@ -141,10 +141,10 @@ describe('networkHandler', () => { name: 'amazonaws.com', nameservers: [ { - name: '8.8.8.8:53' + name: '192.0.2.12:53' }, { - name: '8.8.8.7:53' + name: '192.0.2.13:53' } ] }, @@ -152,10 +152,10 @@ describe('networkHandler', () => { name: 'idservice.net', nameservers: [ { - name: '8.8.4.4:53' + name: '192.0.2.11:53' }, { - name: '8.8.4.3:53' + name: '192.0.2.14:53' } ] } @@ -183,12 +183,12 @@ describe('networkHandler', () => { assert.strictEqual(resolverData[0].forwardZones.length, 2); assert.strictEqual(resolverData[0].forwardZones[0].name, 'amazonaws.com'); - assert.strictEqual(resolverData[0].forwardZones[0].nameservers[0].name, '8.8.8.8:53'); - assert.strictEqual(resolverData[0].forwardZones[0].nameservers[1].name, '8.8.8.7:53'); + assert.strictEqual(resolverData[0].forwardZones[0].nameservers[0].name, '192.0.2.12:53'); + assert.strictEqual(resolverData[0].forwardZones[0].nameservers[1].name, '192.0.2.13:53'); assert.strictEqual(resolverData[0].forwardZones[1].name, 'idservice.net'); - assert.strictEqual(resolverData[0].forwardZones[1].nameservers[0].name, '8.8.4.4:53'); - assert.strictEqual(resolverData[0].forwardZones[1].nameservers[1].name, '8.8.4.3:53'); + assert.strictEqual(resolverData[0].forwardZones[1].nameservers[0].name, '192.0.2.11:53'); + assert.strictEqual(resolverData[0].forwardZones[1].nameservers[1].name, '192.0.2.14:53'); assert.strictEqual(resolverData[0].randomizeQueryNameCase, 'yes'); assert.strictEqual(resolverData[0].routeDomain, '0'); @@ -211,10 +211,10 @@ describe('networkHandler', () => { name: 'amazonaws.com', nameservers: [ { - name: '8.8.8.8:53' + name: '192.0.2.12:53' }, { - name: '8.8.8.7:53' + name: '192.0.2.13:53' } ] }, @@ -222,10 +222,10 @@ describe('networkHandler', () => { name: 'idservice.net', nameservers: [ { - name: '8.8.4.4:53' + name: '192.0.2.11:53' }, { - name: '8.8.4.3:53' + name: '192.0.2.14:53' } ] } @@ -244,11 +244,11 @@ describe('networkHandler', () => { assert.strictEqual(resolverData[0].partition, 'Common'); assert.strictEqual(resolverData[0].forwardZones.length, 2); assert.strictEqual(resolverData[0].forwardZones[0].name, 'amazonaws.com'); - assert.strictEqual(resolverData[0].forwardZones[0].nameservers[0].name, '8.8.8.8:53'); - assert.strictEqual(resolverData[0].forwardZones[0].nameservers[1].name, '8.8.8.7:53'); + assert.strictEqual(resolverData[0].forwardZones[0].nameservers[0].name, '192.0.2.12:53'); + assert.strictEqual(resolverData[0].forwardZones[0].nameservers[1].name, '192.0.2.13:53'); assert.strictEqual(resolverData[0].forwardZones[1].name, 'idservice.net'); - assert.strictEqual(resolverData[0].forwardZones[1].nameservers[0].name, '8.8.4.4:53'); - assert.strictEqual(resolverData[0].forwardZones[1].nameservers[1].name, '8.8.4.3:53'); + assert.strictEqual(resolverData[0].forwardZones[1].nameservers[0].name, '192.0.2.11:53'); + assert.strictEqual(resolverData[0].forwardZones[1].nameservers[1].name, '192.0.2.14:53'); }); }); }); @@ -441,7 +441,7 @@ describe('networkHandler', () => { selfIp1: { name: 'selfIp1', vlan: '/Common/vlan1', - address: '1.2.3.4', + address: '192.0.2.60', trafficGroup: '/Common/traffic-group-local-only', allowService: ['tcp:1234', 'tcp:5678'], fwEnforcedPolicy: 'firewallPolicy' @@ -449,7 +449,7 @@ describe('networkHandler', () => { selfIp2: { name: 'selfIp2', vlan: '/Common/vlan2', - address: '5.6.7.8', + address: '192.0.2.110', trafficGroup: '/Common/traffic-group-local-only', allowService: 'default', fwStagedPolicy: 'firewallPolicy' @@ -464,7 +464,7 @@ describe('networkHandler', () => { const selfIpData = dataSent[PATHS.SelfIp]; assert.strictEqual(selfIpData[0].name, 'selfIp1'); assert.strictEqual(selfIpData[0].vlan, '/Common/vlan1'); - assert.strictEqual(selfIpData[0].address, '1.2.3.4'); + assert.strictEqual(selfIpData[0].address, '192.0.2.60'); assert.strictEqual( selfIpData[0].trafficGroup, '/Common/traffic-group-local-only' ); @@ -476,7 +476,7 @@ describe('networkHandler', () => { assert.strictEqual(selfIpData[0].fwStagedPolicy, 'none'); assert.strictEqual(selfIpData[1].name, 'selfIp2'); assert.strictEqual(selfIpData[1].vlan, '/Common/vlan2'); - assert.strictEqual(selfIpData[1].address, '5.6.7.8'); + assert.strictEqual(selfIpData[1].address, '192.0.2.110'); assert.strictEqual( selfIpData[1].trafficGroup, '/Common/traffic-group-local-only' ); @@ -619,14 +619,14 @@ describe('networkHandler', () => { selfIp1: { name: 'selfIp1', vlan: '/Common/vlan1', - address: '1.2.3.4/24', + address: '192.0.2.60/24', trafficGroup: '/Common/traffic-group-local-only' } } } }; const device = { - configsyncIp: '1.2.3.4' + configsyncIp: '192.0.2.60' }; bigIpMock.list = (path) => { @@ -647,7 +647,7 @@ describe('networkHandler', () => { return networkHandler.process() .then(() => { assert.strictEqual(configSyncIpDataSent[0], 'none'); - assert.strictEqual(configSyncIpDataSent[1], '1.2.3.4'); + assert.strictEqual(configSyncIpDataSent[1], '192.0.2.60'); }); }); @@ -866,7 +866,7 @@ describe('networkHandler', () => { selfIp: { name: 'selfIp', vlan: '/Common/vlan', - address: '1.2.3.4', + address: '192.0.2.60', allowService: 'default', trafficGroup: '/Common/traffic-group-local-only' } @@ -899,13 +899,13 @@ describe('networkHandler', () => { theRoute: { name: 'theRoute', gw: '10.11.12.13', - network: '50.60.70.80', + network: '192.0.2.20', mtu: 1000 }, localRoute: { name: 'localRoute', tmInterface: 'targetVLAN', - network: '50.60.70.81', + network: '192.0.2.21', mtu: 1120, localOnly: true } @@ -919,13 +919,13 @@ describe('networkHandler', () => { theRoute: { name: 'theRoute', gw: '10.11.12.13', - network: '51.62.73.84/32', + network: '192.0.2.21/32', mtu: 1000 }, localRoute: { name: 'localRoute', gw: '10.11.12.13', - network: '51.62.73.85/32', + network: '192.0.2.22/32', mtu: 1005, localOnly: true } @@ -947,14 +947,14 @@ describe('networkHandler', () => { }, route2: { name: 'route2', - gw: '1.1.1.1', - network: '2.2.2.2', + gw: '192.0.2.10', + network: '192.0.2.100', mtu: 1400 }, route3: { name: 'route3', tmInterface: 'targetTunnel', - network: '1.2.3.4', + network: '192.0.2.60', mtu: 100, localOnly: false }, @@ -987,13 +987,13 @@ describe('networkHandler', () => { assert.strictEqual(routeData[0].mtu, 1500); assert.strictEqual(routeData[0].partition, 'Common'); assert.strictEqual(routeData[1].name, 'route2'); - assert.strictEqual(routeData[1].gw, '1.1.1.1'); - assert.strictEqual(routeData[1].network, '2.2.2.2/32'); + assert.strictEqual(routeData[1].gw, '192.0.2.10'); + assert.strictEqual(routeData[1].network, '192.0.2.100/32'); assert.strictEqual(routeData[1].mtu, 1400); assert.strictEqual(routeData[1].partition, 'Common'); assert.strictEqual(routeData[2].name, 'route3'); assert.strictEqual(routeData[2].interface, '/Common/targetTunnel'); - assert.strictEqual(routeData[2].network, '1.2.3.4/32'); + assert.strictEqual(routeData[2].network, '192.0.2.60/32'); assert.strictEqual(routeData[2].mtu, 100); assert.strictEqual(routeData[2].partition, 'Common'); assert.deepStrictEqual(routeData[3], { @@ -1061,19 +1061,19 @@ describe('networkHandler', () => { localRoute: { name: 'localRoute', gw: '10.11.12.13', - network: '51.62.73.85/32', + network: '192.0.2.32/32', mtu: 1005, localOnly: true } }; - declaration.Common.Route.localRoute.network = '51.62.73.86/32'; + declaration.Common.Route.localRoute.network = '192.0.2.31/32'; const networkHandler = new NetworkHandler(declaration, bigIpMock, null, state); return networkHandler.process() .then(() => { assert.strictEqual(bigIpMockSpy.create.callCount, 2); assert.strictEqual(bigIpMockSpy.delete.callCount, 1); assert.deepStrictEqual(deletedPaths, ['/tm/net/route/~LOCAL_ONLY~localRoute']); - assert.strictEqual(dataSent[PATHS.Route][1].network, '51.62.73.86/32'); + assert.strictEqual(dataSent[PATHS.Route][1].network, '192.0.2.31/32'); }); }); }); @@ -1392,8 +1392,8 @@ describe('networkHandler', () => { autoLasthop: 'default', key: 0, localAddress: '10.10.10.10', - remoteAddress: '20.20.20.10', - secondaryAddress: '30.30.30.10', + remoteAddress: '192.0.2.50', + secondaryAddress: '192.0.2.70', mode: 'bidirectional', transparent: 'disabled', trafficGroup: 'traffic-group-local-only' @@ -1407,8 +1407,8 @@ describe('networkHandler', () => { autoLasthop: 'enabled', key: 1, localAddress: '10.10.10.20', - remoteAddress: '20.20.20.20', - secondaryAddress: '30.30.30.20', + remoteAddress: '192.0.2.30', + secondaryAddress: '192.0.2.80', mode: 'inbound', transparent: 'enabled', trafficGroup: 'none' @@ -1423,7 +1423,7 @@ describe('networkHandler', () => { description: 'none', key: 0, localAddress: '10.10.0.0', - remoteAddress: '20.20.0.0', + remoteAddress: '192.0.2.40', secondaryAddress: 'any6', mode: 'bidirectional', transparent: 'disabled', @@ -1486,8 +1486,8 @@ describe('networkHandler', () => { tos: 'preserve', usePmtu: 'enabled', localAddress: '10.10.10.10', - remoteAddress: '20.20.20.10', - secondaryAddress: '30.30.30.10', + remoteAddress: '192.0.2.50', + secondaryAddress: '192.0.2.70', key: 0, mode: 'bidirectional', transparent: 'disabled', @@ -1503,8 +1503,8 @@ describe('networkHandler', () => { tos: 12, usePmtu: 'disabled', localAddress: '10.10.10.20', - remoteAddress: '20.20.20.20', - secondaryAddress: '30.30.30.20', + remoteAddress: '192.0.2.30', + secondaryAddress: '192.0.2.80', key: 1, mode: 'inbound', transparent: 'enabled', @@ -1520,7 +1520,7 @@ describe('networkHandler', () => { tos: 'preserve', usePmtu: 'enabled', localAddress: '10.10.0.0', - remoteAddress: '20.20.0.0', + remoteAddress: '192.0.2.40', secondaryAddress: 'any6', key: 0, mode: 'bidirectional', diff --git a/test/unit/lib/routingAccessListValidatorTests.js b/test/unit/lib/routingAccessListValidatorTests.js index 51bd8e7e..81458e76 100644 --- a/test/unit/lib/routingAccessListValidatorTests.js +++ b/test/unit/lib/routingAccessListValidatorTests.js @@ -39,7 +39,7 @@ describe('routingAccessListValidator', () => { describe('valid', () => { it('should validate single item entries', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingAccessList1: { @@ -77,7 +77,7 @@ describe('routingAccessListValidator', () => { it('should validate multiple item entries with a single exactMatch true', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingAccessList1: { @@ -145,7 +145,7 @@ describe('routingAccessListValidator', () => { describe('invalid', () => { it('should invalidate any non-any-address destination when any 1 entry has exactMatch true', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingAccessList: { @@ -180,7 +180,7 @@ describe('routingAccessListValidator', () => { it('should invalidate mixing address families in the same entry', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingAccessList: { @@ -208,7 +208,7 @@ describe('routingAccessListValidator', () => { it('should invalidate mixing address families across entries', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingAccessList: { @@ -219,7 +219,7 @@ describe('routingAccessListValidator', () => { action: 'permit', source: '10.10.10.10', exactMatchEnabled: false, - destination: '20.20.20.20' + destination: '192.0.2.20' }, { name: 20, diff --git a/test/unit/lib/routingBgpValidatorTests.js b/test/unit/lib/routingBgpValidatorTests.js index 4e220b09..c524b7e3 100644 --- a/test/unit/lib/routingBgpValidatorTests.js +++ b/test/unit/lib/routingBgpValidatorTests.js @@ -27,7 +27,7 @@ describe('routingBgpValidator', () => { beforeEach(() => { wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingBgp: { @@ -113,7 +113,7 @@ describe('routingBgpValidator', () => { beforeEach(() => { wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingBgp: { @@ -163,7 +163,7 @@ describe('routingBgpValidator', () => { it('should validate when there is nothing to validate', () => { wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: {} } @@ -206,7 +206,7 @@ describe('routingBgpValidator', () => { beforeEach(() => { wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRouteMap1: { diff --git a/test/unit/lib/routingPrefixListValidatorTests.js b/test/unit/lib/routingPrefixListValidatorTests.js index e1a916ef..1b8da3a6 100644 --- a/test/unit/lib/routingPrefixListValidatorTests.js +++ b/test/unit/lib/routingPrefixListValidatorTests.js @@ -25,7 +25,7 @@ describe('routingPrefixListValidator', () => { describe('valid', () => { it('should validate single-value prefixLengthRange', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -73,7 +73,7 @@ describe('routingPrefixListValidator', () => { it('should validate multi-value prefixLengthRange', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -121,7 +121,7 @@ describe('routingPrefixListValidator', () => { it('should validate when prefixLength range is 0', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -157,7 +157,7 @@ describe('routingPrefixListValidator', () => { it('should validate prefixLengthRange if start or end is 0', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -205,7 +205,7 @@ describe('routingPrefixListValidator', () => { it('should validate prefixLengthRange if start or end is missing', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -253,7 +253,7 @@ describe('routingPrefixListValidator', () => { it('should validate when there is nothing to validate', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: {} } @@ -266,7 +266,7 @@ describe('routingPrefixListValidator', () => { it('should validate when entries property is missing', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -284,7 +284,7 @@ describe('routingPrefixListValidator', () => { it('should validate when entries property is empty', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList1: { @@ -304,7 +304,7 @@ describe('routingPrefixListValidator', () => { describe('invalid', () => { it('should invalidate if prefixLengthRange is only a colon', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { @@ -331,7 +331,7 @@ describe('routingPrefixListValidator', () => { it('should invalidate if prefixLengthRange is only empty string', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { @@ -358,7 +358,7 @@ describe('routingPrefixListValidator', () => { it('should invalidate if range start greater than end unless end is 0', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { @@ -394,7 +394,7 @@ describe('routingPrefixListValidator', () => { describe('hard range limit exceeded', () => { it('should invalidate if prefixLengthRange is greater than 32 if prefix is an ipv4 address', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { @@ -429,7 +429,7 @@ describe('routingPrefixListValidator', () => { it('should invalidate if prefixLengthRange is greater than 128 if prefix is an ipv6 address', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { @@ -466,7 +466,7 @@ describe('routingPrefixListValidator', () => { describe('prefix length limit exceeded', () => { it('should invalidate if prefixLengthRange is equal to or less than ipv6 prefix property length', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { @@ -501,7 +501,7 @@ describe('routingPrefixListValidator', () => { it('should invalidate if prefixLengthRange is equal to or less than ipv4 prefix property length', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { exampleRoutingPrefixList: { diff --git a/test/unit/lib/systemHandlerTests.js b/test/unit/lib/systemHandlerTests.js index 060c7c7e..dfee942a 100644 --- a/test/unit/lib/systemHandlerTests.js +++ b/test/unit/lib/systemHandlerTests.js @@ -125,7 +125,7 @@ describe('systemHandler', () => { return Promise.resolve(); }, deviceInfo() { - return Promise.resolve({ version: '15.1.0.1' }); + return Promise.resolve({ version: '15.1.0' }); }, setHost() { return Promise.resolve(); @@ -474,7 +474,7 @@ describe('systemHandler', () => { Common: { DNS: { nameServers: [ - '8.8.8.8', + '192.0.2.20', '2001:4860:4860::8844' ], search: ['one.com', 'two.com'] @@ -495,7 +495,7 @@ describe('systemHandler', () => { Common: { DNS: { nameServers: [ - '8.8.8.8', + '192.0.2.20', '2001:4860:4860::8844' ], search: ['one.com', 'two.com'] @@ -507,7 +507,7 @@ describe('systemHandler', () => { return systemHandler.process() .then(() => { assert.strictEqual(pathSent, PATHS.DNS); - assert.deepEqual(dataSent['name-servers'], ['8.8.8.8', '2001:4860:4860::8844']); + assert.deepEqual(dataSent['name-servers'], ['192.0.2.20', '2001:4860:4860::8844']); assert.deepEqual(dataSent.search, ['one.com', 'two.com']); }); }); @@ -516,7 +516,7 @@ describe('systemHandler', () => { const declaration = { Common: { DNS: { - nameServers: ['1.2.3.4'], + nameServers: ['192.0.2.10'], search: ['f5.com'] } } @@ -539,7 +539,7 @@ describe('systemHandler', () => { const declaration = { Common: { DNS: { - nameServers: ['1.2.3.4'], + nameServers: ['192.0.2.10'], search: ['f5.com'] } } @@ -564,7 +564,7 @@ describe('systemHandler', () => { const declaration = { Common: { DNS: { - nameServers: ['1.2.3.4'], + nameServers: ['192.0.2.10'], search: ['f5.com'] } } @@ -834,7 +834,7 @@ describe('systemHandler', () => { }); it('should ignore guiAudit if version < 14.0', () => { - sinon.stub(bigIpMock, 'deviceInfo').resolves({ version: '13.1.1.3' }); + sinon.stub(bigIpMock, 'deviceInfo').resolves({ version: '13.1.1' }); const declaration = { Common: { System: { @@ -1242,7 +1242,7 @@ describe('systemHandler', () => { } } }; - const host = '11.12.13.14'; + const host = '192.0.2.50'; let bigIqHostSent; let bigIqUsernameSent; @@ -1302,8 +1302,8 @@ describe('systemHandler', () => { } } }; - const host = '11.12.13.14'; - const managementAddress = '1.2.3.4'; + const host = '192.0.2.50'; + const managementAddress = '192.0.2.10'; const managementPort = 5678; let optionsSent; @@ -1336,7 +1336,7 @@ describe('systemHandler', () => { assert.strictEqual(optionsSent.noUnreachable, true); assert.strictEqual(bigIpUsernameSent, 'mybigipuser'); assert.strictEqual(bigIpPasswordSent, 'barbar'); - assert.strictEqual(bigIpHostSent, '1.2.3.4'); + assert.strictEqual(bigIpHostSent, '192.0.2.10'); assert.strictEqual(bigIpPortSent, 5678); assert.strictEqual(activeCalled, true); }); @@ -1352,7 +1352,7 @@ describe('systemHandler', () => { } } }; - const host = '11.12.13.14'; + const host = '192.0.2.50'; let bigIqHostSent; let optionsSent; @@ -1374,7 +1374,7 @@ describe('systemHandler', () => { return systemHandler.process() .then(() => { assert.strictEqual(bigIqHostSent, 'localhost'); - assert.strictEqual(optionsSent.bigIpMgmtAddress, '11.12.13.14'); + assert.strictEqual(optionsSent.bigIpMgmtAddress, '192.0.2.50'); assert.strictEqual(optionsSent.bigIqMgmtPort, 8100); assert.strictEqual(optionsSent.tenant, 'Test tenant description'); }); @@ -1393,7 +1393,7 @@ describe('systemHandler', () => { } } }; - const managementAddress = '1.2.3.4'; + const managementAddress = '192.0.2.10'; bigIpMock.onboard = { licenseViaBigIq() {} @@ -1586,8 +1586,8 @@ describe('systemHandler', () => { hostSet = undefined; state.currentConfig.Common.ManagementIp = { - '4.5.6.7/8': { - name: '4.5.6.7/8', + '192.0.2.40/8': { + name: '192.0.2.40/8', description: 'configured-by-dhcp' } }; @@ -1603,8 +1603,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is my description' } } @@ -1619,7 +1619,7 @@ describe('systemHandler', () => { assert.deepStrictEqual( managementIpData, { - name: '1.2.3.4/5', + name: '192.0.2.10/5', description: 'this is my description' } ); @@ -1629,7 +1629,7 @@ describe('systemHandler', () => { mgmtDhcp: 'disabled' } ); - assert.strictEqual(hostSet, '1.2.3.4'); + assert.strictEqual(hostSet, '192.0.2.10'); }); }); @@ -1637,8 +1637,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is my description' } } @@ -1646,8 +1646,8 @@ describe('systemHandler', () => { }; state.currentConfig.Common.ManagementIp = { - '4.5.6.7/8': { - name: '4.5.6.7/8', + '192.0.2.40/8': { + name: '192.0.2.40/8', description: 'this is my description' } }; @@ -1660,7 +1660,7 @@ describe('systemHandler', () => { assert.deepStrictEqual( managementIpData, { - name: '1.2.3.4/5', + name: '192.0.2.10/5', description: 'this is my description' } ); @@ -1670,7 +1670,7 @@ describe('systemHandler', () => { mgmtDhcp: 'disabled' } ); - assert.strictEqual(hostSet, '1.2.3.4'); + assert.strictEqual(hostSet, '192.0.2.10'); }); }); @@ -1678,8 +1678,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is new' } } @@ -1687,8 +1687,8 @@ describe('systemHandler', () => { }; state.currentConfig.Common.ManagementIp = { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is my description' } }; @@ -1696,7 +1696,7 @@ describe('systemHandler', () => { const systemHandler = new SystemHandler(declaration, bigIpMock, null, state); return systemHandler.process() .then(() => { - const expectedPath = `${PATHS.ManagementIp}/1.2.3.4~5`; + const expectedPath = `${PATHS.ManagementIp}/192.0.2.10~5`; const managementIpData = dataSent[expectedPath][0]; const mgmtDhcpData = dataSent[PATHS.SysGlobalSettings][0]; assert.deepStrictEqual( @@ -1711,7 +1711,7 @@ describe('systemHandler', () => { mgmtDhcp: 'disabled' } ); - assert.strictEqual(hostSet, '1.2.3.4'); + assert.strictEqual(hostSet, '192.0.2.10'); }); }); @@ -1719,8 +1719,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is my description' } } @@ -1737,13 +1737,13 @@ describe('systemHandler', () => { }); it('should delete the current management ip if using localhost and only changing mask', () => { - // Note: the beforeAll hook sets the IP to '4.5.6.7/8'. So this test + // Note: the beforeAll hook sets the IP to '192.0.2.40/8'. So this test // is changing just the mask and looking for a delete call. const declaration = { Common: { ManagementIp: { - '4.5.6.7/9': { - name: '4.5.6.7/9', + '192.0.2.40/9': { + name: '192.0.2.40/9', description: 'this is my description' } } @@ -1755,7 +1755,7 @@ describe('systemHandler', () => { const systemHandler = new SystemHandler(declaration, bigIpMock, null, state); return systemHandler.process() .then(() => { - assert.strictEqual(deletePathSent, `${PATHS.ManagementIp}/4.5.6.7~8`); + assert.strictEqual(deletePathSent, `${PATHS.ManagementIp}/192.0.2.40~8`); }); }); @@ -1763,8 +1763,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is my description' } } @@ -1784,8 +1784,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '4.5.6.7/9': { - name: '4.5.6.7/9', + '192.0.2.40/9': { + name: '192.0.2.40/9', description: 'this is my description' } } @@ -1800,8 +1800,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'this is my description' } } @@ -1819,8 +1819,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'configured-by-dhcp' } } @@ -1832,7 +1832,7 @@ describe('systemHandler', () => { return systemHandler.process() .then(() => { assert.deepStrictEqual(dataSent, null); - assert.strictEqual(hostSet, '1.2.3.4'); + assert.strictEqual(hostSet, '192.0.2.10'); }); }); @@ -1840,8 +1840,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '4.5.6.7/8': { - name: '4.5.6.7/8', + '192.0.2.40/8': { + name: '192.0.2.40/8', description: 'configured-by-dhcp' } } @@ -1856,7 +1856,7 @@ describe('systemHandler', () => { dataSent, null ); - assert.strictEqual(hostSet, '4.5.6.7'); + assert.strictEqual(hostSet, '192.0.2.40'); }); }); @@ -1864,8 +1864,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '4.5.6.7/8': { - name: '4.5.6.7/8' + '192.0.2.40/8': { + name: '192.0.2.40/8' } } } @@ -1876,7 +1876,7 @@ describe('systemHandler', () => { return systemHandler.process() .then(() => { assert.deepStrictEqual(dataSent, null); - assert.strictEqual(hostSet, '4.5.6.7'); + assert.strictEqual(hostSet, '192.0.2.40'); }); }); @@ -1889,16 +1889,16 @@ describe('systemHandler', () => { } }, ManagementIp: { - '1.2.3.4/5': { - name: '1.2.3.4/5', + '192.0.2.10/5': { + name: '192.0.2.10/5', description: 'configured-by-dhcp' } }, ManagementRoute: { managementRoute1: { name: 'managementRoute1', - gateway: '1.2.3.4', - network: '4.3.2.1', + gateway: '192.0.2.10', + network: '192.0.2.30', mtu: 1 } } @@ -1923,8 +1923,8 @@ describe('systemHandler', () => { const declaration = { Common: { ManagementIp: { - '4.5.6.7/8': { - name: '4.5.6.7/8', + '192.0.2.40/8': { + name: '192.0.2.40/8', description: 'this is my description' } } @@ -1952,8 +1952,8 @@ describe('systemHandler', () => { ManagementRoute: { theManagementRoute: { name: 'theManagementRoute', - gateway: '4.3.2.1', - network: '1.2.3.4', + gateway: '192.0.2.30', + network: '192.0.2.10', mtu: 123 } } @@ -1963,7 +1963,7 @@ describe('systemHandler', () => { state.currentConfig.Common.ManagementRoute = { theManagementRoute: { name: 'theManagementRoute', - gateway: '4.3.2.1', + gateway: '192.0.2.30', network: '10.20.30.40', mtu: 123 } @@ -1980,15 +1980,15 @@ describe('systemHandler', () => { managementRoute1: { name: 'managementRoute1', description: 'Example description', - gateway: '1.1.1.1', + gateway: '192.0.2.10', network: 'default-inet6', mtu: 1234, type: 'interface' }, managementRoute2: { name: 'managementRoute1', - gateway: '1.2.3.4', - network: '4.3.2.1', + gateway: '192.0.2.10', + network: '192.0.2.30', mtu: 1 } }; @@ -2001,14 +2001,14 @@ describe('systemHandler', () => { assert.strictEqual(managementRouteData[0].name, 'managementRoute1'); assert.strictEqual(managementRouteData[0].description, 'Example description'); assert.strictEqual(managementRouteData[0].partition, 'Common'); - assert.strictEqual(managementRouteData[0].gateway, '1.1.1.1'); + assert.strictEqual(managementRouteData[0].gateway, '192.0.2.10'); assert.strictEqual(managementRouteData[0].network, 'default-inet6'); assert.strictEqual(managementRouteData[0].mtu, 1234); assert.strictEqual(managementRouteData[0].type, 'interface'); assert.strictEqual(managementRouteData[1].name, 'managementRoute1'); assert.strictEqual(managementRouteData[1].partition, 'Common'); - assert.strictEqual(managementRouteData[1].gateway, '1.2.3.4'); - assert.strictEqual(managementRouteData[1].network, '4.3.2.1/32'); + assert.strictEqual(managementRouteData[1].gateway, '192.0.2.10'); + assert.strictEqual(managementRouteData[1].network, '192.0.2.30/32'); assert.strictEqual(managementRouteData[1].mtu, 1); }); }); @@ -2021,8 +2021,8 @@ describe('systemHandler', () => { assert.deepEqual(deletedPaths, ['/tm/sys/management-route/~Common~theManagementRoute']); assert.strictEqual(managementRouteData[0].name, 'theManagementRoute'); assert.strictEqual(managementRouteData[0].partition, 'Common'); - assert.strictEqual(managementRouteData[0].gateway, '4.3.2.1'); - assert.strictEqual(managementRouteData[0].network, '1.2.3.4/32'); + assert.strictEqual(managementRouteData[0].gateway, '192.0.2.30'); + assert.strictEqual(managementRouteData[0].network, '192.0.2.10/32'); assert.strictEqual(managementRouteData[0].mtu, 123); }); }); @@ -2038,7 +2038,7 @@ describe('systemHandler', () => { }); it('should not delete the existing ManagementRoute if network not updated', () => { - state.currentConfig.Common.ManagementRoute.theManagementRoute.network = '1.2.3.4/32'; + state.currentConfig.Common.ManagementRoute.theManagementRoute.network = '192.0.2.10/32'; const systemHandler = new SystemHandler(declaration, bigIpMock, null, state); return systemHandler.process() .then(() => { @@ -2046,8 +2046,8 @@ describe('systemHandler', () => { assert.deepEqual(deletedPaths, []); assert.strictEqual(managementRouteData[0].name, 'theManagementRoute'); assert.strictEqual(managementRouteData[0].partition, 'Common'); - assert.strictEqual(managementRouteData[0].gateway, '4.3.2.1'); - assert.strictEqual(managementRouteData[0].network, '1.2.3.4/32'); + assert.strictEqual(managementRouteData[0].gateway, '192.0.2.30'); + assert.strictEqual(managementRouteData[0].network, '192.0.2.10/32'); assert.strictEqual(managementRouteData[0].mtu, 123); }); }); @@ -2093,10 +2093,10 @@ describe('systemHandler', () => { '/tm/sys/management-route': [ { description: undefined, - gateway: '4.3.2.1', + gateway: '192.0.2.30', mtu: 123, name: 'theManagementRoute', - network: '1.2.3.4/32', + network: '192.0.2.10/32', partition: 'Common', type: undefined } @@ -2111,8 +2111,8 @@ describe('systemHandler', () => { declaration.Common.ManagementRoute = { managementRoute: { name: 'managementRoute1', - gateway: '1.2.3.4', - network: '4.3.2.1', + gateway: '192.0.2.10', + network: '192.0.2.30', mtu: 1 } }; @@ -2212,15 +2212,15 @@ describe('systemHandler', () => { managementRoute: {}, managementRoute1: { name: 'managementRoute1', - gateway: '1.2.3.4', - network: '4.3.2.1' + gateway: '192.0.2.10', + network: '192.0.2.30' } }; state.currentConfig.Common.ManagementRoute = { managementRoute: { name: 'managementRoute', - gateway: '1.2.3.4', - network: '4.3.2.1' + gateway: '192.0.2.10', + network: '192.0.2.30' } }; const systemHandler = new SystemHandler(declaration, bigIpMock, null, state); @@ -2234,8 +2234,8 @@ describe('systemHandler', () => { name: 'managementRoute1', description: undefined, partition: 'Common', - gateway: '1.2.3.4', - network: '4.3.2.1/32', + gateway: '192.0.2.10', + network: '192.0.2.30/32', mtu: undefined, type: undefined } @@ -2371,7 +2371,7 @@ describe('systemHandler', () => { } } }; - sinon.stub(bigIpMock, 'deviceInfo').resolves({ version: '13.1.1.3' }); + sinon.stub(bigIpMock, 'deviceInfo').resolves({ version: '13.1.1' }); const systemHandler = new SystemHandler(declaration, bigIpMock, null, state); return systemHandler.process() @@ -2597,7 +2597,7 @@ describe('systemHandler', () => { } } }; - sinon.stub(bigIpMock, 'deviceInfo').resolves({ version: '13.1.1.3' }); + sinon.stub(bigIpMock, 'deviceInfo').resolves({ version: '13.1.1' }); const systemHandler = new SystemHandler(declaration, bigIpMock, null, state); return systemHandler.process() @@ -2797,7 +2797,7 @@ describe('systemHandler', () => { SSHD: { allow: [ '192.168.*.*', - '1.2.3.4/32' + '192.0.2.10/32' ], bannerText: 'Text for banner', inactivityTimeout: 12345, @@ -2834,7 +2834,7 @@ describe('systemHandler', () => { { allow: [ '192.168.*.*', - '1.2.3.4/32' + '192.0.2.10/32' ], banner: 'enabled', bannerText: 'Text for banner', diff --git a/test/unit/lib/userValidatorTests.js b/test/unit/lib/userValidatorTests.js index d045cd60..c3992fd1 100644 --- a/test/unit/lib/userValidatorTests.js +++ b/test/unit/lib/userValidatorTests.js @@ -25,7 +25,7 @@ describe('userValidator', () => { describe('valid', () => { it('should validate valid root user and 2 valid non-root users', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { root: { @@ -57,7 +57,7 @@ describe('userValidator', () => { describe('invalid', () => { it('should invalidate a userType of "root" when user is not "root"', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { user1: { @@ -76,7 +76,7 @@ describe('userValidator', () => { it('should invalidate a userType of "regular" when user is "root"', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { root: { @@ -95,7 +95,7 @@ describe('userValidator', () => { it('should invalidate user names that are too long', () => { const wrapper = { - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', declaration: { Common: { userWithTooLongName_123456789012: { diff --git a/test/unit/lib/validatorTests.js b/test/unit/lib/validatorTests.js index 23506b79..0fa3e5b6 100644 --- a/test/unit/lib/validatorTests.js +++ b/test/unit/lib/validatorTests.js @@ -58,7 +58,7 @@ describe('validator', () => { "class": "Tenant", "mySelfIp": { "class": "SelfIp", - "address": "1.2.3.4", + "address": "192.0.2.10", "vlan": "foo" } } diff --git a/test/unit/nodejs/restWorkerTests.js b/test/unit/nodejs/restWorkerTests.js index cd5997cd..607cee7c 100644 --- a/test/unit/nodejs/restWorkerTests.js +++ b/test/unit/nodejs/restWorkerTests.js @@ -1027,7 +1027,7 @@ describe('restWorker', () => { Common: { mySelfIp: { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.10', vlan: 'foo' } } @@ -1597,7 +1597,7 @@ describe('restWorker', () => { it('should handle initial password set if user/password is admin/admin', () => new Promise((resolve, reject) => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetPort: 443, targetUsername: 'admin', targetPassphrase: 'admin', @@ -1637,7 +1637,7 @@ describe('restWorker', () => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetUsername: 'admin', targetSshKey: { path: '~/.ssh/id_rsa' @@ -1667,7 +1667,7 @@ describe('restWorker', () => { it('should ssh to BIG-IP if an ssh key is provided and shell is tmsh', (done) => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetUsername: 'admin', targetSshKey: { path: '~/.ssh/id_rsa' @@ -1697,7 +1697,7 @@ describe('restWorker', () => { it('should dereference user password if it is a pointer', () => new Promise((resolve, reject) => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetUsername: 'admin', targetSshKey: { path: '~/.ssh/id_rsa' @@ -1732,7 +1732,7 @@ describe('restWorker', () => { it('should delete targetSshKey when setting targetPassphrase', () => new Promise((resolve, reject) => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetUsername: 'admin', targetSshKey: { path: '~/.ssh/id_rsa' @@ -1768,7 +1768,7 @@ describe('restWorker', () => { it('should update password used to create bigIp', () => new Promise((resolve, reject) => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetUsername: 'admin', targetSshKey: { path: '~/.ssh/id_rsa' @@ -1807,7 +1807,7 @@ describe('restWorker', () => { it('should use password value if it is not really a pointer', () => new Promise((resolve, reject) => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetUsername: 'admin', targetSshKey: { path: '~/.ssh/id_rsa' @@ -1865,7 +1865,7 @@ describe('restWorker', () => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetPort: 443, targetUsername: 'admin', targetPassphrase: 'admin', @@ -1915,7 +1915,7 @@ describe('restWorker', () => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetPort: 443, targetUsername: 'admin', targetPassphrase: 'admin', @@ -1977,7 +1977,7 @@ describe('restWorker', () => { declaration = { class: 'DO', - targetHost: '1.2.3.4', + targetHost: '192.0.2.10', targetPort: 443, targetUsername: 'admin', targetSshKey: { diff --git a/test/unit/schema/authSchemaTests.js b/test/unit/schema/authSchemaTests.js index 06e89277..3a8e1cff 100644 --- a/test/unit/schema/authSchemaTests.js +++ b/test/unit/schema/authSchemaTests.js @@ -166,7 +166,7 @@ describe('auth.schema.json', () => { "radius": { "servers": { "primary": { - "server": "1.2.3.4", + "server": "192.0.2.10", "secret": "mumble" }, "secondary": { @@ -208,7 +208,7 @@ describe('auth.schema.json', () => { "radius": { "servers": { "secondary": { - "server": "5.6.7.8", + "server": "192.0.2.10", "secret": "mumble" } } @@ -336,7 +336,7 @@ describe('auth.schema.json', () => { "tacacs": { "servers": [ "my.host.com", - "1.2.3.4", + "192.0.2.10", "FE80:0000:0000:0000:0202:B3FF:FE1E:8329" ], "accounting": "send-to-all-servers", @@ -397,7 +397,7 @@ describe('auth.schema.json', () => { "class": "Authentication", "enabledSourceType": "tacacs", "tacacs": { - "servers": ["1.1.1.1"], + "servers": ["192.0.2.10"], "service": "ppp" } }; @@ -411,7 +411,7 @@ describe('auth.schema.json', () => { "class": "Authentication", "enabledSourceType": "tacacs", "tacacs": { - "servers": ["1.1.1.1"], + "servers": ["192.0.2.10"], "secret": "test" } }; @@ -448,7 +448,7 @@ describe('auth.schema.json', () => { searchTimeout: 687, servers: [ 'my.host.com', - '1.2.3.4', + '192.0.2.10', 'FE80:0000:0000:0000:0202:B3FF:FE1E:8329' ], ssl: "enabled", diff --git a/test/unit/schema/dscSchemaTests.js b/test/unit/schema/dscSchemaTests.js index ff5c1aca..b7bcef42 100644 --- a/test/unit/schema/dscSchemaTests.js +++ b/test/unit/schema/dscSchemaTests.js @@ -44,7 +44,7 @@ describe('dsc.schema.json', () => { it('should validate config sync data with IP configsyncIp', () => { const data = { "class": "ConfigSync", - "configsyncIp": "1.2.3.4" + "configsyncIp": "192.0.2.10" }; assert.ok(validate(data), getErrorString(validate)); }); @@ -87,7 +87,7 @@ describe('dsc.schema.json', () => { it('should invalidate additional properties', () => { const data = { "class": "ConfigSync", - "configsyncIp": "1.2.3.4", + "configsyncIp": "192.0.2.10", "foo": "bar" }; assert.strictEqual(validate(data), false, 'additional properties should not be valid'); @@ -101,7 +101,7 @@ describe('dsc.schema.json', () => { it('should validate minimal unicast address with ip', () => { const data = { "class": "FailoverUnicast", - "address": "1.2.3.4" + "address": "192.0.2.10" }; assert.ok(validate(data), getErrorString(validate)); }); @@ -122,7 +122,7 @@ describe('dsc.schema.json', () => { it('should validate full unicast address', () => { const data = { "class": "FailoverUnicast", - "address": "1.2.3.4", + "address": "192.0.2.10", "port": 8888 }; assert.ok(validate(data), getErrorString(validate)); @@ -132,16 +132,16 @@ describe('dsc.schema.json', () => { const data = { "class": "FailoverUnicast", "addressPorts": [ - { "address": "2.3.4.5", "port": 876 }, - { "address": "1.2.3.4" } + { "address": "192.0.2.20", "port": 876 }, + { "address": "192.0.2.10" } ] }; assert.ok(validate(data), getErrorString(validate)); assert.deepStrictEqual(data, { class: 'FailoverUnicast', addressPorts: [ - { address: '2.3.4.5', port: 876 }, - { address: '1.2.3.4', port: 1026 } + { address: '192.0.2.20', port: 876 }, + { address: '192.0.2.10', port: 1026 } ] }); }); @@ -175,7 +175,7 @@ describe('dsc.schema.json', () => { it('should invalidate bad port', () => { const data = { "class": "FailoverUnicast", - "address": "1.2.3.4", + "address": "192.0.2.10", "port": 65536 }; assert.strictEqual(validate(data), false, 'additional properties should not be valid'); @@ -200,10 +200,10 @@ describe('dsc.schema.json', () => { it('should invalidate if an addressPorts is provided as well as address', () => { const data = { "class": "FailoverUnicast", - "address": "1.2.3.4", + "address": "192.0.2.10", "addressPorts": [ { - "address": "1.2.3.4" + "address": "192.0.2.10" } ] }; @@ -219,7 +219,7 @@ describe('dsc.schema.json', () => { "port": 59, "addressPorts": [ { - "address": "1.2.3.4" + "address": "192.0.2.10" } ] }; @@ -234,7 +234,7 @@ describe('dsc.schema.json', () => { "class": "FailoverUnicast", "addressPorts": [ { - "address": "1.2.3.4", + "address": "192.0.2.10", "port": 65536 } ] @@ -248,7 +248,7 @@ describe('dsc.schema.json', () => { "class": "FailoverUnicast", "addressPorts": [ { - "address": "1.2.3.400" + "address": "192.0.2.1000" } ] }; @@ -267,7 +267,7 @@ describe('dsc.schema.json', () => { const data = { "class": "FailoverMulticast", "interface": "exampleInterface", - "address": "1.2.3.4", + "address": "192.0.2.10", "port": 123 }; assert.ok(validate(data), getErrorString(validate)); @@ -397,7 +397,7 @@ describe('dsc.schema.json', () => { "class": "DeviceTrust", "localUsername": "myUser", "localPassword": "myPassword", - "remoteHost": "1.2.3.4", + "remoteHost": "192.0.2.10", "remoteUsername": "yourUser", "remotePassword": "yourPassword" }; @@ -422,7 +422,7 @@ describe('dsc.schema.json', () => { const data = { "class": "DeviceTrust", "localPassword": "myPassword", - "remoteHost": "1.2.3.4", + "remoteHost": "192.0.2.10", "remoteUsername": "yourUser", "remotePassword": "yourPassword" }; @@ -434,7 +434,7 @@ describe('dsc.schema.json', () => { const data = { "class": "DeviceTrust", "localUsername": "myUser", - "remoteHost": "1.2.3.4", + "remoteHost": "192.0.2.10", "remoteUsername": "yourUser", "remotePassword": "yourPassword" }; @@ -459,7 +459,7 @@ describe('dsc.schema.json', () => { "class": "DeviceTrust", "localUsername": "myUser", "localPassword": "myPassword", - "remoteHost": "1.2.3.4", + "remoteHost": "192.0.2.10", "remotePassword": "yourPassword" }; assert.strictEqual(validate(data), false, 'missing remoteUsername should not be valid'); @@ -471,7 +471,7 @@ describe('dsc.schema.json', () => { "class": "DeviceTrust", "localUsername": "myUser", "localPassword": "myPassword", - "remoteHost": "1.2.3.4", + "remoteHost": "192.0.2.10", "remoteUsername": "yourUser" }; assert.strictEqual(validate(data), false, 'missing remotePassword should not be valid'); diff --git a/test/unit/schema/formatsTests.js b/test/unit/schema/formatsTests.js index 232197a3..cc5e86a6 100644 --- a/test/unit/schema/formatsTests.js +++ b/test/unit/schema/formatsTests.js @@ -23,41 +23,41 @@ describe('formats', () => { describe('f5ip', () => { describe('ipv4', () => { it('should validate standalone address', () => { - assert.strictEqual(formats.f5ip('1.2.3.4'), true); + assert.strictEqual(formats.f5ip('192.0.2.10'), true); }); it('should invalidate invalid address', () => { - assert.strictEqual(formats.f5ip('256.2.3.4'), false); + assert.strictEqual(formats.f5ip('256.2.3.4'), false); // gitleaks:allow }); it('should validate addresses with valid prefixes', () => { - assert.strictEqual(formats.f5ip('1.2.3.4/32'), true, 'prefix 32 should be valid'); - assert.strictEqual(formats.f5ip('1.2.3.4/24'), true, 'prefix 24 should be valid'); - assert.strictEqual(formats.f5ip('1.2.3.4/16'), true, 'prefix 16 should be valid'); - assert.strictEqual(formats.f5ip('1.2.3.4/8'), true, 'prefix 8 should be valid'); - assert.strictEqual(formats.f5ip('1.2.3.4/0'), true, 'prefix 0 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10/32'), true, 'prefix 32 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10/24'), true, 'prefix 24 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10/16'), true, 'prefix 16 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10/8'), true, 'prefix 8 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10/0'), true, 'prefix 0 should be valid'); }); it('should invalidate addresses with invalid prefixes', () => { - assert.strictEqual(formats.f5ip('1.2.3.4/40'), false, 'prefix 40 should be invalid'); - assert.strictEqual(formats.f5ip('1.2.3.4/33'), false, 'prefix 33 should be invalid'); - assert.strictEqual(formats.f5ip('1.2.3.4/321'), false, 'prefix 321 should be invalid'); - assert.strictEqual(formats.f5ip('1.2.3.4/200'), false, 'prefix 200 should be invalid'); + assert.strictEqual(formats.f5ip('192.0.2.10/40'), false, 'prefix 40 should be invalid'); + assert.strictEqual(formats.f5ip('192.0.2.10/33'), false, 'prefix 33 should be invalid'); + assert.strictEqual(formats.f5ip('192.0.2.10/321'), false, 'prefix 321 should be invalid'); + assert.strictEqual(formats.f5ip('192.0.2.10/200'), false, 'prefix 200 should be invalid'); }); it('should validate addresses with valid route domain', () => { - assert.strictEqual(formats.f5ip('1.2.3.4%0'), true, 'route domain 0 should be valid'); - assert.strictEqual(formats.f5ip('1.2.3.4%65535'), true, 'route domain 65535 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10%0'), true, 'route domain 0 should be valid'); + assert.strictEqual(formats.f5ip('192.0.2.10%65535'), true, 'route domain 65535 should be valid'); }); it('should invalidate addresses with invalid route domain', () => { assert.strictEqual( - formats.f5ip('1.2.3.4%65536'), false, 'route domain 65536 should be invalid' + formats.f5ip('192.0.2.10%65536'), false, 'route domain 65536 should be invalid' ); }); it('should validate address with valid prefix and route domain', () => { - assert.strictEqual(formats.f5ip('1.2.3.4%1/24'), true); + assert.strictEqual(formats.f5ip('192.0.2.10%1/24'), true); }); }); @@ -160,35 +160,35 @@ describe('formats', () => { } it('should validate standalone address', () => { - testValid('1.2.3.4'); + testValid('192.0.2.10'); }); it('should invalidate invalid address', () => { - testInvalid('256.2.3.4', 'address must be valid'); + testInvalid('256.2.3.4', 'address must be valid'); // gitleaks:allow }); it('should validate addresses with valid prefixes', () => { - testValid('1.2.3.4/32', 'prefix 32 should be valid'); - testValid('1.2.3.4/24', 'prefix 24 should be valid'); - testValid('1.2.3.4/16', 'prefix 16 should be valid'); - testValid('1.2.3.4/8', 'prefix 8 should be valid'); - testValid('1.2.3.4/0', 'prefix 0 should be valid'); + testValid('192.0.2.10/32', 'prefix 32 should be valid'); + testValid('192.0.2.10/24', 'prefix 24 should be valid'); + testValid('192.0.2.10/16', 'prefix 16 should be valid'); + testValid('192.0.2.10/8', 'prefix 8 should be valid'); + testValid('192.0.2.10/0', 'prefix 0 should be valid'); }); it('should invalidate addresses with invalid prefix', () => { - testInvalid('1.2.3.4/40', 'prefix 40 should be invalid'); - testInvalid('1.2.3.4/33', 'prefix 33 should be invalid'); - testInvalid('1.2.3.4/321', 'prefix 321 should be invalid'); - testInvalid('1.2.3.4/200', 'prefix 200 should be invalid'); + testInvalid('192.0.2.10/40', 'prefix 40 should be invalid'); + testInvalid('192.0.2.10/33', 'prefix 33 should be invalid'); + testInvalid('192.0.2.10/321', 'prefix 321 should be invalid'); + testInvalid('192.0.2.10/200', 'prefix 200 should be invalid'); }); it('should invalidate addresses with route domain', () => { - testInvalid('1.2.3.4%0', 'should not specify a route domain'); - testInvalid('1.2.3.4%65535', 'should not specify a route domain'); + testInvalid('192.0.2.10%0', 'should not specify a route domain'); + testInvalid('192.0.2.10%65535', 'should not specify a route domain'); }); it('should invalidate address with prefix and route domain', () => { - testInvalid('1.2.3.4%1/24', 'should not specify a route domain'); + testInvalid('192.0.2.10%1/24', 'should not specify a route domain'); }); }); @@ -309,7 +309,7 @@ describe('formats', () => { }); it('should invalidate invalid address with prefix', () => { - testInvalid('256.2.3.4/24', 'address must be valid'); + testInvalid('256.2.3.4/24', 'address must be valid'); // gitleaks:allow }); it('should invalidate address without prefix', () => { @@ -317,27 +317,27 @@ describe('formats', () => { }); it('should validate addresses with valid prefixes', () => { - testValid('1.2.3.4/32', 'prefix 32 should be valid'); - testValid('1.2.3.4/24', 'prefix 24 should be valid'); - testValid('1.2.3.4/16', 'prefix 16 should be valid'); - testValid('1.2.3.4/8', 'prefix 8 should be valid'); - testValid('1.2.3.4/0', 'prefix 0 should be valid'); + testValid('192.0.2.10/32', 'prefix 32 should be valid'); + testValid('192.0.2.10/24', 'prefix 24 should be valid'); + testValid('192.0.2.10/16', 'prefix 16 should be valid'); + testValid('192.0.2.10/8', 'prefix 8 should be valid'); + testValid('192.0.2.10/0', 'prefix 0 should be valid'); }); it('should invalidate addresses with invalid prefixes', () => { - testInvalid('1.2.3.4/40', 'prefix 40 should be invalid'); - testInvalid('1.2.3.4/33', 'prefix 33 should be invalid'); - testInvalid('1.2.3.4/321', 'prefix 321 should be invalid'); - testInvalid('1.2.3.4/200', 'prefix 200 should be invalid'); + testInvalid('192.0.2.10/40', 'prefix 40 should be invalid'); + testInvalid('192.0.2.10/33', 'prefix 33 should be invalid'); + testInvalid('192.0.2.10/321', 'prefix 321 should be invalid'); + testInvalid('192.0.2.10/200', 'prefix 200 should be invalid'); }); it('should invalidate addresses with route domain', () => { - testInvalid('1.2.3.4%0', 'should not specify a route domain'); - testInvalid('1.2.3.4%65535', 'should not specify a route domain'); + testInvalid('192.0.2.10%0', 'should not specify a route domain'); + testInvalid('192.0.2.10%65535', 'should not specify a route domain'); }); it('should invalidate address with prefix and route domain', () => { - testInvalid('1.2.3.4%1/24', 'should not specify a route domain'); + testInvalid('192.0.2.10%1/24', 'should not specify a route domain'); }); }); diff --git a/test/unit/schema/gslbSchemaTests.js b/test/unit/schema/gslbSchemaTests.js index 68c6059a..0dd8e8eb 100644 --- a/test/unit/schema/gslbSchemaTests.js +++ b/test/unit/schema/gslbSchemaTests.js @@ -210,7 +210,7 @@ describe('gslb.schema.json', () => { remark: 'virtual server description one', label: 'virtual server label one', enabled: false, - address: '192.0.10.20', + address: '192.0.2.20', port: 443, addressTranslation: '10.10.0.10', addressTranslationPort: 23, diff --git a/test/unit/schema/networkSchemaTests.js b/test/unit/schema/networkSchemaTests.js index 399fa0a9..eac904c5 100644 --- a/test/unit/schema/networkSchemaTests.js +++ b/test/unit/schema/networkSchemaTests.js @@ -54,10 +54,10 @@ describe('network.schema.json', () => { class: 'DNS_Resolver', forwardZones: [ { - name: 'google.public-dns', + name: 'test.public-dns', nameservers: [ - '8.8.8.8:53', - '8.8.4.4:53' + '192.0.2.10:53', + '192.0.2.20:53' ] } ], @@ -80,8 +80,8 @@ describe('network.schema.json', () => { { name: '.', nameservers: [ - '8.8.8.8:53', - '8.8.4.4:53' + '192.0.2.10:53', + '192.0.2.20:53' ] } ] @@ -105,10 +105,10 @@ describe('network.schema.json', () => { class: 'DNS_Resolver', forwardZones: [ { - name: 'google.public.dns', + name: 'test.public.dns', nameservers: [ - '8.8.8.8:53', - '8.8.4.4:53' + '192.0.2.10:53', + '192.0.2.20:53' ], rogueProperty: true } @@ -124,8 +124,8 @@ describe('network.schema.json', () => { forwardZones: [ { nameservers: [ - '8.8.8.8:53', - '8.8.4.4:53' + '192.0.2.10:53', + '192.0.2.20:53' ] } ] @@ -337,7 +337,7 @@ describe('network.schema.json', () => { it('should validate network data with IPv4 address', () => { const data = { class: 'SelfIp', - address: '1.2.3.4/32', + address: '192.0.2.10/32', vlan: 'myVlan', allowService: 'all', trafficGroup: 'traffic-group-1', @@ -361,7 +361,7 @@ describe('network.schema.json', () => { it('should validate network data with allow service:port', () => { const data = { class: 'SelfIp', - address: '1.2.3.4/32', + address: '192.0.2.10/32', vlan: 'myVlan', allowService: ['foo:1234'], trafficGroup: 'traffic-group-1' @@ -372,7 +372,7 @@ describe('network.schema.json', () => { it('should validate network data with allow service:port and default', () => { const data = { class: 'SelfIp', - address: '1.2.3.4/32', + address: '192.0.2.10/32', vlan: 'myVlan', allowService: ['foo:1234', 'default'], trafficGroup: 'traffic-group-1' @@ -394,7 +394,7 @@ describe('network.schema.json', () => { it('should invalidate self ips with no vlan', () => { const data = { class: 'SelfIp', - address: '1.2.3.4' + address: '192.0.2.10' }; assert.strictEqual(validate(data), false, 'missing self ip vlan should not be valid'); assert(getErrorString().includes('"missingProperty": "vlan"')); @@ -413,7 +413,7 @@ describe('network.schema.json', () => { it('should invalidate IPv4 selfIp with out of range CIDR', () => { const data = { class: 'SelfIp', - address: '1.2.3.4/33', + address: '192.0.2.10/33', vlan: 'myVlan' }; assert.strictEqual(validate(data), false, 'missing self ip vlan should not be valid'); @@ -433,7 +433,7 @@ describe('network.schema.json', () => { it('should invalidate bad traffic group', () => { const data = { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.10', vlan: 'myVlan', trafficGroup: 'traffic-group-foo' }; @@ -445,7 +445,7 @@ describe('network.schema.json', () => { it('should invalidate single words that are not all, default, or none', () => { const data = { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.10', vlan: 'myVlan', allowService: 'foo' }; @@ -456,7 +456,7 @@ describe('network.schema.json', () => { it('should invalidate service:port that is not in an array', () => { const data = { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.10', vlan: 'myVlan', allowService: 'tcp:1234' }; @@ -471,7 +471,7 @@ describe('network.schema.json', () => { it('should invalidate invalid port values', () => { const data = { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.10', vlan: 'myVlan', allowService: ['foo:bar'] }; @@ -482,7 +482,7 @@ describe('network.schema.json', () => { it('should invalidate misspelled default in port array', () => { const data = { class: 'SelfIp', - address: '1.2.3.4', + address: '192.0.2.10', vlan: 'myVlan', allowService: ['foo:1234', 'defalt'] }; @@ -498,7 +498,7 @@ describe('network.schema.json', () => { it('should validate route data', () => { const data = { class: 'Route', - gw: '1.2.3.4', + gw: '192.0.2.10', network: 'default', mtu: 1234 }; @@ -518,7 +518,7 @@ describe('network.schema.json', () => { it('should allow route domains', () => { const data = { class: 'Route', - gw: '1.2.3.4%10/24', + gw: '192.0.2.10%10/24', network: 'default', mtu: 1234 }; @@ -528,7 +528,7 @@ describe('network.schema.json', () => { it('should validate route data to LOCAL_ONLY', () => { const data = { class: 'Route', - gw: '1.2.3.4', + gw: '192.0.2.10', network: 'default', mtu: 1234, localOnly: true @@ -541,7 +541,7 @@ describe('network.schema.json', () => { it('should invalidate additional properties', () => { const data = { class: 'Route', - gw: '1.2.3.4', + gw: '192.0.2.10', foo: 'bar' }; assert.strictEqual(validate(data), false, 'additional properties should not be valid'); @@ -567,7 +567,7 @@ describe('network.schema.json', () => { it('should invalidate route data with bad network', () => { const data = { class: 'Route', - gw: '1.2.3.4', + gw: '192.0.2.10', network: 'foo' }; assert.strictEqual(validate(data), false, 'bad gateway IP address should not be valid'); diff --git a/test/unit/schema/remoteSchemaTests.js b/test/unit/schema/remoteSchemaTests.js index 657683ea..df00e1dc 100644 --- a/test/unit/schema/remoteSchemaTests.js +++ b/test/unit/schema/remoteSchemaTests.js @@ -102,7 +102,7 @@ describe('remote.schema.json', () => { it('should validate targetHost', () => { const data = { "class": "DO", - "targetHost": "1.2.3.4", + "targetHost": "192.0.2.10", "declaration": { "schemaVersion": "1.0.0", "class": "Device" diff --git a/test/unit/schema/systemSchemaTests.js b/test/unit/schema/systemSchemaTests.js index 19401873..b2569339 100644 --- a/test/unit/schema/systemSchemaTests.js +++ b/test/unit/schema/systemSchemaTests.js @@ -48,7 +48,7 @@ describe('system.schema.json', () => { const data = { "class": "DNS", "nameServers": [ - "1.2.3.4", + "192.0.2.10", "FE80:0000:0000:0000:0202:B3FF:FE1E:8329" ], "search": [ @@ -190,7 +190,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "myPool", @@ -209,7 +209,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPasswordUri": "https://my.passwordscom/bigIq", "licensePool": "myPool", @@ -223,7 +223,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "myPool", @@ -243,7 +243,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "myPool", @@ -261,7 +261,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "myPool", @@ -279,7 +279,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "myPool", @@ -298,7 +298,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "reachable": true @@ -310,7 +310,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "reachable": false @@ -322,7 +322,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "reachable": false, @@ -335,12 +335,12 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "reachable": false, "revokeFrom": { - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "barbar" @@ -355,7 +355,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "bigIqPasswordUri": "https://my.passwordscom/bigIq", @@ -375,7 +375,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "bigIqPasswordUri": "https://my.passwordscom/bigIq", @@ -393,7 +393,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "licensePool": "myPool", @@ -418,7 +418,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "bigIqPasswordUri": "https://my.passwordscom/bigIq", @@ -436,12 +436,12 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo", "reachable": false, "revokeFrom": { - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "bigIqPassword": "foofoo" } @@ -458,7 +458,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqPassword": "foofoo", "licensePool": "barbar", "reachable": false, @@ -479,7 +479,7 @@ describe('system.schema.json', () => { const data = { "class": "License", "licenseType": "licensePool", - "bigIqHost": "1.2.3.4", + "bigIqHost": "192.0.2.10", "bigIqUsername": "admin", "licensePool": "barbar", "reachable": false, @@ -518,7 +518,7 @@ describe('system.schema.json', () => { const data = { "class": "NTP", "servers": [ - "1.2.3.4", + "192.0.2.10", "FE80:0000:0000:0000:0202:B3FF:FE1E:8329", "0.pool.ntp.org" ], @@ -687,7 +687,7 @@ describe('system.schema.json', () => { it('should validate minimal SnmpTrapDestination', () => { const data = { "class": "SnmpTrapDestination", - "destination": "1.2.3.4", + "destination": "192.0.2.10", "community": "myCommunity" }; assert.ok(validate(data), getErrorString(validate)); @@ -882,7 +882,7 @@ describe('system.schema.json', () => { it('should validate management ip with address and netmask', () => { const data = { class: 'ManagementIp', - address: '1.2.3.4/24' + address: '192.0.2.10/24' }; assert.ok(validate(data), getErrorString(validate)); }); @@ -891,7 +891,7 @@ describe('system.schema.json', () => { describe('invalid', () => { const data = { class: 'ManagementIp', - address: '1.2.3.4' + address: '192.0.2.10' }; assert.strictEqual(validate(data), false, 'Should not accept IP without prefix'); assert(getErrorString().includes('ipWithRequiredPrefix')); @@ -904,8 +904,8 @@ describe('system.schema.json', () => { const data = { class: 'ManagementRoute', remark: 'Example description', - gw: '1.2.3.4', - network: '4.3.2.1', + gw: '192.0.2.0', + network: '192.0.2.50', mtu: 1000 }; assert.ok(validate(data), getErrorString(validate)); @@ -930,7 +930,7 @@ describe('system.schema.json', () => { it('should validate with a non-default network and a type but no gw', () => { const data = { class: 'ManagementRoute', - network: '4.3.2.1/8', + network: '192.0.2.10/8', type: 'interface' }; assert.ok(validate(data), getErrorString(validate)); @@ -950,7 +950,7 @@ describe('system.schema.json', () => { it('should invalidate when only non-default network', () => { const data = { class: 'ManagementRoute', - network: '9.9.9.9' + network: '192.0.2.10' }; assert.strictEqual(validate(data), false, 'Missing required property gw'); assert(getErrorString().includes('should have required property \'.gw\'')); @@ -979,7 +979,7 @@ describe('system.schema.json', () => { it('should invalidate incorrect gw format', () => { const data = { class: 'ManagementRoute', - network: '100.100.200.200', + network: '192.0.2.10', gw: 'theGateway' }; assert.strictEqual(validate(data), false, 'must be ipv4 or ipv6'); From 9dbaa1e94233716842f540180294ca1762995d8a Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Wed, 1 Mar 2023 10:00:16 -0800 Subject: [PATCH 08/22] Update develop with LTS release information --- CHANGELOG.md | 10 ++++++++++ contributing/process_release.md | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9e6318c..f686fe11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,16 @@ Changes to this project are documented in this file. More detail and links can b ### Removed +## 1.36.1 +### Added + +### Fixed + +### Changed +- Promoted to LTS + +### Removed + ## 1.36.0 ### Added diff --git a/contributing/process_release.md b/contributing/process_release.md index e49a0f21..fece28ad 100644 --- a/contributing/process_release.md +++ b/contributing/process_release.md @@ -30,6 +30,30 @@ * Tag the appropriate branch with the updated version (e.g. v1.34.0-4). The tag will kick off a DO pipeline with integration tests. * If the DO pipeline is successful, that pipeline will upload the build artifacts to Artifactory and send the release email to the `f5-declarative-onboarding` distribution list. +## Process for LTS release +* Using the GitLab GUI, create a branch from the release branch that we are declaring LTS. Bump the patch version by 1. For example, if we are declaring 1.36.0 to be LTS, then create a 1.36.1 branch from 1.36.0. +* On your local machine, fetch and checkout the LTS branch. +* Create a new local branch from the LTS branch (e.g. "prepare-1.36.1-release"). +* Update the patch version in `package.json` and `package-lock.json`. The release number of the new version should start at 0 (e.g. 1.36.0-4 would become 1.36.1-0). +* Add a new CHANGELOG section that looks like + ``` + ## 1.36.1 + ### Added + + ### Fixed + + ### Changed + - Promoted to LTS + + ### Removed + ``` +* Create an MR for these changes. Important: Remember to set the branch you are merging into to the LTS branch. +* Go to the atg-build project in GitLab + * Edit the DO schedule to set the `gitBranch` variable to the LTS branch. + * Run the DO schedule. + * After the build completes, edit the DO schedule to set the `gitBranch` variable back to develop. +* Merge the release branch CHANGELOG into develop and create an MR for this. + ## Process for release ### Begin process release at the very beginning of the first sprint of a new release, by performing the following actions: * Follow the instructions for setting up a release candidate (see [Process for release candidates](#Process-for-release-candidates)). From 7e361a5a08dd9c0ce9cf647c69b2ab5bc4bc4a0e Mon Sep 17 00:00:00 2001 From: Alex Leathers Date: Wed, 1 Mar 2023 15:24:50 -0800 Subject: [PATCH 09/22] Resolve AUTOTOOL-3495 "Support security reporting settings" --- CHANGELOG.md | 1 + examples/securityAnalytics.json | 42 +++ src/lib/ajvValidator.js | 2 + src/lib/configItems.json | 66 +++++ src/lib/declarationHandler.js | 2 + src/lib/inspectHandler.js | 5 + src/lib/parserUtil.js | 9 + src/lib/securityHandler.js | 75 ++++++ src/lib/sharedConstants.js | 1 + src/schema/latest/base.schema.json | 6 +- src/schema/latest/security.schema.json | 162 ++++++++++++ .../property/propertiesSecurityAnalytics.js | 248 ++++++++++++++++++ test/unit/lib/inspectHandlerTests.js | 71 ++++- test/unit/lib/parserUtilTests.js | 51 ++++ test/unit/lib/securityHandlerTests.js | 152 +++++++++++ test/unit/schema/baseSchemaTests.js | 2 + test/unit/schema/doSchemaTests.js | 2 + test/unit/schema/remoteSchemaTests.js | 2 + test/unit/schema/securitySchemaTests.js | 106 ++++++++ 19 files changed, 1002 insertions(+), 3 deletions(-) create mode 100644 examples/securityAnalytics.json create mode 100644 src/lib/securityHandler.js create mode 100644 src/schema/latest/security.schema.json create mode 100644 test/integration/property/propertiesSecurityAnalytics.js create mode 100644 test/unit/lib/securityHandlerTests.js create mode 100644 test/unit/schema/securitySchemaTests.js diff --git a/CHANGELOG.md b/CHANGELOG.md index f686fe11..7f11345e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Changes to this project are documented in this file. More detail and links can b ## 1.37.0 ### Added +- AUTOTOOL-3495: ([Github Issue 304](https://github.com/F5Networks/f5-declarative-onboarding/issues/304)): Support Security Reporting Settings ### Fixed diff --git a/examples/securityAnalytics.json b/examples/securityAnalytics.json new file mode 100644 index 00000000..204b1d97 --- /dev/null +++ b/examples/securityAnalytics.json @@ -0,0 +1,42 @@ +{ + "async": true, + "schemaVersion": "1.37.0", + "class": "Device", + "Common": { + "class": "Tenant", + "currentSecurityAnalytics": { + "class": "SecurityAnalytics", + "aclRules": { + "collectClientIpEnabled": true, + "collectClientPortEnabled": false, + "collectDestinationIpEnabled": true, + "collectDestinationPortEnabled": true, + "collectServerSideStatsEnabled": false + }, + "collectAllDosStatsEnabled": false, + "collectedStatsExternalLoggingEnabled": false, + "collectedStatsInternalLoggingEnabled": false, + "dns": { + "collectClientIpEnabled": true, + "collectDestinationIpEnabled": true + }, + "collectDnsStatsEnabled": true, + "dosL2L4": { + "collectClientIpEnabled": true, + "collectDestinationGeoEnabled": true + }, + "collectDosL3StatsEnabled": true, + "collectFirewallAclStatsEnabled": true, + "collectFirewallDropsStatsEnabled": true, + "collectIpReputationStatsEnabled": true, + "l3L4Errors": { + "collectClientIpEnabled": true, + "collectDestinationIpEnabled": true + }, + "collectSipStatsEnabled": true, + "collectStaleRulesEnabled": true, + "publisher": "none", + "smtpConfig": "none" + } + } +} diff --git a/src/lib/ajvValidator.js b/src/lib/ajvValidator.js index 0584f99a..0b65c009 100644 --- a/src/lib/ajvValidator.js +++ b/src/lib/ajvValidator.js @@ -28,6 +28,7 @@ const analyticsSchema = require('../schema/latest/analytics.schema.json'); const authSchema = require('../schema/latest/auth.schema.json'); const definitionsSchema = require('../schema/latest/definitions.schema.json'); const gslbSchema = require('../schema/latest/gslb.schema.json'); +const securitySchema = require('../schema/latest/security.schema.json'); const customFormats = require('../schema/latest/formats'); @@ -54,6 +55,7 @@ class AjvValidator { .addSchema(analyticsSchema) .addSchema(authSchema) .addSchema(gslbSchema) + .addSchema(securitySchema) .addSchema(baseSchema) .addSchema(remoteSchema) .compile(doSchema); diff --git a/src/lib/configItems.json b/src/lib/configItems.json index 4087c6b2..f41a670d 100644 --- a/src/lib/configItems.json +++ b/src/lib/configItems.json @@ -1204,6 +1204,72 @@ ], "nameless": true }, + { + "path": "/tm/security/analytics/settings", + "schemaClass": "SecurityAnalytics", + "requiredModules": [{ "module": "afm" }], + "properties": [ + { + "id": "aclRules", + "transform": [ + { "id": "collectClientIp", "newId": "collectClientIpEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectClientPort", "newId": "collectClientPortEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectDestIp", "newId": "collectDestinationIpEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectDestPort", "newId": "collectDestinationPortEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectServerSideStats", "newId": "collectServerSideStatsEnabled", "truth": "enabled", "falsehood": "disabled" } + ] + }, + { "id": "collectAllDosStatistic", "newId": "collectAllDosStatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectedStatsExternalLogging", "newId": "collectedStatsExternalLoggingEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectedStatsInternalLogging", "newId": "collectedStatsInternalLoggingEnabled", "truth": "enabled", "falsehood": "disabled" }, + { + "id": "dns", + "transform": [ + { "id": "collectClientIp", "newId": "collectClientIpEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectDestinationIp", "newId": "collectDestinationIpEnabled", "truth": "enabled", "falsehood": "disabled" } + ] + }, + { "id": "dnsCollectStats", "newId": "collectDnsStatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { + "id": "dosL2L4", + "transform": [ + { "id": "collectClientIp", "newId": "collectClientIpEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectDestGeo", "newId": "collectDestinationGeoEnabled", "truth": "enabled", "falsehood": "disabled" } + ] + }, + { "id": "dosl3CollectStats", "newId": "collectDosL3StatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "fwAclCollectStats", "newId": "collectFirewallAclStatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "fwDropsCollectStats", "newId": "collectFirewallDropsStatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "ipReputationCollectStats", "newId": "collectIpReputationStatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { + "id": "l3L4Errors", + "transform": [ + { "id": "collectClientIp", "newId": "collectClientIpEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "collectDestIp", "newId": "collectDestinationIpEnabled", "truth": "enabled", "falsehood": "disabled" } + ] + }, + { "id": "publisher", "defaultWhenOmitted": "none" }, + { "id": "sipCollectStats", "newId": "collectSipStatsEnabled", "truth": "enabled", "falsehood": "disabled" }, + { "id": "smtpConfig", "defaultWhenOmitted": "none" }, + { + "id": "staleRules", + "newId": "collectStaleRulesEnabled", + "transformBooleanOrStringToObject": { + "itemKey": "collectStaleRulesEnabled", + "toKey": "collect" + }, + "transform": [ + { "id": "collect", "truth": "enabled", "falsehood": "disabled" } + ] + } + ], + "nameless": true, + "declaration": { + "customFunctions": [ + { "id": "remapStaleRules" } + ] + } + }, { "schemaClass": "License", "nameless": true, diff --git a/src/lib/declarationHandler.js b/src/lib/declarationHandler.js index 92b78670..50b3a14b 100644 --- a/src/lib/declarationHandler.js +++ b/src/lib/declarationHandler.js @@ -33,6 +33,7 @@ const ProvisionHandler = require('./provisionHandler'); const DeprovisionHandler = require('./deprovisionHandler'); const AuthHandler = require('./authHandler'); const GSLBHandler = require('./gslbHandler'); +const SecurityHandler = require('./securityHandler'); const TraceManager = require('./traceManager'); const RoutingAccessListValidator = require('./routingAccessListValidator'); const configItems = require('./configItems.json'); @@ -1286,6 +1287,7 @@ function makeUpdates(declaration, updateDeclaration, deleteDeclaration) { [DscHandler, updateDeclaration], [AnalyticsHandler, updateDeclaration], [GSLBHandler, updateDeclaration], + [SecurityHandler, updateDeclaration], [DeleteHandler, deleteDeclaration], [DeprovisionHandler, updateDeclaration] ]; diff --git a/src/lib/inspectHandler.js b/src/lib/inspectHandler.js index c2591429..dec104e4 100644 --- a/src/lib/inspectHandler.js +++ b/src/lib/inspectHandler.js @@ -424,6 +424,11 @@ const customFunctions = { }); return [configKey, configObject]; }, + // SecurityAnalytics + remapStaleRules: (configKey, configObject) => { + configObject.collectStaleRulesEnabled = configObject.collectStaleRulesEnabled.collect; + return [configKey, configObject]; + }, // Some items with schemaMerge are skipped in the general handling but // should be processed by processItem anyway remapItemWithSchemaMerge: (configKey, configObject) => [configKey, configObject] diff --git a/src/lib/parserUtil.js b/src/lib/parserUtil.js index 0f09f823..32cc2c23 100644 --- a/src/lib/parserUtil.js +++ b/src/lib/parserUtil.js @@ -172,6 +172,15 @@ function updateProperty(property, itemToUpdate, propertyName, declarationItem, i let dottedId = [property.id, trans.id].join('.'); let dottedNewId = [property.id, trans.newId || trans.id].join('.'); + if (typeof property.transformBooleanOrStringToObject !== 'undefined' + && typeof itemToUpdate[property.transformBooleanOrStringToObject.itemKey] !== 'undefined') { + const toKey = property.transformBooleanOrStringToObject.toKey; + itemToUpdate[property.id] = { + [toKey]: itemToUpdate[property.transformBooleanOrStringToObject.itemKey] + }; + delete itemToUpdate[property.transformBooleanOrStringToObject.itemKey]; + } + // In some cases, the declaration only supports one item of an array // and moves it up one or more levels of what is a named property in mcp. // For example, GSLBServer devices.addresses[0].translation in mcp is diff --git a/src/lib/securityHandler.js b/src/lib/securityHandler.js new file mode 100644 index 00000000..4583d230 --- /dev/null +++ b/src/lib/securityHandler.js @@ -0,0 +1,75 @@ +/** + * Copyright 2023 F5 Networks, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const Logger = require('./logger'); +const PATHS = require('./sharedConstants').PATHS; + +/** + * Handles security parts of a declaration. + * + * @class + */ +class SecurityHandler { + /** + * Constructor + * + * @param {Object} declaration - Parsed declaration. + * @param {Object} bigIp - BigIp object. + * @param {EventEmitter} - DO event emitter. + * @param {State} - The doState. + */ + constructor(declaration, bigIp, eventEmitter, state) { + this.declaration = declaration; + this.bigIp = bigIp; + this.eventEmitter = eventEmitter; + this.state = state; + this.logger = new Logger(module, (state || {}).id); + } + + /** + * Starts processing. + * + * @returns {Promise} A promise which is resolved when processing is complete + * or rejected if an error occurs. + */ + process() { + this.logger.fine('Processing security declaration.'); + + return Promise.resolve() + .then(() => { + this.logger.fine('Checking SecurityAnalytics'); + return handleSecurityAnalytics.call(this); + }) + .catch((err) => { + this.logger.severe(`Error processing security declaration: ${err.message}`); + return Promise.reject(err); + }); + } +} + +function handleSecurityAnalytics() { + if (this.declaration.Common.SecurityAnalytics) { + return this.bigIp.modify( + PATHS.SecurityAnalytics, + this.declaration.Common.SecurityAnalytics + ); + } + return Promise.resolve(); +} + +module.exports = SecurityHandler; diff --git a/src/lib/sharedConstants.js b/src/lib/sharedConstants.js index 2dba6d7e..c33bd7a9 100644 --- a/src/lib/sharedConstants.js +++ b/src/lib/sharedConstants.js @@ -70,6 +70,7 @@ module.exports = { RoutingAsPath: '/tm/net/routing/as-path', RoutingBGP: '/tm/net/routing/bgp', RoutingPrefixList: '/tm/net/routing/prefix-list', + SecurityAnalytics: '/tm/security/analytics/settings', SelfIp: '/tm/net/self', SnmpAgent: '/tm/sys/snmp', SnmpCommunity: '/tm/sys/snmp/communities', diff --git a/src/schema/latest/base.schema.json b/src/schema/latest/base.schema.json index f6b9f3c6..f568edfb 100644 --- a/src/schema/latest/base.schema.json +++ b/src/schema/latest/base.schema.json @@ -208,7 +208,8 @@ "GSLBProberPool", "FirewallPolicy", "FirewallAddressList", - "FirewallPortList" + "FirewallPortList", + "SecurityAnalytics" ] } }, @@ -218,7 +219,8 @@ { "$ref": "dsc.schema.json#" }, { "$ref": "analytics.schema.json#" }, { "$ref": "auth.schema.json#" }, - { "$ref": "gslb.schema.json#" } + { "$ref": "gslb.schema.json#" }, + { "$ref": "security.schema.json#" } ] }, "default": { diff --git a/src/schema/latest/security.schema.json b/src/schema/latest/security.schema.json new file mode 100644 index 00000000..bb610f79 --- /dev/null +++ b/src/schema/latest/security.schema.json @@ -0,0 +1,162 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/security.schema.json", + "title": "F5 BIG-IP Declarative Onboarding security declaration", + "description": "Security properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SecurityAnalytics" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains SecurityAnalytics configuration.", + "type": "string", + "const": "SecurityAnalytics" + }, + "aclRules": { + "description": "Firewall (ACL) security statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": " Specifies whether source/client IP address should be collected for ACL rule matching.", + "type": "boolean", + "default": true + }, + "collectClientPortEnabled": { + "description": "Specifies whether source/client port should be collected for ACL rule matching.", + "type": "boolean", + "default": false + }, + "collectDestinationIpEnabled": { + "description": "Specifies whether the destination IP address should be collected for ACL rule matching.", + "type": "boolean", + "default": true + }, + "collectDestinationPortEnabled": { + "description": "Specifies whether the destination port should be collected for ACL rule matching.", + "type": "boolean", + "default": true + }, + "collectServerSideStatsEnabled": { + "description": "Specifies whether server side statistics (source address translation information, self IP address and pool member address) should be collected for ACL rule matching.", + "type": "boolean", + "default": false + } + } + }, + "collectAllDosStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of all DoS statistics.", + "type": "boolean", + "default": false + }, + "collectedStatsExternalLoggingEnabled": { + "description": "Specifies whether to enable or disable external logging of collected statistics.", + "type": "boolean", + "default": false + }, + "collectedStatsInternalLoggingEnabled": { + "description": "Specifies whether to enable or disable internal logging of collected statistics.", + "type": "boolean", + "default": false + }, + "dns": { + "description": "DNS security statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": "Specifies whether source/client IP address should be collected for DNS security.", + "type": "boolean", + "default": true + }, + "collectDestinationIpEnabled": { + "description": "Specifies whether the destination IP address should be collected for DNS security.", + "type": "boolean", + "default": true + } + } + }, + "collectDnsStatsEnabled": { + "description": "Specifies whether to enable or disable DNS statistics collection.", + "type": "boolean", + "default": true + }, + "dosL2L4": { + "description": "Network DoS statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": "Specifies whether source/client IP address should be collected for network layer's DoS security.", + "type": "boolean", + "default": true + }, + "collectDestinationGeoEnabled": { + "description": "Specifies whether the destination geo should be collected for network layer's DoS security.", + "type": "boolean", + "default": true + } + } + }, + "collectDosL3StatsEnabled": { + "description": "Specifies whether to enable or disable the collection of DoS L3 statistics.", + "type": "boolean", + "default": true + }, + "collectFirewallAclStatsEnabled": { + "description": "Specifies whther to enable or disable the collection of firewall ACL statistics.", + "type": "boolean", + "default": true + }, + "collectFirewallDropsStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of firewall drops statistics.", + "type": "boolean", + "default": true + }, + "collectIpReputationStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of IP reputation statistics.", + "type": "boolean", + "default": true + }, + "l3L4Errors": { + "description": "Firewall errors statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": "Specifies whether source/client IP address should be collected for firewall errors.", + "type": "boolean", + "default": true + }, + "collectDestinationIpEnabled": { + "description": "Specifies whether the destination IP address should be collected for firewall errors.", + "type": "boolean", + "default": true + } + } + }, + "publisher": { + "description": "Specifies the external logging publisher used to send statistical data to one or more destinations.", + "type": "string" + }, + "collectSipStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of SIP statistics.", + "type": "boolean", + "default": true + }, + "smtpConfig": { + "description": "Specifies the default SMTP configuration used for exporting CSV or PDF security analytics reports.", + "type": "string" + }, + "collectStaleRulesEnabled": { + "description": "Specifies whether statistics about all firewall rules should be collected in order to present information regarding rule staleness.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + } + } + ] +} diff --git a/test/integration/property/propertiesSecurityAnalytics.js b/test/integration/property/propertiesSecurityAnalytics.js new file mode 100644 index 00000000..ca869246 --- /dev/null +++ b/test/integration/property/propertiesSecurityAnalytics.js @@ -0,0 +1,248 @@ +/** + * Copyright 2023 F5 Networks, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const { + assertClass, + deProvisionModules, + provisionModules +} = require('./propertiesCommon'); + +// Remove the .skip once AUTOTOOL-3700 has been resolved. +describe.skip('Security Analytics', function testSecurityAnalyticsSuite() { + this.timeout(900000); + + before(() => { + const modules = ['afm']; + return provisionModules(modules); + }); + + after(() => { + const modules = ['afm']; + return deProvisionModules(modules); + }); + + it('All properties', () => { + const properties = [ + { + name: 'aclRules', + inputValue: [ + {}, + { + collectClientIpEnabled: false, + collectClientPortEnabled: true, + collectDestinationIpEnabled: false, + collectDestinationPortEnabled: false, + collectServerSideStatsEnabled: true + }, + {} + ], + expectedValue: [ + { + collectClientIp: 'enabled', + collectClientPort: 'disabled', + collectDestIp: 'enabled', + collectDestPort: 'enabled', + collectServerSideStats: 'disabled' + }, + { + collectClientIp: 'disabled', + collectClientPort: 'enabled', + collectDestIp: 'disabled', + collectDestPort: 'disabled', + collectServerSideStats: 'enabled' + }, + { + collectClientIp: 'enabled', + collectClientPort: 'disabled', + collectDestIp: 'enabled', + collectDestPort: 'enabled', + collectServerSideStats: 'disabled' + } + ] + }, + { + name: 'collectAllDosStatsEnabled', + inputValue: [undefined, true, undefined], + expectedValue: ['disabled', 'enabled', 'disabled'] + }, + { + name: 'collectedStatsExternalLoggingEnabled', + inputValue: [undefined, true, undefined], + expectedValue: ['disabled', 'enabled', 'disabled'] + }, + { + name: 'collectedStatsInternalLoggingEnabled', + inputValue: [undefined, true, undefined], + expectedValue: ['disabled', 'enabled', 'disabled'] + }, + { + name: 'dns', + inputValue: [ + {}, + { + collectClientIpEnabled: false, + collectDestinationIpEnabled: false + }, + {} + ], + expectedValue: [ + { + collectClientIp: 'enabled', + collectDestinationIp: 'enabled' + }, + { + collectClientIp: 'disabled', + collectDestinationIp: 'disabled' + }, + { + collectClientIp: 'enabled', + collectDestinationIp: 'enabled' + } + ] + }, + { + name: 'collectDnsStatsEnabled', + inputValue: [undefined, false, undefined], + expectedValue: ['enabled', 'disabled', 'enabled'] + }, + { + name: 'dosL2L4', + inputValue: [ + {}, + { + collectClientIpEnabled: false, + collectDestinationGeoEnabled: false + }, + {} + ], + expectedValue: [ + { + collectClientIp: 'enabled', + collectDestGeo: 'enabled' + }, + { + collectClientIp: 'disabled', + collectDestGeo: 'disabled' + }, + { + collectClientIp: 'enabled', + collectDestGeo: 'enabled' + } + ] + }, + { + name: 'collectDosL3StatsEnabled', + inputValue: [undefined, false, undefined], + expectedValue: ['enabled', 'disabled', 'enabled'] + }, + { + name: 'collectFirewallAclStatsEnabled', + inputValue: [undefined, false, undefined], + expectedValue: ['enabled', 'disabled', 'enabled'] + }, + { + name: 'collectFirewallDropsStatsEnabled', + inputValue: [undefined, false, undefined], + expectedValue: ['enabled', 'disabled', 'enabled'] + }, + { + name: 'collectIpReputationStatsEnabled', + inputValue: [undefined, false, undefined], + expectedValue: ['enabled', 'disabled', 'enabled'] + }, + { + name: 'l3L4Errors', + inputValue: [ + {}, + { + collectClientIpEnabled: false, + collectDestinationIpEnabled: false + }, + {} + ], + expectedValue: [ + { + collectClientIp: 'enabled', + collectDestIp: 'enabled' + }, + { + collectClientIp: 'disabled', + collectDestIp: 'disabled' + }, + { + collectClientIp: 'enabled', + collectDestIp: 'enabled' + } + ] + }, + { + name: 'collectSipStatsEnabled', + inputValue: [undefined, false, undefined], + expectedValue: ['enabled', 'disabled', 'enabled'] + }, + { + name: 'collectStaleRulesEnabled', + inputValue: [ + undefined, + true, + undefined + ], + expectedValue: [ + { + collect: 'disabled' + }, + { + collect: 'enabled' + }, + { + collect: 'disabled' + } + ], + extractFunction: (o) => o.staleRules + }, + { + name: 'publisher', + inputValue: [undefined, 'default-ipsec-log-publisher', undefined], + expectedValue: [undefined, 'default-ipsec-log-publisher', undefined], + extractFunction: (o) => (o.publisher ? o.publisher.name : undefined) + }, + { + name: 'smtpConfig', + inputValue: [undefined, 'testSmtpServer', undefined], + expectedValue: [undefined, 'testSmtpServer', undefined], + extractFunction: (o) => (o.smtpConfig ? o.smtpConfig.name : undefined) + } + ]; + + const options = { + bigipItems: [ + { + endpoint: '/tm/sys/smtp-server', + data: { + name: 'testSmtpServer', + smtpServerHostName: 'test.hostname', + localHostName: 'local.hostname', + fromAddress: 'example@example.com' + } + } + ] + }; + + return assertClass('SecurityAnalytics', properties, options); + }); +}); diff --git a/test/unit/lib/inspectHandlerTests.js b/test/unit/lib/inspectHandlerTests.js index 9759c0bd..7a07fe0c 100644 --- a/test/unit/lib/inspectHandlerTests.js +++ b/test/unit/lib/inspectHandlerTests.js @@ -1687,7 +1687,42 @@ describe('inspectHandler', () => { ] } } - ] + ], + '/tm/security/analytics/settings': { + aclRules: { + collectClientIp: 'enabled', + collectClientPort: 'disabled', + collectDestIp: 'enabled', + collectDestPort: 'enabled', + collectServerSideStats: 'disabled' + }, + collectAllDosStatistic: 'disabled', + collectedStatsExternalLogging: 'disabled', + collectedStatsInternalLogging: 'disabled', + dns: { + collectClientIp: 'enabled', + collectDestinationIp: 'enabled' + }, + dnsCollectStats: 'enabled', + dosL2L4: { + collectClientIp: 'enabled', + collectDestGeo: 'enabled' + }, + dosl3CollectStats: 'enabled', + fwAclCollectStats: 'enabled', + fwDropsCollectStats: 'enabled', + ipReputationCollectStats: 'enabled', + l3L4Errors: { + collectClientIp: 'enabled', + collectDestIp: 'enabled' + }, + sipCollectStats: 'enabled', + staleRules: { + collect: 'disabled' + }, + publisher: 'none', + smtpConfig: 'none' + } }); // PURPOSE: to be sure that all properties (we are expecting) are here @@ -2643,6 +2678,40 @@ describe('inspectHandler', () => { } } ] + }, + currentSecurityAnalytics: { + class: 'SecurityAnalytics', + aclRules: { + collectClientIpEnabled: true, + collectClientPortEnabled: false, + collectDestinationIpEnabled: true, + collectDestinationPortEnabled: true, + collectServerSideStatsEnabled: false + }, + collectAllDosStatsEnabled: false, + collectedStatsExternalLoggingEnabled: false, + collectedStatsInternalLoggingEnabled: false, + dns: { + collectClientIpEnabled: true, + collectDestinationIpEnabled: true + }, + collectDnsStatsEnabled: true, + dosL2L4: { + collectClientIpEnabled: true, + collectDestinationGeoEnabled: true + }, + collectDosL3StatsEnabled: true, + collectFirewallAclStatsEnabled: true, + collectFirewallDropsStatsEnabled: true, + collectIpReputationStatsEnabled: true, + l3L4Errors: { + collectClientIpEnabled: true, + collectDestinationIpEnabled: true + }, + collectSipStatsEnabled: true, + collectStaleRulesEnabled: false, + publisher: 'none', + smtpConfig: 'none' } } } diff --git a/test/unit/lib/parserUtilTests.js b/test/unit/lib/parserUtilTests.js index 4480b113..87d84426 100644 --- a/test/unit/lib/parserUtilTests.js +++ b/test/unit/lib/parserUtilTests.js @@ -738,5 +738,56 @@ describe('parserUtil', () => { } ); }); + + it('should handle converting a boolean or string to an object', () => { + const configItems = [ + { + schemaClass: 'MySchemaClass', + properties: [ + { + id: 'staleRules', + newId: 'collectStaleRulesEnabled', + transformBooleanOrStringToObject: { + itemKey: 'collectStaleRulesEnabled', + toKey: 'collect' + }, + transform: [ + { id: 'collect', truth: 'enabled', falsehood: 'disabled' } + ] + }, + { + id: 'testProp', + transformBooleanOrStringToObject: { + itemKey: 'testStringProp', + toKey: 'objectKey' + }, + transform: [ + { id: 'objectKey' } + ] + } + ] + } + ]; + + const declarationItem = { + class: 'MySchemaClass', + collectStaleRulesEnabled: true, + testStringProp: 'string' + }; + + const updated = parserUtil.updateIds(configItems, 'MySchemaClass', declarationItem); + assert.deepStrictEqual( + updated, + { + class: 'MySchemaClass', + staleRules: { + collect: 'enabled' + }, + testProp: { + objectKey: 'string' + } + } + ); + }); }); }); diff --git a/test/unit/lib/securityHandlerTests.js b/test/unit/lib/securityHandlerTests.js new file mode 100644 index 00000000..9d736bd7 --- /dev/null +++ b/test/unit/lib/securityHandlerTests.js @@ -0,0 +1,152 @@ +/** + * Copyright 2023 F5 Networks, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const chai = require('chai'); +const chaiAsPromised = require('chai-as-promised'); + +chai.use(chaiAsPromised); +const assert = chai.assert; +const sinon = require('sinon'); +const PATHS = require('../../../src/lib/sharedConstants').PATHS; +const Logger = require('../../../src/lib/logger'); + +const SecurityHandler = require('../../../src/lib/securityHandler'); + +describe('SecurityHandler', () => { + let dataSent; + let bigIpMock; + + beforeEach(() => { + dataSent = []; + bigIpMock = { + modify(path, data) { + if (!dataSent[path]) { + dataSent[path] = []; + } + dataSent[path].push(data); + return Promise.resolve(); + } + }; + }); + + it('should reject and log error when there is an error processing security options', () => { + const severeLogSpy = sinon.spy(Logger.prototype, 'severe'); + bigIpMock.modify = () => Promise.reject(new Error('Error!')); + const declaration = { + Common: { + SecurityAnalytics: {} + } + }; + const securityHandler = new SecurityHandler(declaration, bigIpMock); + return assert.isRejected(securityHandler.process(), /Error!/) + .then(() => { + assert.strictEqual(severeLogSpy.args[0][0], 'Error processing security declaration: Error!'); + assert.strictEqual(severeLogSpy.thisValues[0].metadata, 'securityHandler.js'); + }); + }); + + describe('SecurityAnalytics', () => { + it('should handle fully specified SecurityAnalytics', () => { + const declaration = { + Common: { + SecurityAnalytics: { + aclRules: { + collectClientIp: 'enabled', + collectClientPort: 'disabled', + collectDestIp: 'enabled', + collectDestPort: 'enabled', + collectServerSideStats: 'disabled' + }, + collectAllDosStatistic: 'disabled', + collectedStatsExternalLogging: 'disabled', + collectedStatsInternalLogging: 'disabled', + dns: { + collectClientIp: 'enabled', + collectDestinationIp: 'enabled' + }, + dnsCollectStats: 'enabled', + dosL2L4: { + collectClientIp: 'enabled', + collectDestGeo: 'enabled' + }, + dosL3CollectStats: 'enabled', + fwAclCollectStats: 'enabled', + fwDropsCollectStats: 'enabled', + ipReputationCollectStats: 'enabled', + l3L4Errors: { + collectClientIp: 'enabled', + collectDestIp: 'enabled' + }, + sipCollectStats: 'enabled', + staleRules: { + collect: 'disabled' + }, + publisher: 'none', + smtpConfig: 'none' + } + } + }; + + const securityHandler = new SecurityHandler(declaration, bigIpMock); + return securityHandler.process() + .then(() => { + const securityAnalyticsData = dataSent[PATHS.SecurityAnalytics]; + assert.deepStrictEqual( + securityAnalyticsData, + [ + { + aclRules: { + collectClientIp: 'enabled', + collectClientPort: 'disabled', + collectDestIp: 'enabled', + collectDestPort: 'enabled', + collectServerSideStats: 'disabled' + }, + collectAllDosStatistic: 'disabled', + collectedStatsExternalLogging: 'disabled', + collectedStatsInternalLogging: 'disabled', + dns: { + collectClientIp: 'enabled', + collectDestinationIp: 'enabled' + }, + dnsCollectStats: 'enabled', + dosL2L4: { + collectClientIp: 'enabled', + collectDestGeo: 'enabled' + }, + dosL3CollectStats: 'enabled', + fwAclCollectStats: 'enabled', + fwDropsCollectStats: 'enabled', + ipReputationCollectStats: 'enabled', + l3L4Errors: { + collectClientIp: 'enabled', + collectDestIp: 'enabled' + }, + sipCollectStats: 'enabled', + staleRules: { + collect: 'disabled' + }, + publisher: 'none', + smtpConfig: 'none' + } + ] + ); + }); + }); + }); +}); diff --git a/test/unit/schema/baseSchemaTests.js b/test/unit/schema/baseSchemaTests.js index 3a936e10..fd569eed 100644 --- a/test/unit/schema/baseSchemaTests.js +++ b/test/unit/schema/baseSchemaTests.js @@ -28,6 +28,7 @@ const authSchema = require('../../../src/schema/latest/auth.schema.json'); const customFormats = require('../../../src/schema/latest/formats'); const defSchema = require('../../../src/schema/latest/definitions.schema.json'); const gslbSchema = require('../../../src/schema/latest/gslb.schema.json'); +const securitySchema = require('../../../src/schema/latest/security.schema.json'); const ajv = new Ajv( { @@ -50,6 +51,7 @@ const validate = ajv .addSchema(analyticsSchema) .addSchema(authSchema) .addSchema(gslbSchema) + .addSchema(securitySchema) .compile(baseSchema); /* eslint-disable quotes, quote-props */ diff --git a/test/unit/schema/doSchemaTests.js b/test/unit/schema/doSchemaTests.js index 0ea4323b..fe2bad67 100644 --- a/test/unit/schema/doSchemaTests.js +++ b/test/unit/schema/doSchemaTests.js @@ -30,6 +30,7 @@ const authSchema = require('../../../src/schema/latest/auth.schema.json'); const customFormats = require('../../../src/schema/latest/formats'); const defSchema = require('../../../src/schema/latest/definitions.schema.json'); const gslbSchema = require('../../../src/schema/latest/gslb.schema.json'); +const securitySchema = require('../../../src/schema/latest/security.schema.json'); const ajv = new Ajv( { @@ -52,6 +53,7 @@ const validate = ajv .addSchema(analyticsSchema) .addSchema(authSchema) .addSchema(gslbSchema) + .addSchema(securitySchema) .addSchema(baseSchema) .addSchema(remoteSchema) .compile(doSchema); diff --git a/test/unit/schema/remoteSchemaTests.js b/test/unit/schema/remoteSchemaTests.js index df00e1dc..6af3dd15 100644 --- a/test/unit/schema/remoteSchemaTests.js +++ b/test/unit/schema/remoteSchemaTests.js @@ -29,6 +29,7 @@ const requestSchema = require('../../../src/schema/latest/remote.schema.json'); const customFormats = require('../../../src/schema/latest/formats'); const defSchema = require('../../../src/schema/latest/definitions.schema.json'); const gslbSchema = require('../../../src/schema/latest/gslb.schema.json'); +const securitySchema = require('../../../src/schema/latest/security.schema.json'); const ajv = new Ajv( { @@ -51,6 +52,7 @@ const validate = ajv .addSchema(analyticsSchema) .addSchema(authSchema) .addSchema(gslbSchema) + .addSchema(securitySchema) .addSchema(baseSchema) .compile(requestSchema); diff --git a/test/unit/schema/securitySchemaTests.js b/test/unit/schema/securitySchemaTests.js new file mode 100644 index 00000000..5578de8f --- /dev/null +++ b/test/unit/schema/securitySchemaTests.js @@ -0,0 +1,106 @@ +/** + * Copyright 2023 F5 Networks, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const assert = require('assert'); +const Ajv = require('ajv'); + +const ajv = new Ajv( + { + allErrors: false, + useDefaults: true, + coerceTypes: true, + extendRefs: 'fail' + } +); +const defSchema = require('../../../src/schema/latest/definitions.schema.json'); +const securitySchema = require('../../../src/schema/latest/security.schema.json'); +const customFormats = require('../../../src/schema/latest/formats'); + +Object.keys(customFormats).forEach((customFormat) => { + ajv.addFormat(customFormat, customFormats[customFormat]); +}); + +const validate = ajv + .addSchema(defSchema) + .compile(securitySchema); + +describe('security.schema.json', () => { + describe('SecurityAnalytics', () => { + describe('valid', () => { + it('should validate minimal data', () => { + const data = { + class: 'SecurityAnalytics' + }; + assert.ok(validate(data), getErrorString(validate)); + }); + + it('should validate with all properties', () => { + const data = { + class: 'SecurityAnalytics', + aclRules: { + collectClientIpEnabled: true, + collectClientPortEnabled: false, + collectDestinationIpEnabled: true, + collectDestinationPortEnabled: true, + collectServerSideStatsEnabled: false + }, + collectAllDosStatsEnabled: false, + collectedStatsExternalLoggingEnabled: false, + collectedStatsInternalLoggingEnabled: false, + dns: { + collectClientIpEnabled: true, + collectDestinationIpEnabled: true + }, + collectDnsStatsEnabled: true, + dosL2L4: { + collectClientIpEnabled: true, + collectDestinationGeoEnabled: true + }, + collectDosL3StatsEnabled: true, + collectFirewallAclStatsEnabled: true, + collectFirewallDropsStatsEnabled: true, + collectIpReputationStatsEnabled: true, + l3L4Errors: { + collectClientIpEnabled: true, + collectDestinationIpEnabled: true + }, + collectSipStatsEnabled: true, + collectStaleRulesEnabled: false, + publisher: 'none', + smtpConfig: 'none' + }; + assert.ok(validate(data), getErrorString(validate)); + }); + }); + + describe('invalid', () => { + it('should invalidate additional properties', () => { + const data = { + class: 'SecurityAnalytics', + invalidProperty: '' + }; + assert.strictEqual(validate(data), false, 'additional properties should not be valid'); + assert(getErrorString().includes('"additionalProperty": "invalidProperty"')); + }); + }); + }); +}); + +function getErrorString() { + return JSON.stringify(validate.errors, null, 4); +} From e29fcf1618eeaf68ed831b88a3209ec8613ec982 Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Thu, 2 Mar 2023 10:19:08 -0800 Subject: [PATCH 10/22] testing html code for periods --- docs/prereqs.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/prereqs.rst b/docs/prereqs.rst index 430b17b6..d01988dd 100644 --- a/docs/prereqs.rst +++ b/docs/prereqs.rst @@ -13,7 +13,7 @@ The following are prerequisites for using F5 BIG-IP Declarative Onboarding: - The BIG-IP must be running version 13.1 or later. - BIG-IP Declarative Onboarding is not intended to work on BIG-IP versions that have reached End of Life. See `here `_ for more information about BIG-IP versions supported by F5. - .. IMPORTANT:: Due to changes in TMOS v13.1.1.5 and v13.1.3.x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13.1.1.5 are compatible. + .. IMPORTANT:: Due to changes in TMOS v13|p|1|p|1|p|5 and v13|p|1|p|3|p|x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13|p|1|p|1|p|5 are compatible. - You must have an existing user account with the Administrator role. If you are using 13.1.x, the BIG-IP contains an admin user by default. If you are using 14.x, you **must** reset the admin password before installing BIG-IP Declarative Onboarding. See :ref:`14andlater` for instructions. @@ -58,6 +58,10 @@ Notes and tips
+.. |p| raw:: html + + . + .. |as3| raw:: html Application Services 3 (AS3) From 2979b15be2a74217a971ea88d691e679ca5e8992 Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Thu, 2 Mar 2023 10:26:56 -0800 Subject: [PATCH 11/22] trying a different way --- docs/prereqs.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/prereqs.rst b/docs/prereqs.rst index d01988dd..7940ffeb 100644 --- a/docs/prereqs.rst +++ b/docs/prereqs.rst @@ -13,7 +13,7 @@ The following are prerequisites for using F5 BIG-IP Declarative Onboarding: - The BIG-IP must be running version 13.1 or later. - BIG-IP Declarative Onboarding is not intended to work on BIG-IP versions that have reached End of Life. See `here `_ for more information about BIG-IP versions supported by F5. - .. IMPORTANT:: Due to changes in TMOS v13|p|1|p|1|p|5 and v13|p|1|p|3|p|x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13|p|1|p|1|p|5 are compatible. + .. IMPORTANT:: Due to changes in TMOS v13 |p| 1 |p| 1 |p| 5 and v13 |p| 1 |p| 3 |p| x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13 |p| 1 |p| 1 |p| 5 are compatible. - You must have an existing user account with the Administrator role. If you are using 13.1.x, the BIG-IP contains an admin user by default. If you are using 14.x, you **must** reset the admin password before installing BIG-IP Declarative Onboarding. See :ref:`14andlater` for instructions. From 5f861e5132b26c5783f0a153c0c8487edac16046 Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Thu, 2 Mar 2023 10:39:45 -0800 Subject: [PATCH 12/22] trying a different way --- docs/prereqs.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/prereqs.rst b/docs/prereqs.rst index 7940ffeb..ffb3ca0b 100644 --- a/docs/prereqs.rst +++ b/docs/prereqs.rst @@ -13,7 +13,7 @@ The following are prerequisites for using F5 BIG-IP Declarative Onboarding: - The BIG-IP must be running version 13.1 or later. - BIG-IP Declarative Onboarding is not intended to work on BIG-IP versions that have reached End of Life. See `here `_ for more information about BIG-IP versions supported by F5. - .. IMPORTANT:: Due to changes in TMOS v13 |p| 1 |p| 1 |p| 5 and v13 |p| 1 |p| 3 |p| x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13 |p| 1 |p| 1 |p| 5 are compatible. + .. IMPORTANT:: Due to changes in TMOS v13.1.1.5 and v13.1.3.x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13.1.1.5 are compatible. - You must have an existing user account with the Administrator role. If you are using 13.1.x, the BIG-IP contains an admin user by default. If you are using 14.x, you **must** reset the admin password before installing BIG-IP Declarative Onboarding. See :ref:`14andlater` for instructions. From d1748932ecdf3bac7905e94f716aa46643dacdea Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Thu, 2 Mar 2023 10:59:56 -0800 Subject: [PATCH 13/22] reverting due to unsuccessful attempts --- docs/prereqs.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/prereqs.rst b/docs/prereqs.rst index ffb3ca0b..30ea7162 100644 --- a/docs/prereqs.rst +++ b/docs/prereqs.rst @@ -13,7 +13,7 @@ The following are prerequisites for using F5 BIG-IP Declarative Onboarding: - The BIG-IP must be running version 13.1 or later. - BIG-IP Declarative Onboarding is not intended to work on BIG-IP versions that have reached End of Life. See `here `_ for more information about BIG-IP versions supported by F5. - .. IMPORTANT:: Due to changes in TMOS v13.1.1.5 and v13.1.3.x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13.1.1.5 are compatible. + .. IMPORTANT:: Due to changes in TMOS v13.1.1.5 and v13.1.3.x, the BIG-IP Declarative Onboarding (BIG-IP DO) Extension is not compatible with this specific TMOS version. Versions before and after 13.1.1.5 are compatible. - You must have an existing user account with the Administrator role. If you are using 13.1.x, the BIG-IP contains an admin user by default. If you are using 14.x, you **must** reset the admin password before installing BIG-IP Declarative Onboarding. See :ref:`14andlater` for instructions. @@ -60,7 +60,7 @@ Notes and tips .. |p| raw:: html - . + v13.1.1.5 .. |as3| raw:: html From e4a594a0f7dd3e42ad71029dfe65c03f3c9e7674 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Thu, 2 Mar 2023 13:28:41 -0800 Subject: [PATCH 14/22] Fix further false positive secret detections --- CHANGELOG.md | 2 +- docs/composing-a-declaration.rst | 6 +++--- docs/declarations/trace-response.json | 4 ++-- docs/json-pointers.rst | 2 +- docs/revision-history.rst | 4 ++-- examples/authMethods.json | 6 +++--- examples/bgp.json | 8 ++++---- examples/firewallPolicy.json | 4 ++-- examples/gslbMonitor.json | 12 ++++++------ examples/licenseViaBigIqReachableASG.json | 4 ++-- examples/managementIpFirewalWithAfmProvisioned.json | 2 +- examples/managementIpFirewall.json | 2 +- examples/onboard.json | 4 ++-- examples/onboardViaBigIqAws.json | 2 +- examples/preserveOrigDhcpRoutes.json | 4 ++-- examples/routeMap.json | 2 +- examples/routingAccessList.json | 4 ++-- examples/routingPrefixList.json | 2 +- examples/viaASG.json | 2 +- examples/vxlanTunnel.json | 4 ++-- public/index.html | 2 +- src/lib/declarationHandler.js | 4 ++-- src/lib/declarationParser.js | 8 ++++---- 23 files changed, 47 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f11345e..6cd526a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,7 +99,7 @@ Changes to this project are documented in this file. More detail and links can b ### Fixed - AUTOTOOL-3156: Declaration can fail while waiting for unprovisioned service to run -- AUTOTOOL-2850: ([GitHub Issue 279](https://github.com/F5Networks/f5-declarative-onboarding/issues/279)): Management firewall policy does not work without AFM module for version 15.1.2.1 +- AUTOTOOL-2850: ([GitHub Issue 279](https://github.com/F5Networks/f5-declarative-onboarding/issues/279)): Management firewall policy does not work without AFM module - AUTOTOOL-3012: ([GitHub Issue 292](https://github.com/F5Networks/f5-declarative-onboarding/issues/292)): DO unable to change hostname correctly in Google Cloud ### Changed diff --git a/docs/composing-a-declaration.rst b/docs/composing-a-declaration.rst index c2616624..cad9fd0a 100644 --- a/docs/composing-a-declaration.rst +++ b/docs/composing-a-declaration.rst @@ -560,7 +560,7 @@ For more information, see |ntpclass| in the Schema Reference. "external-self": { "class": "SelfIp", - "address": "1.2.3.4/24", + "address": "192.0.2.4/24", "vlan": "external", "allowService": "none", "trafficGroup": "traffic-group-local-only" @@ -649,8 +649,8 @@ For more information, see |mgmtrouteclass| in the Schema Reference. "managementRoute": { "class": "ManagementRoute", - "gw": "1.2.3.4", - "network": "4.3.2.1", + "gw": "192.0.2.4", + "network": "192.0.2.1", "mtu": 1000, "type": "interface" }, diff --git a/docs/declarations/trace-response.json b/docs/declarations/trace-response.json index f4708112..99cef5d0 100644 --- a/docs/declarations/trace-response.json +++ b/docs/declarations/trace-response.json @@ -143,7 +143,7 @@ "contact": "Customer Name ", "location": "Network Closet 1", "allowList": [ - "127.0.0.0/8" + "192.0.2.0/8" ] }, "SnmpTrapEvents": { @@ -448,7 +448,7 @@ "contact": "Customer Name ", "location": "Network Closet 1", "allowList": [ - "127.0.0.0/8" + "192.0.2.1/8" ] }, "SnmpUser": {}, diff --git a/docs/json-pointers.rst b/docs/json-pointers.rst index f90ed088..a9ccadc9 100644 --- a/docs/json-pointers.rst +++ b/docs/json-pointers.rst @@ -58,7 +58,7 @@ For example, you have the following lines in your declaration. "external-self": { "class": "SelfIp", - "address": "1.2.3.4/24", + "address": "192.0.2.4/24", "vlan": "external", "allowService": "default", "trafficGroup": "traffic-group-1" diff --git a/docs/revision-history.rst b/docs/revision-history.rst index adc256f9..9178e033 100644 --- a/docs/revision-history.rst +++ b/docs/revision-history.rst @@ -36,11 +36,11 @@ Document Revision History - 7-15-22 * - 1.30 - - Updated the documentation for BIG-IP Declarative Onboarding v1.30.0. This release contains the following changes: |br| * Added support for validating declarations with either Device or BIG-IP DO class using do.schema.json (see :ref:`Validating a declaration`) |br| |br| Issues Resolved: |br| * Declaration can fail while waiting for unprovisioned service to run |br| * Management firewall policy does not work without AFM module for version 15.1.2.1, `GitHub Issue 279 `_ |br| * BIG-IP DO unable to change hostname correctly in Google Cloud, `GitHub Issue 292 `_ + - Updated the documentation for BIG-IP Declarative Onboarding v1.30.0. This release contains the following changes: |br| * Added support for validating declarations with either Device or BIG-IP DO class using do.schema.json (see :ref:`Validating a declaration`) |br| |br| Issues Resolved: |br| * Declaration can fail while waiting for unprovisioned service to run |br| * Management firewall policy does not work without AFM module, `GitHub Issue 279 `_ |br| * BIG-IP DO unable to change hostname correctly in Google Cloud, `GitHub Issue 292 `_ - 5-31-22 * - 1.29 - - Updated the documentation for BIG-IP Declarative Onboarding v1.29.0. This release contains the following issues resolved: |br| * SelfIp with RouteDomain cannot reach directly connected network |br| * Licensing can fail if restnoded restarts during processing |br| * SelfIp allowService property does not accept a mix of service:port and default, `GitHub Issue 276 `_ |br| * Security level is not automatically set in the SnmpUser class, `GitHub Issue 282 `_ |br| * Management firewall policy does not work without AFM module for version 15.1.2.1, `GitHub Issue 279 `_ + - Updated the documentation for BIG-IP Declarative Onboarding v1.29.0. This release contains the following issues resolved: |br| * SelfIp with RouteDomain cannot reach directly connected network |br| * Licensing can fail if restnoded restarts during processing |br| * SelfIp allowService property does not accept a mix of service:port and default, `GitHub Issue 276 `_ |br| * Security level is not automatically set in the SnmpUser class, `GitHub Issue 282 `_ |br| * Management firewall policy does not work without AFM module, `GitHub Issue 279 `_ - 4-19-22 * - 1.28 diff --git a/examples/authMethods.json b/examples/authMethods.json index 87c4a9fb..1d3ec3b3 100644 --- a/examples/authMethods.json +++ b/examples/authMethods.json @@ -18,7 +18,7 @@ "serviceType": "call-check", "servers": { "primary": { - "server": "1.2.3.4", + "server": "192.0.2.60", "port": 1811, "secret": "mySecret" }, @@ -49,7 +49,7 @@ "searchTimeout": 687, "servers": [ "my.host.com", - "1.2.3.4", + "192.0.2.60", "FE80:0000:0000:0000:0202:B3FF:FE1E:8329" ], "ssl": "enabled", @@ -76,7 +76,7 @@ "secret": "aSecret1", "servers": [ "my.host.com", - "1.2.3.4", + "192.0.2.60", "FE80:0000:0000:0000:0202:B3FF:FE1E:8329" ], "service": "ppp" diff --git a/examples/bgp.json b/examples/bgp.json index 7d814532..49ceedde 100644 --- a/examples/bgp.json +++ b/examples/bgp.json @@ -61,7 +61,7 @@ { "name": 30, "action": "deny", - "prefix": "198.51.100.0/24", + "prefix": "192.0.2.0/24", "prefixLengthRange": 25 } ] @@ -129,12 +129,12 @@ "keepAlive": 10, "neighbors": [ { - "address": "203.0.113.1", + "address": "192.0.2.1", "ebgpMultihop": 2, "peerGroup": "Neighbor" }, { - "address": "203.0.113.2", + "address": "192.0.2.2", "ebgpMultihop": 3, "peerGroup": "Neighbor" } @@ -156,7 +156,7 @@ } ], "routeDomain": "exampleRouteDomain", - "routerId": "203.0.113.4" + "routerId": "192.0.2.4" } } } diff --git a/examples/firewallPolicy.json b/examples/firewallPolicy.json index d931c374..a62aed34 100644 --- a/examples/firewallPolicy.json +++ b/examples/firewallPolicy.json @@ -24,13 +24,13 @@ }, "selfTwo": { "class": "SelfIp", - "address": "192.0.3.20/24", + "address": "192.0.2.20/24", "vlan": "/Common/newVlan", "stagedFirewallPolicy": "/Common/firewallPolicy" }, "firewallAddressList1": { "class": "FirewallAddressList", - "addresses": ["192.0.2.10", "192.1.2.0/24"] + "addresses": ["192.0.2.10", "192.0.2.0/24"] }, "firewallPortList1": { "class": "FirewallPortList", diff --git a/examples/gslbMonitor.json b/examples/gslbMonitor.json index c18a3da7..3e264969 100644 --- a/examples/gslbMonitor.json +++ b/examples/gslbMonitor.json @@ -19,7 +19,7 @@ "class": "GSLBServer", "devices": [ { - "address": "10.10.10.10", + "address": "192.0.2.10", "addressTranslation": "192.0.2.12", "remark": "GSLB server device description" } @@ -37,7 +37,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "http", - "target": "1.1.1.1:80", + "target": "192.0.2.1:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -51,7 +51,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "https", - "target": "2.2.2.2:80", + "target": "192.0.2.2:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -67,7 +67,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "gateway-icmp", - "target": "3.3.3.3:80", + "target": "192.0.2.3:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -80,7 +80,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "tcp", - "target": "4.4.4.4:80", + "target": "192.0.2.4:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, @@ -94,7 +94,7 @@ "class": "GSLBMonitor", "remark": "description", "monitorType": "udp", - "target": "5.5.5.5:80", + "target": "192.0.2.55:80", "interval": 100, "timeout": 1000, "probeTimeout": 110, diff --git a/examples/licenseViaBigIqReachableASG.json b/examples/licenseViaBigIqReachableASG.json index 8ef7060c..dacbe878 100644 --- a/examples/licenseViaBigIqReachableASG.json +++ b/examples/licenseViaBigIqReachableASG.json @@ -1,6 +1,6 @@ { "class": "DO", - "targetHost": "1.2.3.4", + "targetHost": "192.0.2.4", "targetUsername": "/declaration/Credentials/1/username", "targetPassphrase": "/declaration/Credentials/1/password", "declaration": { @@ -23,7 +23,7 @@ "myLicense": { "class": "License", "licenseType": "licensePool", - "bigIqHost": "10.0.1.200", + "bigIqHost": "192.0.2.200", "bigIqUsername": "/Credentials/0/username", "bigIqPassword": "/Credentials/0/password", "licensePool": "myUtilityLicense", diff --git a/examples/managementIpFirewalWithAfmProvisioned.json b/examples/managementIpFirewalWithAfmProvisioned.json index d78e8c53..855c5366 100644 --- a/examples/managementIpFirewalWithAfmProvisioned.json +++ b/examples/managementIpFirewalWithAfmProvisioned.json @@ -11,7 +11,7 @@ }, "firewallAddressList1": { "class": "FirewallAddressList", - "addresses": ["192.0.2.10", "192.1.2.0/24"] + "addresses": ["192.0.2.10", "233.252.0.0/24"] }, "firewallPortList1": { "class": "FirewallPortList", diff --git a/examples/managementIpFirewall.json b/examples/managementIpFirewall.json index e20d3c61..4984c0fa 100644 --- a/examples/managementIpFirewall.json +++ b/examples/managementIpFirewall.json @@ -6,7 +6,7 @@ "class": "Tenant", "netAddressList1": { "class": "NetAddressList", - "addresses": ["192.0.2.10", "192.1.2.0/24"] + "addresses": ["192.0.2.10", "233.252.0.0/24"] }, "netPortList1": { "class": "NetPortList", diff --git a/examples/onboard.json b/examples/onboard.json index 8e66a786..30ad02d3 100644 --- a/examples/onboard.json +++ b/examples/onboard.json @@ -121,8 +121,8 @@ }, "managementRoute": { "class": "ManagementRoute", - "gw": "1.2.3.4", - "network": "4.3.2.1", + "gw": "192.0.2.4", + "network": "192.0.2.1", "mtu": 1500 }, "myRouteDomain": { diff --git a/examples/onboardViaBigIqAws.json b/examples/onboardViaBigIqAws.json index cdabca73..0e0ed236 100644 --- a/examples/onboardViaBigIqAws.json +++ b/examples/onboardViaBigIqAws.json @@ -41,7 +41,7 @@ } } }, - "targetHost": "54.10.10.10", + "targetHost": "192.0.2.10", "targetUsername": "admin", "targetSshKey": { "path": "/var/ssh/restnoded/privatessh.key" diff --git a/examples/preserveOrigDhcpRoutes.json b/examples/preserveOrigDhcpRoutes.json index 9a04ed17..0067e55b 100644 --- a/examples/preserveOrigDhcpRoutes.json +++ b/examples/preserveOrigDhcpRoutes.json @@ -10,8 +10,8 @@ }, "newManagementRoute": { "class": "ManagementRoute", - "network": "1.2.3.4", - "gw": "4.3.2.1" + "network": "192.0.2.4", + "gw": "192.0.2.1" } } } diff --git a/examples/routeMap.json b/examples/routeMap.json index 595a3c0e..03258e50 100644 --- a/examples/routeMap.json +++ b/examples/routeMap.json @@ -74,7 +74,7 @@ { "name": 30, "action": "deny", - "prefix": "198.51.100.0/24", + "prefix": "192.0.2.1/24", "prefixLengthRange": 25 } ] diff --git a/examples/routingAccessList.json b/examples/routingAccessList.json index 6085a7be..eb6df329 100644 --- a/examples/routingAccessList.json +++ b/examples/routingAccessList.json @@ -18,9 +18,9 @@ { "name": "22", "action": "deny", - "destination": "198.51.100.10", + "destination": "192.0.2.10", "exactMatchEnabled": false, - "source": "198.51.100.11" + "source": "192.0.2.11" } ] }, diff --git a/examples/routingPrefixList.json b/examples/routingPrefixList.json index 2e619456..d6cf7410 100644 --- a/examples/routingPrefixList.json +++ b/examples/routingPrefixList.json @@ -34,7 +34,7 @@ { "name": 30, "action": "deny", - "prefix": "198.51.100.0/24", + "prefix": "192.0.2.1/24", "prefixLengthRange": "25:27" } ] diff --git a/examples/viaASG.json b/examples/viaASG.json index 5f5419f6..8618f8d6 100644 --- a/examples/viaASG.json +++ b/examples/viaASG.json @@ -1,6 +1,6 @@ { "class": "DO", - "targetHost": "1.2.3.4", + "targetHost": "192.0.2.4", "targetUsername": "admin", "targetPassphrase": "myAdminPassword", "declaration": { diff --git a/examples/vxlanTunnel.json b/examples/vxlanTunnel.json index a59f5d0a..64f390c3 100644 --- a/examples/vxlanTunnel.json +++ b/examples/vxlanTunnel.json @@ -13,8 +13,8 @@ "tunnelType": "vxlan", "tos": "preserve", "usePmtu": true, - "localAddress": "10.145.0.1", - "remoteAddress": "239.250.0.2", + "localAddress": "192.0.2.1", + "remoteAddress": "233.252.0.2", "secondaryAddress": "any6", "key": 0, "mode": "bidirectional", diff --git a/public/index.html b/public/index.html index 89f45e78..91d4228f 100644 --- a/public/index.html +++ b/public/index.html @@ -75,7 +75,7 @@

example

}, "mySelfIp": { "class": "SelfIp", - "address": "1.2.3.4/24", + "address": "192.0.2.4/24", "vlan": "myVlan", "allowService": "all", "floating": true diff --git a/src/lib/declarationHandler.js b/src/lib/declarationHandler.js index 50b3a14b..a540497c 100644 --- a/src/lib/declarationHandler.js +++ b/src/lib/declarationHandler.js @@ -680,8 +680,8 @@ function applyRouteMapFixes(declaration) { * * Examples * - * source (0.0.0.0 or ::) with destination 1.1.1.1 sets source 0.0.0.0/0 and destination 10.10.10.10/32 - * source 1.1.1.1 with destination (0.0.0.0 or ::) sets source 10.10.10.10/32 and destination 0.0.0.0/0 + * source (0.0.0.0 or ::) with destination 192.0.2.1 sets source 0.0.0.0/0 and destination 192.0.2.10/32 + * source 192.0.2.1 with destination (0.0.0.0 or ::) sets source 192.0.2.10/32 and destination 0.0.0.0/0 * * source 2001:0db8:: with destination (0.0.0.0 or ::) sets source 2001:0db8::/128 and destination ::/0 * source (0.0.0.0 or ::) with destination 2001:0db8:: sets source ::/0 and destination 2001:0db8::/128 diff --git a/src/lib/declarationParser.js b/src/lib/declarationParser.js index efa86d5d..87797350 100644 --- a/src/lib/declarationParser.js +++ b/src/lib/declarationParser.js @@ -47,7 +47,7 @@ const NAMELESS_CLASSES = ConfigManager.getNamelessClasses(configItems); * "myDns": { * "class": "DNS", * "nameServers": [ - * "1.2.3.4", + * "192.0.2.4", * "FE80:0000:0000:0000:0202:B3FF:FE1E:8329" * ], * "search": [ @@ -83,7 +83,7 @@ const NAMELESS_CLASSES = ConfigManager.getNamelessClasses(configItems); * "app1SelfIp": { * "class": "SelfIp", * "vlan": "app1Vlan", - * "address": "1.2.3.4/24" + * "address": "192.0.2.4/24" * } * } * } @@ -101,7 +101,7 @@ const NAMELESS_CLASSES = ConfigManager.getNamelessClasses(configItems); * }, * "DNS": { * "nameServers": [ - * "1.2.3.4", + * "192.0.2.4", * "FE80:0000:0000:0000:0202:B3FF:FE1E:8329" * ], * "search": [ @@ -141,7 +141,7 @@ const NAMELESS_CLASSES = ConfigManager.getNamelessClasses(configItems); * "app1SelfIp": { * "name": "app1SelfIp", * "vlan": "app1Vlan", - * "address": "1.2.3.4/24" + * "address": "192.0.2.4/24" * } * } * } From e0c8fba5899632d3e00d210d685552cd871055af Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Fri, 10 Mar 2023 10:50:04 -0800 Subject: [PATCH 15/22] Standardize authtoken reference to fix secret detection --- examples/licenseViaBigIqReachableASG.json | 6 +++--- src/lib/systemHandler.js | 2 +- src/schema/1.10.0/base.schema.json | 2 +- src/schema/1.10.0/remote.schema.json | 2 +- src/schema/1.11.0/base.schema.json | 2 +- src/schema/1.11.0/remote.schema.json | 2 +- src/schema/1.12.0/base.schema.json | 2 +- src/schema/1.12.0/remote.schema.json | 2 +- src/schema/1.13.0/base.schema.json | 2 +- src/schema/1.13.0/remote.schema.json | 2 +- src/schema/1.14.0/base.schema.json | 2 +- src/schema/1.14.0/remote.schema.json | 2 +- src/schema/1.15.0/base.schema.json | 2 +- src/schema/1.15.0/remote.schema.json | 2 +- src/schema/1.16.0/base.schema.json | 2 +- src/schema/1.16.0/remote.schema.json | 2 +- src/schema/1.17.0/base.schema.json | 2 +- src/schema/1.17.0/remote.schema.json | 2 +- src/schema/1.18.0/base.schema.json | 2 +- src/schema/1.18.0/remote.schema.json | 2 +- src/schema/1.19.0/base.schema.json | 2 +- src/schema/1.19.0/remote.schema.json | 2 +- src/schema/1.2.0/base.schema.json | 2 +- src/schema/1.2.0/remote.schema.json | 2 +- src/schema/1.20.0/base.schema.json | 2 +- src/schema/1.20.0/remote.schema.json | 2 +- src/schema/1.21.0/base.schema.json | 2 +- src/schema/1.21.0/remote.schema.json | 2 +- src/schema/1.21.1/base.schema.json | 2 +- src/schema/1.21.1/remote.schema.json | 2 +- src/schema/1.22.0/base.schema.json | 2 +- src/schema/1.22.0/remote.schema.json | 2 +- src/schema/1.23.0/base.schema.json | 2 +- src/schema/1.23.0/remote.schema.json | 2 +- src/schema/1.24.0/base.schema.json | 2 +- src/schema/1.24.0/remote.schema.json | 2 +- src/schema/1.25.0/base.schema.json | 2 +- src/schema/1.25.0/remote.schema.json | 2 +- src/schema/1.26.0/base.schema.json | 2 +- src/schema/1.26.0/remote.schema.json | 2 +- src/schema/1.27.0/base.schema.json | 2 +- src/schema/1.27.0/remote.schema.json | 2 +- src/schema/1.27.1/base.schema.json | 2 +- src/schema/1.27.1/remote.schema.json | 2 +- src/schema/1.28.0/base.schema.json | 2 +- src/schema/1.28.0/remote.schema.json | 2 +- src/schema/1.29.0/base.schema.json | 2 +- src/schema/1.29.0/remote.schema.json | 2 +- src/schema/1.3.0/base.schema.json | 2 +- src/schema/1.3.0/remote.schema.json | 2 +- src/schema/1.3.1/base.schema.json | 2 +- src/schema/1.3.1/remote.schema.json | 2 +- src/schema/1.30.0/base.schema.json | 2 +- src/schema/1.30.0/remote.schema.json | 2 +- src/schema/1.31.0/base.schema.json | 2 +- src/schema/1.31.0/remote.schema.json | 2 +- src/schema/1.33.0/base.schema.json | 2 +- src/schema/1.33.0/remote.schema.json | 2 +- src/schema/1.34.0/base.schema.json | 2 +- src/schema/1.34.0/remote.schema.json | 2 +- src/schema/1.35.0/base.schema.json | 2 +- src/schema/1.35.0/remote.schema.json | 2 +- src/schema/1.36.0/base.schema.json | 2 +- src/schema/1.36.0/remote.schema.json | 2 +- src/schema/1.4.0/base.schema.json | 2 +- src/schema/1.4.0/remote.schema.json | 2 +- src/schema/1.4.1/base.schema.json | 2 +- src/schema/1.4.1/remote.schema.json | 2 +- src/schema/1.5.0/base.schema.json | 2 +- src/schema/1.5.0/remote.schema.json | 2 +- src/schema/1.6.0/base.schema.json | 2 +- src/schema/1.6.0/remote.schema.json | 2 +- src/schema/1.6.1/base.schema.json | 2 +- src/schema/1.6.1/remote.schema.json | 2 +- src/schema/1.7.0/base.schema.json | 2 +- src/schema/1.7.0/remote.schema.json | 2 +- src/schema/1.8.0/base.schema.json | 2 +- src/schema/1.8.0/remote.schema.json | 2 +- src/schema/1.9.0/base.schema.json | 2 +- src/schema/1.9.0/remote.schema.json | 2 +- src/schema/latest/base.schema.json | 2 +- src/schema/latest/remote.schema.json | 2 +- test/unit/lib/configManagerTests.js | 4 ++-- test/unit/lib/declarationParserTests.js | 4 ++-- test/unit/lib/systemHandlerTests.js | 4 ++-- test/unit/nodejs/restWorkerTests.js | 2 +- 86 files changed, 91 insertions(+), 91 deletions(-) diff --git a/examples/licenseViaBigIqReachableASG.json b/examples/licenseViaBigIqReachableASG.json index dacbe878..2ac6bbda 100644 --- a/examples/licenseViaBigIqReachableASG.json +++ b/examples/licenseViaBigIqReachableASG.json @@ -1,7 +1,7 @@ { "class": "DO", "targetHost": "192.0.2.4", - "targetUsername": "/declaration/Credentials/1/username", + "targetUsername": "/declaration/Credentials/1/bigiqUsername", "targetPassphrase": "/declaration/Credentials/1/password", "declaration": { "schemaVersion": "1.0.0", @@ -24,14 +24,14 @@ "class": "License", "licenseType": "licensePool", "bigIqHost": "192.0.2.200", - "bigIqUsername": "/Credentials/0/username", + "bigIqUsername": "/Credentials/0/bigiqUsername", "bigIqPassword": "/Credentials/0/password", "licensePool": "myUtilityLicense", "skuKeyword1": "key1", "skuKeyword2": "key2", "unitOfMeasure": "hourly", "reachable": true, - "bigIpUsername": "/Credentials/1/username", + "bigIpUsername": "/Credentials/1/bigipUsername", "bigIpPassword": "/Credentials/1/password" }, "myDns": { diff --git a/src/lib/systemHandler.js b/src/lib/systemHandler.js index 10eccd78..f4910f45 100644 --- a/src/lib/systemHandler.js +++ b/src/lib/systemHandler.js @@ -972,7 +972,7 @@ function handleSnmpUsers() { const user = JSON.parse(JSON.stringify(snmpUser)); if (user.authPassword) { - user.securityLevel = user.privacyPassword ? 'auth-privacy' : 'auth-no-privacy'; + user.securityLevel = user.privacyPassword ? 'auth-privacy' : 'auth-no-privacy'; // #gitleaks:allow } else { user.securityLevel = 'no-auth-no-privacy'; } diff --git a/src/schema/1.10.0/base.schema.json b/src/schema/1.10.0/base.schema.json index 3c21e562..2b7738d3 100644 --- a/src/schema/1.10.0/base.schema.json +++ b/src/schema/1.10.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.10.0/remote.schema.json b/src/schema/1.10.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.10.0/remote.schema.json +++ b/src/schema/1.10.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.11.0/base.schema.json b/src/schema/1.11.0/base.schema.json index c45adfbd..d33b48b1 100644 --- a/src/schema/1.11.0/base.schema.json +++ b/src/schema/1.11.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.11.0/remote.schema.json b/src/schema/1.11.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.11.0/remote.schema.json +++ b/src/schema/1.11.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.12.0/base.schema.json b/src/schema/1.12.0/base.schema.json index 6f3d003d..2d82854d 100644 --- a/src/schema/1.12.0/base.schema.json +++ b/src/schema/1.12.0/base.schema.json @@ -76,7 +76,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.12.0/remote.schema.json b/src/schema/1.12.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.12.0/remote.schema.json +++ b/src/schema/1.12.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.13.0/base.schema.json b/src/schema/1.13.0/base.schema.json index 8267e154..e6cf9e2b 100644 --- a/src/schema/1.13.0/base.schema.json +++ b/src/schema/1.13.0/base.schema.json @@ -77,7 +77,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.13.0/remote.schema.json b/src/schema/1.13.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.13.0/remote.schema.json +++ b/src/schema/1.13.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.14.0/base.schema.json b/src/schema/1.14.0/base.schema.json index f67a8327..04818257 100644 --- a/src/schema/1.14.0/base.schema.json +++ b/src/schema/1.14.0/base.schema.json @@ -78,7 +78,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.14.0/remote.schema.json b/src/schema/1.14.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.14.0/remote.schema.json +++ b/src/schema/1.14.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.15.0/base.schema.json b/src/schema/1.15.0/base.schema.json index 8d25e112..2817510b 100644 --- a/src/schema/1.15.0/base.schema.json +++ b/src/schema/1.15.0/base.schema.json @@ -79,7 +79,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.15.0/remote.schema.json b/src/schema/1.15.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.15.0/remote.schema.json +++ b/src/schema/1.15.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.16.0/base.schema.json b/src/schema/1.16.0/base.schema.json index f5fb99d5..1945e5c3 100644 --- a/src/schema/1.16.0/base.schema.json +++ b/src/schema/1.16.0/base.schema.json @@ -80,7 +80,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.16.0/remote.schema.json b/src/schema/1.16.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.16.0/remote.schema.json +++ b/src/schema/1.16.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.17.0/base.schema.json b/src/schema/1.17.0/base.schema.json index 33a3860f..560aabb0 100644 --- a/src/schema/1.17.0/base.schema.json +++ b/src/schema/1.17.0/base.schema.json @@ -81,7 +81,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.17.0/remote.schema.json b/src/schema/1.17.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.17.0/remote.schema.json +++ b/src/schema/1.17.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.18.0/base.schema.json b/src/schema/1.18.0/base.schema.json index 1bfccd40..548edde8 100644 --- a/src/schema/1.18.0/base.schema.json +++ b/src/schema/1.18.0/base.schema.json @@ -82,7 +82,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.18.0/remote.schema.json b/src/schema/1.18.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.18.0/remote.schema.json +++ b/src/schema/1.18.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.19.0/base.schema.json b/src/schema/1.19.0/base.schema.json index 86f6d200..2c332eea 100644 --- a/src/schema/1.19.0/base.schema.json +++ b/src/schema/1.19.0/base.schema.json @@ -83,7 +83,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.19.0/remote.schema.json b/src/schema/1.19.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.19.0/remote.schema.json +++ b/src/schema/1.19.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.2.0/base.schema.json b/src/schema/1.2.0/base.schema.json index 8dbc6fed..af54eba1 100644 --- a/src/schema/1.2.0/base.schema.json +++ b/src/schema/1.2.0/base.schema.json @@ -45,7 +45,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.2.0/remote.schema.json b/src/schema/1.2.0/remote.schema.json index edda2fe9..c3989286 100644 --- a/src/schema/1.2.0/remote.schema.json +++ b/src/schema/1.2.0/remote.schema.json @@ -45,7 +45,7 @@ ] }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.20.0/base.schema.json b/src/schema/1.20.0/base.schema.json index 2b3579f4..c6bd481a 100644 --- a/src/schema/1.20.0/base.schema.json +++ b/src/schema/1.20.0/base.schema.json @@ -84,7 +84,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.20.0/remote.schema.json b/src/schema/1.20.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.20.0/remote.schema.json +++ b/src/schema/1.20.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.21.0/base.schema.json b/src/schema/1.21.0/base.schema.json index 5fcea1ca..a6382c9b 100644 --- a/src/schema/1.21.0/base.schema.json +++ b/src/schema/1.21.0/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.21.0/remote.schema.json b/src/schema/1.21.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.21.0/remote.schema.json +++ b/src/schema/1.21.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.21.1/base.schema.json b/src/schema/1.21.1/base.schema.json index 5fcea1ca..a6382c9b 100644 --- a/src/schema/1.21.1/base.schema.json +++ b/src/schema/1.21.1/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.21.1/remote.schema.json b/src/schema/1.21.1/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.21.1/remote.schema.json +++ b/src/schema/1.21.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.22.0/base.schema.json b/src/schema/1.22.0/base.schema.json index 6c078151..1293213e 100644 --- a/src/schema/1.22.0/base.schema.json +++ b/src/schema/1.22.0/base.schema.json @@ -86,7 +86,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.22.0/remote.schema.json b/src/schema/1.22.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.22.0/remote.schema.json +++ b/src/schema/1.22.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.23.0/base.schema.json b/src/schema/1.23.0/base.schema.json index 25aa11c4..e231cc49 100644 --- a/src/schema/1.23.0/base.schema.json +++ b/src/schema/1.23.0/base.schema.json @@ -87,7 +87,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.23.0/remote.schema.json b/src/schema/1.23.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.23.0/remote.schema.json +++ b/src/schema/1.23.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.24.0/base.schema.json b/src/schema/1.24.0/base.schema.json index 6661f63f..fa6c93f4 100644 --- a/src/schema/1.24.0/base.schema.json +++ b/src/schema/1.24.0/base.schema.json @@ -88,7 +88,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.24.0/remote.schema.json b/src/schema/1.24.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.24.0/remote.schema.json +++ b/src/schema/1.24.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.25.0/base.schema.json b/src/schema/1.25.0/base.schema.json index 341027d2..c2d509f4 100644 --- a/src/schema/1.25.0/base.schema.json +++ b/src/schema/1.25.0/base.schema.json @@ -89,7 +89,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.25.0/remote.schema.json b/src/schema/1.25.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.25.0/remote.schema.json +++ b/src/schema/1.25.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.26.0/base.schema.json b/src/schema/1.26.0/base.schema.json index a6190eee..3c0cf342 100644 --- a/src/schema/1.26.0/base.schema.json +++ b/src/schema/1.26.0/base.schema.json @@ -90,7 +90,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.26.0/remote.schema.json b/src/schema/1.26.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.26.0/remote.schema.json +++ b/src/schema/1.26.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.27.0/base.schema.json b/src/schema/1.27.0/base.schema.json index c8b24223..79498398 100644 --- a/src/schema/1.27.0/base.schema.json +++ b/src/schema/1.27.0/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.27.0/remote.schema.json b/src/schema/1.27.0/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.27.0/remote.schema.json +++ b/src/schema/1.27.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.27.1/base.schema.json b/src/schema/1.27.1/base.schema.json index c8b24223..79498398 100644 --- a/src/schema/1.27.1/base.schema.json +++ b/src/schema/1.27.1/base.schema.json @@ -85,7 +85,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.27.1/remote.schema.json b/src/schema/1.27.1/remote.schema.json index b555b9d8..5c7fecc5 100644 --- a/src/schema/1.27.1/remote.schema.json +++ b/src/schema/1.27.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.28.0/base.schema.json b/src/schema/1.28.0/base.schema.json index 5cfc4210..081a76fe 100644 --- a/src/schema/1.28.0/base.schema.json +++ b/src/schema/1.28.0/base.schema.json @@ -86,7 +86,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.28.0/remote.schema.json b/src/schema/1.28.0/remote.schema.json index bf1e9494..e7a08765 100644 --- a/src/schema/1.28.0/remote.schema.json +++ b/src/schema/1.28.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.29.0/base.schema.json b/src/schema/1.29.0/base.schema.json index 956bf4f9..02e35ba7 100644 --- a/src/schema/1.29.0/base.schema.json +++ b/src/schema/1.29.0/base.schema.json @@ -87,7 +87,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.29.0/remote.schema.json b/src/schema/1.29.0/remote.schema.json index bf1e9494..e7a08765 100644 --- a/src/schema/1.29.0/remote.schema.json +++ b/src/schema/1.29.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.3.0/base.schema.json b/src/schema/1.3.0/base.schema.json index fbd64692..79b340dc 100644 --- a/src/schema/1.3.0/base.schema.json +++ b/src/schema/1.3.0/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.3.0/remote.schema.json b/src/schema/1.3.0/remote.schema.json index edda2fe9..c3989286 100644 --- a/src/schema/1.3.0/remote.schema.json +++ b/src/schema/1.3.0/remote.schema.json @@ -45,7 +45,7 @@ ] }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.3.1/base.schema.json b/src/schema/1.3.1/base.schema.json index fbd64692..79b340dc 100644 --- a/src/schema/1.3.1/base.schema.json +++ b/src/schema/1.3.1/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.3.1/remote.schema.json b/src/schema/1.3.1/remote.schema.json index edda2fe9..c3989286 100644 --- a/src/schema/1.3.1/remote.schema.json +++ b/src/schema/1.3.1/remote.schema.json @@ -45,7 +45,7 @@ ] }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.30.0/base.schema.json b/src/schema/1.30.0/base.schema.json index 50b541ff..8b0d7fd1 100644 --- a/src/schema/1.30.0/base.schema.json +++ b/src/schema/1.30.0/base.schema.json @@ -88,7 +88,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.30.0/remote.schema.json b/src/schema/1.30.0/remote.schema.json index bf1e9494..e7a08765 100644 --- a/src/schema/1.30.0/remote.schema.json +++ b/src/schema/1.30.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.31.0/base.schema.json b/src/schema/1.31.0/base.schema.json index 5d33a300..8f862d4a 100644 --- a/src/schema/1.31.0/base.schema.json +++ b/src/schema/1.31.0/base.schema.json @@ -89,7 +89,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.31.0/remote.schema.json b/src/schema/1.31.0/remote.schema.json index bf1e9494..e7a08765 100644 --- a/src/schema/1.31.0/remote.schema.json +++ b/src/schema/1.31.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.33.0/base.schema.json b/src/schema/1.33.0/base.schema.json index 683a680a..aa474344 100644 --- a/src/schema/1.33.0/base.schema.json +++ b/src/schema/1.33.0/base.schema.json @@ -91,7 +91,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.33.0/remote.schema.json b/src/schema/1.33.0/remote.schema.json index e315f918..37316c82 100644 --- a/src/schema/1.33.0/remote.schema.json +++ b/src/schema/1.33.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.34.0/base.schema.json b/src/schema/1.34.0/base.schema.json index a37b5326..3f2091dc 100644 --- a/src/schema/1.34.0/base.schema.json +++ b/src/schema/1.34.0/base.schema.json @@ -92,7 +92,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.34.0/remote.schema.json b/src/schema/1.34.0/remote.schema.json index e315f918..37316c82 100644 --- a/src/schema/1.34.0/remote.schema.json +++ b/src/schema/1.34.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.35.0/base.schema.json b/src/schema/1.35.0/base.schema.json index 5d97fb66..5173de7a 100644 --- a/src/schema/1.35.0/base.schema.json +++ b/src/schema/1.35.0/base.schema.json @@ -93,7 +93,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.35.0/remote.schema.json b/src/schema/1.35.0/remote.schema.json index e315f918..37316c82 100644 --- a/src/schema/1.35.0/remote.schema.json +++ b/src/schema/1.35.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.36.0/base.schema.json b/src/schema/1.36.0/base.schema.json index 0f3d0458..2d064aec 100644 --- a/src/schema/1.36.0/base.schema.json +++ b/src/schema/1.36.0/base.schema.json @@ -94,7 +94,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.36.0/remote.schema.json b/src/schema/1.36.0/remote.schema.json index e315f918..37316c82 100644 --- a/src/schema/1.36.0/remote.schema.json +++ b/src/schema/1.36.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.4.0/base.schema.json b/src/schema/1.4.0/base.schema.json index fbd64692..79b340dc 100644 --- a/src/schema/1.4.0/base.schema.json +++ b/src/schema/1.4.0/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.4.0/remote.schema.json b/src/schema/1.4.0/remote.schema.json index 93d931ac..11d56ea6 100644 --- a/src/schema/1.4.0/remote.schema.json +++ b/src/schema/1.4.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.4.1/base.schema.json b/src/schema/1.4.1/base.schema.json index fbd64692..79b340dc 100644 --- a/src/schema/1.4.1/base.schema.json +++ b/src/schema/1.4.1/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.4.1/remote.schema.json b/src/schema/1.4.1/remote.schema.json index 93d931ac..11d56ea6 100644 --- a/src/schema/1.4.1/remote.schema.json +++ b/src/schema/1.4.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.5.0/base.schema.json b/src/schema/1.5.0/base.schema.json index 3e9a58bc..2650b8c0 100644 --- a/src/schema/1.5.0/base.schema.json +++ b/src/schema/1.5.0/base.schema.json @@ -53,7 +53,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.5.0/remote.schema.json b/src/schema/1.5.0/remote.schema.json index 7d5943fc..3b4b485e 100644 --- a/src/schema/1.5.0/remote.schema.json +++ b/src/schema/1.5.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.6.0/base.schema.json b/src/schema/1.6.0/base.schema.json index 4740c1db..c4b811e3 100644 --- a/src/schema/1.6.0/base.schema.json +++ b/src/schema/1.6.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.6.0/remote.schema.json b/src/schema/1.6.0/remote.schema.json index 7d5943fc..3b4b485e 100644 --- a/src/schema/1.6.0/remote.schema.json +++ b/src/schema/1.6.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.6.1/base.schema.json b/src/schema/1.6.1/base.schema.json index 4740c1db..c4b811e3 100644 --- a/src/schema/1.6.1/base.schema.json +++ b/src/schema/1.6.1/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.6.1/remote.schema.json b/src/schema/1.6.1/remote.schema.json index 7d5943fc..3b4b485e 100644 --- a/src/schema/1.6.1/remote.schema.json +++ b/src/schema/1.6.1/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.7.0/base.schema.json b/src/schema/1.7.0/base.schema.json index 321e8d60..6fa7976e 100644 --- a/src/schema/1.7.0/base.schema.json +++ b/src/schema/1.7.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.7.0/remote.schema.json b/src/schema/1.7.0/remote.schema.json index d6648083..5845b424 100644 --- a/src/schema/1.7.0/remote.schema.json +++ b/src/schema/1.7.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.8.0/base.schema.json b/src/schema/1.8.0/base.schema.json index 8dd2984f..97953505 100644 --- a/src/schema/1.8.0/base.schema.json +++ b/src/schema/1.8.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.8.0/remote.schema.json b/src/schema/1.8.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.8.0/remote.schema.json +++ b/src/schema/1.8.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/1.9.0/base.schema.json b/src/schema/1.9.0/base.schema.json index c45adfbd..d33b48b1 100644 --- a/src/schema/1.9.0/base.schema.json +++ b/src/schema/1.9.0/base.schema.json @@ -58,7 +58,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/1.9.0/remote.schema.json b/src/schema/1.9.0/remote.schema.json index b131de77..a0c6395c 100644 --- a/src/schema/1.9.0/remote.schema.json +++ b/src/schema/1.9.0/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/src/schema/latest/base.schema.json b/src/schema/latest/base.schema.json index f568edfb..a5c6b5fd 100644 --- a/src/schema/latest/base.schema.json +++ b/src/schema/latest/base.schema.json @@ -95,7 +95,7 @@ "pattern": "^.{0,254}$" }, "tokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the device management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", "type": "object", "patternProperties": { "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { diff --git a/src/schema/latest/remote.schema.json b/src/schema/latest/remote.schema.json index e315f918..37316c82 100644 --- a/src/schema/latest/remote.schema.json +++ b/src/schema/latest/remote.schema.json @@ -84,7 +84,7 @@ "additionalProperties": false }, "targetTokens": { - "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABC123') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", "oneOf": [ { "description": "Pointer to tokens in a format that matches the 'object' schema below", diff --git a/test/unit/lib/configManagerTests.js b/test/unit/lib/configManagerTests.js index 4bd6fbc3..f1099918 100644 --- a/test/unit/lib/configManagerTests.js +++ b/test/unit/lib/configManagerTests.js @@ -3600,7 +3600,7 @@ describe('configManager', () => { listResponses['/tm/sys/snmp/users'] = [ { name: 'user1', - username: 'special!username' + username: 'bigipUsername' } ]; @@ -3611,7 +3611,7 @@ describe('configManager', () => { state.currentConfig.Common.SnmpUser.user1, { name: 'user1', - username: 'special!username', + username: 'bigipUsername', oidSubset: 'none', authProtocol: 'none', privacyProtocol: 'none' diff --git a/test/unit/lib/declarationParserTests.js b/test/unit/lib/declarationParserTests.js index 8e23b480..8ab9201a 100644 --- a/test/unit/lib/declarationParserTests.js +++ b/test/unit/lib/declarationParserTests.js @@ -440,8 +440,8 @@ describe('declarationParser', () => { }, myLicense: { class: 'License', - bigIpUsername: '/Credentials/0/username', - bigIqUsername: '/Credentials/1/username', + bigIpUsername: '/Credentials/0/username', // #gitleaks:allow + bigIqUsername: '/Credentials/1/username', // #gitleaks:allow notAPointer: '/foo/bar' }, myFailoverUnicast: { diff --git a/test/unit/lib/systemHandlerTests.js b/test/unit/lib/systemHandlerTests.js index dfee942a..0e532396 100644 --- a/test/unit/lib/systemHandlerTests.js +++ b/test/unit/lib/systemHandlerTests.js @@ -2311,7 +2311,7 @@ describe('systemHandler', () => { SnmpUser: { myFirstSnmpUser: { name: 'myFirstSnmpUser', - username: 'my!name!withspecials', + username: 'bigipUser!name!withspecials', authProtocol: 'sha', authPassword: 'pass1W0rd!', privacyProtocol: 'aes', @@ -2327,7 +2327,7 @@ describe('systemHandler', () => { return systemHandler.process() .then(() => { assert.strictEqual(dataSent[PATHS.SnmpUser][0].name, 'myFirstSnmpUser'); - assert.strictEqual(dataSent[PATHS.SnmpUser][0].username, 'my!name!withspecials'); + assert.strictEqual(dataSent[PATHS.SnmpUser][0].username, 'bigipUser!name!withspecials'); assert.strictEqual(dataSent[PATHS.SnmpUser][0].authPassword, 'pass1W0rd!'); assert.strictEqual(dataSent[PATHS.SnmpUser][0].authProtocol, 'sha'); assert.strictEqual(dataSent[PATHS.SnmpUser][0].privacyPassword, 'P@ssW0rd'); diff --git a/test/unit/nodejs/restWorkerTests.js b/test/unit/nodejs/restWorkerTests.js index 607cee7c..509fafd2 100644 --- a/test/unit/nodejs/restWorkerTests.js +++ b/test/unit/nodejs/restWorkerTests.js @@ -907,7 +907,7 @@ describe('restWorker', () => { it('should dereference json-pointers in the DO wrapper', () => new Promise((resolve, reject) => { declaration = { class: 'DO', - targetUsername: '/declaration/Credentials/0/username', + targetUsername: '/declaration/Credentials/0/username', // #gitleaks:allow targetPassphrase: '/declaration/Credentials/1/password', declaration: { Credentials: [ From 568ea0d738b688e57c3b23035748074898da45cc Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Fri, 10 Mar 2023 15:26:59 -0800 Subject: [PATCH 16/22] Add creating the LTS branch tag to the process --- contributing/process_release.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contributing/process_release.md b/contributing/process_release.md index fece28ad..b3b0a3c2 100644 --- a/contributing/process_release.md +++ b/contributing/process_release.md @@ -52,6 +52,11 @@ * Edit the DO schedule to set the `gitBranch` variable to the LTS branch. * Run the DO schedule. * After the build completes, edit the DO schedule to set the `gitBranch` variable back to develop. +* Using the GUI create a tag off the LTS branch (e.g. 1.36.1) + * In the GUI go to `Repository -> Tags -> New tag`. + * The name of the tag should be the LTS version with a 'v' at the front (e.g. v1.36.1). + * Update the `createFrom` to point at the LTS branch. + * Set the message to: `LTS release v` (e.g. "LTS release v1.36.1") * Merge the release branch CHANGELOG into develop and create an MR for this. ## Process for release From cd8916e3ac78361421e97135937757ac4066192b Mon Sep 17 00:00:00 2001 From: ansmith Date: Sun, 12 Mar 2023 19:10:23 +0000 Subject: [PATCH 17/22] bump 1.37.0-2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a707240..2b1132cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.37.0-1", + "version": "1.37.0-2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 56ee3487..be6f2e2a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.37.0-1", + "version": "1.37.0-2", "description": "F5 Declarative Onboarding", "main": "index.js", "repository": { From 68c3574cdf957f3b0770f777a0b08f47c0911e82 Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Mon, 13 Mar 2023 14:40:15 -0700 Subject: [PATCH 18/22] updating support.md for release --- SUPPORT.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SUPPORT.md b/SUPPORT.md index ae528543..1b35c90f 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -13,10 +13,10 @@ Currently supported versions: | Software Version | Release Type | First Customer Ship | End of Support | |------------------|---------------|---------------------|-----------------| -| DO 1.34.0 | Feature | 15-Nov-2022 | 15-Feb-2023 | | DO 1.35.0 | Feature | 12-Jan-2023 | 12-Apr-2023 | | DO 1.36.0 | Feature | 09-Feb-2023 | 09-May-2023 | | DO 1.36.1 | LTS | 09-Mar-2023 | 09-Mar-2024 | +| DO 1.37.0 | Feature | 27-Mar-2022 | 27-Jun-2023 | \* Fix for Allowed schema version @@ -63,6 +63,7 @@ Versions no longer supported: | DO 1.32.0 | Feature | 23-Aug-2022 | 23-Nov-2022 | | DO 1.33.0 | Feature | 04-Oct-2022 | 04-Jan-2023 | | DO 1.27.1 | LTS | 08-Mar-2022 | 08-Mar-2023 | +| DO 1.34.0 | Feature | 15-Nov-2022 | 15-Feb-2023 | \* Fix for updated Docker Container packaging only From b085b4047511ddec87a144a0ac14052674ad5207 Mon Sep 17 00:00:00 2001 From: Joe Jordan Date: Mon, 13 Mar 2023 14:40:52 -0700 Subject: [PATCH 19/22] updating conf.py --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index d4e97b78..214788dd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -85,7 +85,7 @@ # The short X.Y version. version = u'' # The full version, including alpha/beta/rc tags. -release = u'1.36.1' +release = u'1.37.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 2f7c3ad6ac834ea5a344b01461967e050936a924 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Mon, 13 Mar 2023 16:19:20 -0700 Subject: [PATCH 20/22] Update the note on master package version --- contributing/process_release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contributing/process_release.md b/contributing/process_release.md index 2e6eacb2..18b2cc93 100644 --- a/contributing/process_release.md +++ b/contributing/process_release.md @@ -57,8 +57,8 @@ * The name of the tag should be the LTS version with a 'v' at the front (e.g. v1.36.1). * Update the `createFrom` to point at the LTS branch. * Set the message to: `LTS release v` (e.g. "LTS release v1.36.1") -* Merge the release branch (without updating the package version) into develop and create an MR for this. -* Merge the release branch (without updating the package version) into master and create an MR for this. +* Merge the LTS branch (without updating the package version) into develop and create an MR for this. +* Merge the LTS branch (only update package version if LTS is latest) into master and create an MR for this. ## Process for release ### Begin process release at the very beginning of the first sprint of a new release, by performing the following actions: From 48223ac8bcf819e7238f3b4e21e6c35cccc01c83 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Mar 2023 09:54:34 -0700 Subject: [PATCH 21/22] Add 1.37.0 schema to directory --- src/schema/1.37.0/analytics.schema.json | 139 ++ src/schema/1.37.0/auth.schema.json | 704 ++++++++++ src/schema/1.37.0/base.schema.json | 282 ++++ src/schema/1.37.0/definitions.schema.json | 50 + src/schema/1.37.0/do.schema.json | 39 + src/schema/1.37.0/dsc.schema.json | 400 ++++++ src/schema/1.37.0/formats.js | 91 ++ src/schema/1.37.0/gslb.schema.json | 668 +++++++++ src/schema/1.37.0/network.schema.json | 1508 +++++++++++++++++++++ src/schema/1.37.0/openapi.yaml | 590 ++++++++ src/schema/1.37.0/remote.schema.json | 202 +++ src/schema/1.37.0/security.schema.json | 162 +++ src/schema/1.37.0/system.schema.json | 1457 ++++++++++++++++++++ 13 files changed, 6292 insertions(+) create mode 100644 src/schema/1.37.0/analytics.schema.json create mode 100644 src/schema/1.37.0/auth.schema.json create mode 100644 src/schema/1.37.0/base.schema.json create mode 100644 src/schema/1.37.0/definitions.schema.json create mode 100644 src/schema/1.37.0/do.schema.json create mode 100644 src/schema/1.37.0/dsc.schema.json create mode 100644 src/schema/1.37.0/formats.js create mode 100644 src/schema/1.37.0/gslb.schema.json create mode 100644 src/schema/1.37.0/network.schema.json create mode 100644 src/schema/1.37.0/openapi.yaml create mode 100644 src/schema/1.37.0/remote.schema.json create mode 100644 src/schema/1.37.0/security.schema.json create mode 100644 src/schema/1.37.0/system.schema.json diff --git a/src/schema/1.37.0/analytics.schema.json b/src/schema/1.37.0/analytics.schema.json new file mode 100644 index 00000000..517283a5 --- /dev/null +++ b/src/schema/1.37.0/analytics.schema.json @@ -0,0 +1,139 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/analytics.schema.json", + "title": "F5 BIG-IP Declarative Onboarding Global Analytics declaration", + "description": "Global analytics properties for onboarding a BIG-IP.", + "if": { + "required": ["class"], + "properties": { "class": { "const": "Analytics" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains global analytics configuration", + "type": "string", + "const": "Analytics" + }, + "debugEnabled": { + "description": "Enable debug mode. If debug mode is disabled, internal statistics are collected only if interval is set to the default value (300 seconds)", + "type": "boolean", + "default": false + }, + "interval": { + "description": "Analytics data collection interval in seconds. If this interval is different from the default value (300 seconds), internal statistics are not collected unless debugEnabled is set to true. Minimum interval is 20 seconds, maximum interval is 300 seconds.", + "type": "integer", + "minimum": 20, + "maximum": 300, + "default": 300 + }, + "sourceId": { + "description": "Unique value to signify the source of data", + "type": "string" + }, + "tenantId": { + "description": "Unique id for the tenant using the analytics backend system", + "type": "string" + }, + "offboxProtocol": { + "description": "Protocol for communication with offbox analytics application", + "type": "string", + "enum": ["https", "tcp"] + }, + "offboxTcpAddresses": { + "description": "Server IP addresses used only if the 'tcp/https' protocol is chosen", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6"}, + { "format": "json-pointer" } + ] + } + }, + "offboxTcpPort": { + "description": "Server TCP port for the server IP addresses used only if the 'tcp' protocol is chosen", + "type": "number", + "minimum": 0, + "maximum": 65535 + }, + "offboxEnabled": { + "description": "Enables all communication with the offbox application on the global level", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "if": { + "properties": { + "offboxEnabled" : { "const": true } + }, + "required": ["offboxEnabled"] + }, + "then": { + "required": ["offboxProtocol"] + } + }, + { + "if": { + "properties": { + "offboxTcpPort": { + "minimum": 1 + } + }, + "required": ["offboxTcpPort"] + }, + "then": { + "required": ["offboxTcpAddresses", "offboxProtocol"] + } + }, + { + "if": { + "properties": { + "offboxTcpAddresses": { + "minItems": 1 + } + }, + "required": ["offboxTcpAddresses"] + }, + "then": { + "required": ["offboxTcpPort", "offboxProtocol"] + } + }, + { + "if": { + "properties": { + "offboxProtocol": { "enum": ["tcp", "https"] } + }, + "required": ["offboxProtocol"] + }, + "then": { + "properties": { + "offboxTcpPort": { + "minimum": 1 + }, + "offboxTcpAddresses": { + "minItems": 1 + } + }, + "required": ["offboxTcpAddresses", "offboxTcpPort"] + } + }, + { + "if": { + "properties": { + "offboxProtocol": { "enum": ["https"] } + }, + "required": ["offboxProtocol"] + }, + "then": { + "required": ["sourceId"] + } + } + ], + "additionalProperties": false + } +} diff --git a/src/schema/1.37.0/auth.schema.json b/src/schema/1.37.0/auth.schema.json new file mode 100644 index 00000000..b8d62b94 --- /dev/null +++ b/src/schema/1.37.0/auth.schema.json @@ -0,0 +1,704 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/auth.schema.json", + "title": "F5 BIG-IP Declarative Onboarding Authentication declaration", + "description": "Authentication properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "RemoteAuthRole" } } + }, + "then": { + "oneOf": [ + { "$ref": "#/definitions/remoteAuthRole" } + ] + } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "Authentication" } } + }, + "then": { + "oneOf": [ + { "$ref": "#/definitions/remoteInfo" } + ] + } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "PasswordPolicy" } } + }, + "then": { + "$ref": "#/definitions/passwordPolicy" + } + } + ], + "definitions": { + "passwordPolicy": { + "required": ["class"], + "type": "object", + "description": "Password policy info.", + "properties": { + "class": { + "description": "Indicates that this property contains password policy configuration.", + "type": "string", + "const": "PasswordPolicy" + }, + "expirationWarningDays": { + "description": "Specifies the number of days prior to password expiration that the system sends a warning message to users.", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 7 + }, + "minLength": { + "description": "Specifies the minimum number of characters in a valid password.", + "type": "integer", + "minimum": 6, + "maximum": 255, + "default": 6 + }, + "minDurationDays": { + "description": "Specifies the minimum number of days a password is valid.", + "type": "integer", + "minimum": 0, + "maximum": 255, + "default": 0 + }, + "maxDurationDays": { + "description": "Specifies the maximum number of days a password is valid.", + "type": "integer", + "minimum": 0, + "maximum": 99999, + "default": 99999 + }, + "lockoutDurationSeconds": { + "description": "Specifies number of seconds in which to automatically reinstate users after being locked out. 0 means users must be manually reinstated. This is for BIG-IP 15.1+", + "type": "integer", + "minimum": 0, + "maximum": 999999, + "default": 0 + }, + "maxLoginFailures": { + "description": "Specifies the number of consecutive unsuccessful login attempts that the system allows before locking out the user. 0 means disabled.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "passwordMemory": { + "description": "Specifies the number of former passwords that the BIG-IP system retains to prevent the user from reusing a recent password.", + "type": "integer", + "minimum": 0, + "maximum": 127, + "default": 0 + }, + "policyEnforcementEnabled": { + "description": "Enables or disables the password policy.", + "type": "boolean", + "default": true + }, + "requiredUppercase": { + "description": "Specifies the number of uppercase alpha characters that must be present in a password for the password to be valid.", + "type": "integer", + "minimum": 0, + "maximum": 127, + "default": 0 + }, + "requiredLowercase": { + "description": "Specifies the number of lowercase alpha characters that must be present in a password for the password to be valid.", + "type": "integer", + "minimum": 0, + "maximum": 127, + "default": 0 + }, + "requiredNumeric": { + "description": "Specifies the number of numeric characters that must be present in a password for the password to be valid.", + "type": "integer", + "minimum": 0, + "maximum": 127, + "default": 0 + }, + "requiredSpecial": { + "description": "Specifies the number of special characters that must be present in a password for the password to be valid.", + "type": "integer", + "minimum": 0, + "maximum": 127, + "default": 0 + } + }, + "additionalProperties": false + }, + "remoteInfo": { + "required": ["class", "enabledSourceType"], + "type": "object", + "description": "Remote authentication info.", + "properties": { + "class": { + "description": "Indicates that this property contains authentication configuration.", + "type": "string", + "const": "Authentication" + }, + "enabledSourceType": { + "description": "Type of remote authentication source to enable for the system.", + "type": "string", + "enum": ["radius", "local", "tacacs", "ldap", "activeDirectory"], + "default": "local" + }, + "remoteUsersDefaults": { + "description": "The default values that the BIG-IP system applies to any user account that is not part of a remotely-stored user group.", + "type": "object", + "required": [ "partitionAccess", "terminalAccess", "role" ], + "properties": { + "role": { + "description": "Role for the remote users.", + "type": "string", + "enum": [ + "acceleration-policy-editor", + "admin", + "application-editor", + "auditor", + "certificate-manager", + "firewall-manager", + "fraud-protection-manager", + "guest", + "irule-manager", + "manager", + "no-access", + "operator", + "resource-admin", + "user-manager", + "web-application-security-administrator", + "web-application-security-editor" + ], + "default": "no-access" + }, + "partitionAccess": { + "description": "Default accessible partitions for remote users.", + "type": "string", + "enum": ["Common", "all"], + "default": "all" + }, + "terminalAccess": { + "description": "Default terminal access for remote users.", + "type": "string", + "enum": ["tmsh", "disabled"], + "default": "disabled" + } + }, + "additionalProperties": false + }, + "fallback": { + "description": "Specifies that the system uses the Local authentication method if the remote authentication method is not available.", + "type": "boolean", + "default": false + }, + "radius": { + "$ref": "#/definitions/radius" + }, + "tacacs": { + "$ref": "#/definitions/tacacs" + }, + "ldap": { + "$ref": "#/definitions/ldap" + } + }, + "allOf": [ + { + "if": { + "required": ["enabledSourceType"], + "properties": { "enabledSourceType": { "const": "radius"} } + }, + "then": { "required": ["radius"] } + }, + { + "if": { + "required": ["enabledSourceType"], + "properties": { "enabledSourceType": { "const": "tacacs"} } + }, + "then": { "required": ["tacacs"] } + }, + { + "if": { + "required": ["enabledSourceType"], + "properties": { "enabledSourceType": { "oneOf": [ + { "const": "ldap" }, + { "const": "activeDirectory" } + ] } } + }, + "then": { "required": ["ldap"] } + } + ], + "additionalProperties": false + }, + "variableString": { + "description": "Variable string value. Should always start with %.", + "type": "string", + "pattern": "^%.+" + }, + "remoteAuthRole": { + "description": "Creates a file used by LDAP, Active Directory(r), RADIUS, or TACACS+ server to determine specific access rights.", + "type": "object", + "required": [ "class", "attribute", "lineOrder", "userPartition" ], + "properties": { + "class": { + "description": "Indicates that this property contains RemoteAuthRole configuration.", + "type": "string", + "const": "RemoteAuthRole" + }, + "attribute": { + "description": "Specifies an attribute-value pair that an authentication server supplies to the BIG-IP system to match against entries in /config/bigip/auth/remoterole. The specified pair typically identifies users with access rights in common. This option is required.", + "type": "string" + }, + "console": { + "description": "Specifes if the remotely-authenticated users have tmsh console access or not. Accepted values are 'disabled' and 'tmsh'.", + "oneOf": [ + { + "type": "string", + "enum": [ + "disabled", + "tmsh" + ] + }, + { + "$ref": "#/definitions/variableString" + } + ], + "default": "disabled" + }, + "remoteAccess": { + "description": "Enables the specified group of remotely-authenticated users, remote access.", + "type": "boolean", + "default": false + }, + "lineOrder": { + "description": "The BIG-IP only allows one role per user for each partition/tenant. Because some remote servers allow multiple user roles, the BIG-IP uses the lineOrder parameter to choose one of the conflicting roles for the user at login time. In these cases, the system chooses the role with the lowest line-order number. See line order in the BIG-IP documentation for more information and examples.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + }, + "role": { + "description": "Specifies the role that you want to grant to the specified group of remotely-authenticated users.", + "oneOf": [ + { + "type": "string", + "enum": [ + "admin", + "application-editor", + "auditor", + "certificate-manager", + "firewall-manager", + "fraud-protection-manager", + "guest", + "irule-manager", + "manager", + "no-access", + "operator", + "resource-admin", + "user-manager", + "web-application-security-administrator", + "web-application-security-editor" + ] + }, + { + "$ref": "#/definitions/variableString" + } + ], + "default": "no-access" + }, + "userPartition": { + "description": "Specifies the BIG-IP partition to which you are assigning access to the specified group of remotely-authenticated users. The default value is Common. This option is required.", + "oneOf": [ + { + "type": "string", + "enum": [ + "all", + "Common" + ] + }, + { + "$ref": "#/definitions/variableString" + } + ], + "default": "Common" + } + }, + "additionalProperties": false + }, + "radius": { + "description": "Remote RADIUS authentication info.", + "type": "object", + "required": [ "servers"], + "properties": { + "serviceType": { + "description": "Type of service used for the RADIUS server.", + "type": "string", + "enum": [ + "administrative", + "authenticate-only", + "call-check", + "callback-administrative", + "callback-framed", + "callback-login", + "callback-nas-prompt", + "default", + "framed", + "login", + "nas-prompt", + "outbound" + ], + "default": "default" + }, + "servers": { + "description": "RADIUS servers settings", + "required": ["primary"], + "properties": { + "primary": { + "description": "Server connection settings for the primary RADIUS server", + "allOf": [ {"$ref": "#/definitions/radiusServer"} ] + }, + "secondary": { + "description": "Server connection settings for the secondary RADIUS server (optional)", + "allOf": [ {"$ref": "#/definitions/radiusServer"} ] + } + }, + "additionalProperties": false + } + } + }, + "radiusServer": { + "description": "RADIUS server connection settings.", + "type": "object", + "required": [ "server", "secret" ], + "properties": { + "server": { + "type": "string", + "description": "The RADIUS server IP address or hostname.", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" } + ] + }, + "port": { + "type": "integer", + "description": "Port to use when connecting to the RADIUS server.", + "default": 1812 + }, + "secret": { + "description": "Password to use when connection to the RADIUS server.", + "type": "string" + } + } + }, + "tacacs": { + "description": "TACACS+ authentication info", + "type": "object", + "required": [ "secret", "servers", "service" ], + "properties": { + "accounting": { + "description": "Specifies how the system returns accounting information, such as which services users access and how much network resources they consume, to the TACACS+ server. The default setting is Send to first available server.", + "type": "string", + "enum": [ + "send-to-all-servers", + "send-to-first-server" + ], + "default": "send-to-first-server" + }, + "authentication": { + "description": "Specifies the process the system employs when sending authentication requests. The default is Authenticate to first server.", + "type": "string", + "enum": [ + "use-all-servers", + "use-first-server" + ], + "default": "use-first-server" + }, + "debug": { + "description": "Specifies whether to log Syslog debugging information at the LOG_DEBUG level. We do not recommend enabling this setting for normal use. The default is Disabled.", + "type": "boolean", + "default": false + }, + "encryption": { + "description": "Specifies whether to use encryption of TACACS+ packets. The default is Enabled.", + "type": "boolean", + "default": true + }, + "protocol": { + "description": "Specifies the protocol associated with the value specified in Service Name, which is a subset of the associated service being used for client authorization or system accounting. You can use following values: lcp, ip, ipx, atalk, vines, lat, xremote, tn3270, telnet, rlogin, pad, vpdn, ftp, http, deccp, osicp, and unknown. Note that the majority of TACACS+ implementations are of protocol type ip, so try that first.", + "type": "string", + "enum": [ + "lcp", + "ip", + "ipx", + "atalk", + "vines", + "lat", + "xremote", + "tn3270", + "telnet", + "rlogin", + "pad", + "vpdn", + "ftp", + "http", + "deccp", + "osicp", + "unknown" + ] + }, + "secret": { + "description": "Type the secret key used to encrypt and decrypt packets sent or received from the server. Do not use the pound sign ( # ) in the secret for TACACS+ servers.", + "type": "string" + }, + "servers": { + "description": "Specifies a list of the IPv4 addresses for servers using the Terminal Access Controller Access System (TACACS)+ protocol with which the system communicates to obtain authorization data. For each address, an alternate TCP port number may be optionally specified by entering the address in the format address:port. If no port number is specified, the default port 49 is used.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "service": { + "description": "Specifies the name of the service that the user is requesting to be authorized to use. Identifying what the user is asking to be authorized for, enables the TACACS+ server to behave differently for different types of authorization requests. You can use following values: slip, ppp, arap, shell, tty-daemon, connection, system, and firewall. Specifying this setting is required. Note that the majority of TACACS+ implementations are of service type ppp, so try that first.", + "type": "string", + "enum": [ + "slip", + "ppp", + "arap", + "shell", + "tty-daemon", + "connection", + "system", + "firewall" + ] + } + } + }, + "ldap": { + "description": "Remote LDAP authentication info", + "type": "object", + "required": ["servers"], + "properties": { + "bindDn": { + "description": "Distinguished name of the server account. If server is a Microsoft Windows Active Directory server, the name must be an email address", + "type": "string" + }, + "bindPassword": { + "description": "Password for the server account", + "type": "string" + }, + "bindTimeout": { + "description": "Timeout limit in seconds to bind to remote authentication server", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 30 + }, + "checkBindPassword": { + "description": "Confirms the password for the server account", + "type": "boolean", + "default": false + }, + "checkRemoteRole": { + "description": "Verifies a user's group membership based on the remote-role definition, formatted as *member*of=\"group-dn\"", + "type": "boolean", + "default": false + }, + "filter": { + "description": "Filter used for authorizing client traffic", + "type": "string" + }, + "groupDn": { + "description": "Group distinguished name for authorizing client traffic", + "type": "string" + }, + "groupMemberAttribute": { + "description": "Group member attribute for authorizing client traffic", + "type": "string" + }, + "idleTimeout": { + "description": "Connection timeout limit in seconds", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 3600 + }, + "ignoreAuthInfoUnavailable": { + "description": "Ignores authentication information if not available", + "type": "boolean", + "default": false + }, + "ignoreUnknownUser": { + "description": "Ignores a user that is unknown", + "type": "boolean", + "default": false + }, + "loginAttribute": { + "description": "Logon attribute. If server is a Microsoft Windows Active Directory server, the value must be the account name \"samaccountname\"", + "type": "string" + }, + "port": { + "description": "Port number for the LDAP service", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 389 + }, + "referrals": { + "description": "Specifies whether automatic referral chasing should be enabled. This is for BIG-IP 15.1+", + "type": "boolean", + "default": true + }, + "searchScope": { + "description": "Level of remote server's directory to search for user authentication, either base object, one level, or subtree", + "type": "string", + "enum": ["base", "one", "sub"], + "default": "sub" + }, + "searchBaseDn": { + "description": "Search base distinguished name", + "type": "string" + }, + "searchTimeout": { + "description": "Search timeout limit in seconds", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 30 + }, + "servers": { + "description": "IP addresses or hostnames of the remote authentication servers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string" + } + }, + "ssl": { + "description": "Enables SSL", + "type": "string", + "enum": [ "enabled", "disabled", "start-tls" ], + "default": "disabled" + }, + "sslCaCert": { + "description": "SSL certificate issued by a certificate authority", + "allOf": [ + { "$ref": "definitions.schema.json#/definitions/pkiCertificate" }, + { "not": { "required": ["privateKey"] } } + ] + }, + "sslCheckPeer": { + "description": "Specifies whether the system checks an SSL peer", + "type": "boolean", + "default": false + }, + "sslCiphers": { + "description": "Specifies SSL ciphers", + "$comment": "References: https://support.f5.com/csp/article/K13163 https://support.f5.com/csp/article/K97098157 https://support.f5.com/csp/article/K86554600", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ECDHE-RSA-AES128-GCM-SHA256", + "ECDHE-RSA-AES128-CBC-SHA", + "ECDHE-RSA-AES128-SHA256", + "ECDHE-RSA-AES256-GCM-SHA384", + "ECDHE-RSA-AES256-CBC-SHA", + "ECDHE-RSA-AES256-SHA384", + "ECDHE-RSA-CHACHA20-POLY1305-SHA256", + "ECDH-RSA-AES128-GCM-SHA256", + "ECDH-RSA-AES128-SHA256", + "ECDH-RSA-AES128-SHA", + "ECDH-RSA-AES256-GCM-SHA384", + "ECDH-RSA-AES256-SHA384", + "ECDH-RSA-AES256-SHA", + "AES128-GCM-SHA256", + "AES128-SHA", + "AES128-SHA256", + "AES256-GCM-SHA384", + "AES256-SHA", + "AES256-SHA256", + "CAMELLIA128-SHA", + "CAMELLIA256-SHA", + "ECDHE-ECDSA-AES128-GCM-SHA256", + "ECDHE-ECDSA-AES128-SHA", + "ECDHE-ECDSA-AES128-SHA256", + "ECDHE-ECDSA-AES256-GCM-SHA384", + "ECDHE-ECDSA-AES256-SHA", + "ECDHE-ECDSA-AES256-SHA384", + "ECDHE-ECDSA-CHACHA20-POLY1305-SHA256", + "ECDH-ECDSA-AES128-GCM-SHA256", + "ECDH-ECDSA-AES128-SHA", + "ECDH-ECDSA-AES128-SHA256", + "ECDH-ECDSA-AES256-GCM-SHA384", + "ECDH-ECDSA-AES256-SHA", + "ECDH-ECDSA-AES256-SHA384", + "DHE-RSA-AES128-GCM-SHA256", + "DHE-RSA-AES128-SHA", + "DHE-RSA-AES128-SHA256", + "DHE-RSA-AES256-GCM-SHA384", + "DHE-RSA-AES256-SHA", + "DHE-RSA-AES256-SHA256", + "DHE-RSA-CAMELLIA128-SHA", + "DHE-RSA-CAMELLIA256-SHA", + "DHE-DSS-AES128-GCM-SHA256", + "DHE-DSS-AES128-SHA", + "DHE-DSS-AES128-SHA256", + "DHE-DSS-AES256-GCM-SHA384", + "DHE-DSS-AES256-SHA", + "DHE-DSS-AES256-SHA256", + "DHE-DSS-CAMELLIA128-SHA", + "DHE-DSS-CAMELLIA256-SHA", + "ADH-AES128-GCM-SHA256", + "ADH-AES128-SHA", + "ADH-AES256-GCM-SHA384", + "ADH-AES256-SHA", + "ECDHE-RSA-DES-CBC3-SHA", + "ECDH-RSA-DES-CBC3-SHA", + "DES-CBC3-SHA", + "ECDHE-ECDSA-DES-CBC3-SHA", + "ECDH-ECDSA-DES-CBC3-SHA", + "DHE-RSA-DES-CBC3-SHA", + "ADH-DES-CBC3-SHA", + "DHE-RSA-DES-CBC-SHA", + "DES-CBC-SHA", + "ADH-DES-CBC-SHA", + "RC4-SHA", + "RC4-MD5", + "ADH-RC4-MD5", + "EXP1024-DES-CBC-SHA", + "EXP1024-RC4-SHA", + "EXP-RC4-MD5", + "EXP-DES-CBC-SHA", + "TLS13-AES128-GCM-SHA256", + "TLS13-AES256-GCM-SHA384", + "TLS13-CHACHA20-POLY1305-SHA256", + "NULL-SHA", + "NULL-MD5" + ] + }, + "default": [] + }, + "userTemplate": { + "description": "Specifies a user template for the LDAP application to use for authentication.", + "type": "string" + }, + "version": { + "description": "Specifies the version number of the LDAP application.", + "type": "integer", + "minimum": 2, + "maximum": 3, + "default": 3 + } + }, + "additionalProperties": false + } + } +} diff --git a/src/schema/1.37.0/base.schema.json b/src/schema/1.37.0/base.schema.json new file mode 100644 index 00000000..a5c6b5fd --- /dev/null +++ b/src/schema/1.37.0/base.schema.json @@ -0,0 +1,282 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/base.schema.json", + "title": "F5 BIG-IP Declarative Onboarding base declaration", + "description": "Top level schema for onboarding a BIG-IP.", + "type": "object", + "required": ["schemaVersion", "class"], + "properties": { + "schemaVersion": { + "description": "Version of BIG-IP Declarative Onboarding schema this declaration uses.", + "type": "string", + "enum": [ + "1.37.0", + "1.36.0", + "1.35.0", + "1.34.0", + "1.33.0", + "1.32.0", + "1.31.0", + "1.30.0", + "1.29.0", + "1.28.0", + "1.27.0", + "1.26.0", + "1.25.0", + "1.24.0", + "1.23.0", + "1.22.0", + "1.21.0", + "1.20.0", + "1.19.0", + "1.18.0", + "1.17.0", + "1.16.0", + "1.15.0", + "1.14.0", + "1.13.0", + "1.12.0", + "1.11.1", + "1.11.0", + "1.10.0", + "1.9.0", + "1.8.0", + "1.7.0", + "1.6.1", + "1.6.0", + "1.5.1", + "1.5.0", + "1.4.1", + "1.4.0", + "1.3.0", + "1.2.0", + "1.1.0", + "1.0.0" + ] + }, + "class": { + "description": "Indicates this JSON document is a Device declaration", + "type": "string", + "const": "Device" + }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, + "async": { + "description": "Tells the API to return a 202 HTTP status before processing is complete. User must then poll for status.", + "type": "boolean", + "default": false + }, + "webhook": { + "description": "URL to post results to", + "type": "string", + "format": "uri" + }, + "label": { + "description": "Optional friendly name for this declaration", + "type": "string" + }, + "Credentials": { + "description": "Credentials which can be referenced from other parts of the declaration or the remote wrapper.", + "type": "array", + "items": { + "type": "object", + "properties": { + "username": { + "description": "Username of principal authorized to modify configuration of device (may not include the character ':'). NOTE: this is generally not required to configure 'localhost' because client authentication and authorization precede invocation of DO. It is also not required for any host if you populate tokens", + "type": "string", + "pattern": "^[^:]{0,254}$" + }, + "password": { + "description": "Password for username account. This is generally not required to configure 'localhost' and is not required when you populate tokens", + "type": "string", + "pattern": "^.{0,254}$" + }, + "tokens": { + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the device management service as authentication/authorization tokens", + "type": "object", + "patternProperties": { + "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]*$", + "maxLength": 8192 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "if": { + "required": ["tokens"] + }, + "then": { + "dependencies": { + "username": { + "not": {} + }, + "password": { + "not": {} + } + } + }, + "else": { + "dependencies": { + "tokens": { + "not": {} + } + } + } + } + }, + "Common": { + "description": "Special tenant Common holds objects other tenants can share", + "type": "object", + "required": ["class"], + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", + "maxLength": 48 + }, + "properties": { + "class": { + "type": "string", + "const": "Tenant" + }, + "hostname": { + "description": "Hostname to set for the device. Note: If you set the hostname as part of the System class, you CANNOT set a hostname in the Common class (they are mutually exclusive).", + "type": "string", + "format": "hostname" + } + }, + "additionalProperties": { + "properties": { + "class": { + "enum": [ + "Analytics", + "Authentication", + "ConfigSync", + "DagGlobals", + "DbVariables", + "DeviceCertificate", + "DeviceGroup", + "DeviceTrust", + "Disk", + "DNS", + "DNS_Resolver", + "FailoverUnicast", + "FailoverMulticast", + "HTTPD", + "License", + "MAC_Masquerade", + "ManagementIp", + "ManagementIpFirewall", + "ManagementRoute", + "MirrorIp", + "NetAddressList", + "NetPortList", + "NTP", + "PasswordPolicy", + "Provision", + "RemoteAuthRole", + "Route", + "RouteDomain", + "RouteMap", + "RoutingAccessList", + "RoutingAsPath", + "RoutingPrefixList", + "RoutingBGP", + "SelfIp", + "SnmpAgent", + "SnmpCommunity", + "SnmpTrapEvents", + "SnmpTrapDestination", + "SnmpUser", + "SSHD", + "SyslogRemoteServer", + "System", + "TrafficControl", + "Trunk", + "Tunnel", + "User", + "VLAN", + "TrafficGroup", + "GSLBGlobals", + "GSLBDataCenter", + "GSLBServer", + "GSLBMonitor", + "GSLBProberPool", + "FirewallPolicy", + "FirewallAddressList", + "FirewallPortList", + "SecurityAnalytics" + ] + } + }, + "allOf": [ + { "$ref": "system.schema.json#" }, + { "$ref": "network.schema.json#" }, + { "$ref": "dsc.schema.json#" }, + { "$ref": "analytics.schema.json#" }, + { "$ref": "auth.schema.json#" }, + { "$ref": "gslb.schema.json#" }, + { "$ref": "security.schema.json#" } + ] + }, + "default": { + "class": "Tenant" + } + }, + "controls": { + "description": "Options to control configuration process", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Controls" + }, + "dryRun": { + "description": "Boolean that indicates if this declaration will be run as a dry-run. If true, the declaration will NOT make any changes to the system, but will respond with whether or not it would.", + "type": "boolean", + "default": false + }, + "trace": { + "description": "If true, create a detailed trace of the configuration process for subsequent analysis (default false). Warning: trace files may contain sensitive configuration data.", + "type": "boolean", + "default": false + }, + "traceResponse": { + "description": "If true, the response will contain the trace files.", + "type": "boolean", + "default": false + }, + "userAgent": { + "description": "User Agent information to include in TEEM report.", + "type": "string" + } + } + }, + "result": { + "description": "Status of current request. This is set by the system.", + "type": "object", + "readOnly": true, + "required": ["class", "code"], + "properties": { + "class": { + "type": "string", + "const": "Result" + }, + "code": { + "description": "Status code.", + "type": "string", + "enum": ["OK", "ERROR"] + }, + "message": { + "description": "Further detail about the status.", + "type": "string" + } + } + } + }, + "additionalProperties": false +} diff --git a/src/schema/1.37.0/definitions.schema.json b/src/schema/1.37.0/definitions.schema.json new file mode 100644 index 00000000..68b7fa25 --- /dev/null +++ b/src/schema/1.37.0/definitions.schema.json @@ -0,0 +1,50 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/definitions.schema.json", + "title": "F5 BIG-IP Declarative Onboarding Definitions declaration", + "description": "Shared definitions for onboarding a BIG-IP.", + "type": "object", + "definitions": { + "F5string": { + "description": "String value in base64", + "type": "object", + "properties": { + "base64": { + "description": "Base64-encoded value (in JSON string)", + "type": "string", + "format": "f5base64" + } + } + }, + "pkiCertificate": { + "description": "PKI certificate with optional chain", + "required": ["certificate"], + "properties": { + "certificate": { + "description": "X.509 public-key certificate", + "allOf": [ + { "$ref": "#/definitions/F5string" } + ] + }, + "privateKey": { + "description": "Private key matching certificate's public key (optional)", + "allOf": [ + { "$ref": "#/definitions/F5string" } + ] + } + } + }, + "Label": { + "title": "Label", + "description": "Optional friendly name for this object", + "type": "string", + "format": "f5label" + }, + "Remark": { + "title": "Remark", + "description": "Arbitrary (brief) text pertaining to this object (optional)", + "type": "string", + "format": "f5remark" + } + } +} diff --git a/src/schema/1.37.0/do.schema.json b/src/schema/1.37.0/do.schema.json new file mode 100644 index 00000000..39873d1c --- /dev/null +++ b/src/schema/1.37.0/do.schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/do.schema.json", + "title": "F5 BIG-IP Declarative Onboarding base declaration", + "description": "Schema for onboarding a BIG-IP.", + "type": "object", + "required": ["class"], + "properties": { + "class": { + "description": "Top level class. Indicates whether this is a deployment directly to a BIG-IP or to some other system such as BIG-IQ.", + "enum": [ + "Device", + "DO" + ] + } + }, + "allOf": [ + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "Device" } } + }, + "then": { + "description": "Indicates that this is a deployment directly to a BIG-IP.", + "$ref": "base.schema.json#" + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DO" } } + }, + "then": { + "description": "Indicates that this is a deployment through an intermediary like BIG-IQ.", + "$ref": "remote.schema.json#" + } + } + ] +} diff --git a/src/schema/1.37.0/dsc.schema.json b/src/schema/1.37.0/dsc.schema.json new file mode 100644 index 00000000..a9f9161c --- /dev/null +++ b/src/schema/1.37.0/dsc.schema.json @@ -0,0 +1,400 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/dsc.schema.json", + "title": "F5 BIG-IP Declarative Onboarding DSC declaration", + "description": "Clustering properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "ConfigSync" } } + }, + "then": { + "required": ["class", "configsyncIp"], + "properties": { + "class": { + "description": "Indicates that this property contains config sync IP configuration.", + "type": "string", + "const": "ConfigSync" + }, + "configsyncIp": { + "description": "ConfigSync IP", + "type": "string", + "anyOf": [ + { "const": "none" }, + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "json-pointer" } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "FailoverUnicast" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains failover unicast address configuration.", + "type": "string", + "const": "FailoverUnicast" + }, + "address": { + "description": "IP address to listen on for failover heartbeats", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "json-pointer" } + ] + }, + "port": { + "description": "Port to listen on for failover heartbeats. The default is 1026.", + "type": "number", + "minimum": 0, + "maximum": 65535 + }, + "addressPorts": { + "description": "An array of address and port objects, that will create multiple failover unicast objects in the BIG-IP device. This array is mutually exclusive from using the other address and port features. Available in BIG-IP DO 1.15 and later.", + "type": "array", + "items": { + "type": "object", + "required": ["address"], + "properties": { + "address": { + "description": "IP address to listen on for failover heartbeats", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "json-pointer" } + ] + }, + "port": { + "description": "Port to listen on for failover heartbeats", + "type": "number", + "minimum": 0, + "maximum": 65535, + "default": 1026 + } + } + } + } + }, + "additionalProperties": false, + "dependencies": { + "address": { + "properties": { + "port": { + "default": 1026 + } + } + } + }, + "oneOf": [ + { + "required": ["address"], + "not": { "required": ["addressPorts"] } + }, + { + "required": ["addressPorts"], + "allOf": [ + { "not": { "required": ["address"] } }, + { "not": { "required": ["port"] } } + ] + } + ] + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "FailoverMulticast" } } + }, + "then": { + "required": ["class", "interface", "address", "port"], + "properties": { + "class": { + "description": "Indicates that this property contains multicast failover configuration.", + "type": "string", + "const": "FailoverMulticast" + }, + "interface": { + "description": "Specifies the interface name used for the failover multicast IP address. Specifying 'none' (the default) here disables Failover Multicast on the BIG-IP.", + "type": "string", + "default": "none" + }, + "address": { + "description": "IP address to listen on for multicast failover. This address cannot have a CIDR.", + "type": "string", + "default": "any6" + }, + "port": { + "description": "Port to listen on for failover heartbeats.", + "type": "number", + "minimum": 0, + "maximum": 65535, + "default": 0 + } + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DeviceGroup" } } + }, + "then": { + "required": ["class", "type", "owner"], + "properties": { + "class": { + "description": "Indicates that this property contains device group configuration.", + "type": "string", + "const": "DeviceGroup" + }, + "type": { + "description": "Type of the device group", + "type": "string", + "enum": ["sync-failover", "sync-only"] + }, + "owner": { + "description": "Owning device. Config will be pushed from this device. If this is present, device group will only be created if the current device is the owner. If not present, device group will be created if it does not exist", + "type": "string", + "anyOf": [ + { "format": "hostname" }, + { "format": "json-pointer" }, + { "format": "ipv4" }, + { "format": "ipv6" } + ] + }, + "members": { + "description": "Members to add to the device group if they are already in the trust domain", + "type": "array", + "items": { + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" } + ] + } + }, + "autoSync": { + "description": "Whether or not the device group should auto sync", + "type": "boolean", + "default": false + }, + "saveOnAutoSync": { + "description": "Whether or not the device group should save on auto sync", + "type": "boolean", + "default": false + }, + "networkFailover": { + "description": "Whether or not the device group supports network failover", + "type": "boolean", + "default": false + }, + "asmSync": { + "description": "Whether or not the device group should sync ASM properties", + "type": "boolean", + "default": false + }, + "fullLoadOnSync": { + "description": "Whether or not the device group should do a full load on sync", + "type": "boolean", + "default": false + } + }, + "if": { + "required": ["class"], + "properties": { "type": { "const": "sync-failover" } } + }, + "then": { + "if": { + "required": ["autoSync"], + "properties": { "autoSync": { "const": true } } }, + "then": { + "properties": { + "fullLoadOnSync": { + "const": false + } + } + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DeviceTrust" } } + }, + "then": { + "required": ["class", "localUsername", "localPassword", "remoteHost", "remoteUsername", "remotePassword"], + "properties": { + "class": { + "description": "Indicates that this property contains device trust configuration.", + "type": "string", + "const": "DeviceTrust" + }, + "localUsername": { + "description": "The username for the local device", + "type": "string" + }, + "localPassword": { + "description": "The password for the localUsername", + "type": "string" + }, + "remoteHost": { + "description": "The remote hostname or IP address", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" }, + { "format": "json-pointer" } + ] + }, + "remoteUsername": { + "description": "An admin user on the remote host", + "type": "string" + }, + "remotePassword": { + "description": "Password for the remote user in remoteUsername", + "type": "string" + } + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "TrafficGroup" } } + }, + "then" : { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains Traffic Group configuration.", + "type": "string", + "const": "TrafficGroup" + }, + "autoFailbackEnabled": { + "type": "boolean", + "description": "Specifies whether the traffic group fails back to the default device.", + "default": false + }, + "autoFailbackTime": { + "type": "integer", + "description": "Specifies the time required to fail back.", + "default": 60, + "minimum": 0, + "maximum": 300 + }, + "failoverMethod": { + "type": "string", + "description": "Specifies the method used to decide if the current device needs to failover the traffic-group to another device. If the failover-method is set to ha-order, a list of devices and their respective HA load is used to decide the next one to take over if the current devices fails.", + "enum": [ + "ha-order" + ], + "default": "ha-order" + }, + "haLoadFactor": { + "type": "integer", + "description": "Specifies a number for this traffic group that represents the load this traffic group presents to the system relative to other traffic groups. This allows the failover daemon to load balance the active traffic groups amongst the devices.", + "default": 1, + "minimum": 1, + "maximum": 1000 + }, + "haOrder": { + "type": "array", + "description": "This list of devices specifies the order in which the devices will become active for the traffic group when a failure occurs. This list may contain zero, one, or more entries up to the number of devices in the failover device group.", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "MAC_Masquerade" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains MAC masquerade configuration.", + "type": "string", + "const": "MAC_Masquerade" + }, + "source": { + "description": "MAC address source to use for masquerading.", + "oneOf": [ + { + "type": "object", + "properties": { + "interface": { + "description": "Generate a MAC address from an interface", + "type": "string" + } + }, + "required": ["interface"], + "additionalProperties": false + } + ] + }, + "trafficGroup": { + "description": "Traffic group to apply the MAC masquerade to.", + "type": "string", + "enum": ["traffic-group-local-only", "traffic-group-1"], + "default": "traffic-group-1" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": [ + "class" + ], + "properties": { + "class": { + "const": "MirrorIp" + } + } + }, + "then": { + "required": [ + "class" + ], + "properties": { + "class": { + "description": "Indicates IP addresses to use for connection and persistence mirroring.", + "type": "string", + "const": "MirrorIp" + }, + "primaryIp": { + "description": "IP of primary mirror. Specify 'any6' to disable.", + "type": "string", + "default": "any6" + }, + "secondaryIp": { + "description": "IP of secondary mirror. Specify 'any6' to disable.", + "type": "string", + "default": "any6" + } + }, + "additionalProperties": false + } + } + ] +} diff --git a/src/schema/1.37.0/formats.js b/src/schema/1.37.0/formats.js new file mode 100644 index 00000000..40fbc2cd --- /dev/null +++ b/src/schema/1.37.0/formats.js @@ -0,0 +1,91 @@ +/** + * Copyright 2023 F5 Networks, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +/* eslint-disable max-len */ +const IPv4rex = /^(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))(%(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{3}|[1-9]\d{2}|[1-9]?\d))?(\x2f(3[012]|[12]?\d))?$/; + +const IPv6rex = /^(::(([0-9a-f]{1,4}:){0,5}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}::(([0-9a-f]{1,4}:){0,4}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}:[0-9a-f]{1,4}::(([0-9a-f]{1,4}:){0,3}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){2}::(([0-9a-f]{1,4}:){0,2}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){3}::(([0-9a-f]{1,4}:)?((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){4}::((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){5}::([0-9a-f]{1,4})?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,6}::)|(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4})(%(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{3}|[1-9]\d{2}|[1-9]?\d))?(\x2f(12[0-8]|1[01]\d|[1-9]?\d))?$/; + +const IPv4optionalPrefixNoRouteDomainRex = /^(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))?(\x2f(3[012]|[12]?\d))?$/; + +const IPv6optionalPrefixNoRouteDomainRex = /^((::(([0-9a-f]{1,4}:){0,5}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}::(([0-9a-f]{1,4}:){0,4}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}:[0-9a-f]{1,4}::(([0-9a-f]{1,4}:){0,3}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){2}::(([0-9a-f]{1,4}:){0,2}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){3}::(([0-9a-f]{1,4}:)?((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){4}::((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){5}::([0-9a-f]{1,4})?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,6}::)|(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}))(\x2f(12[0-8]|1[01]\d|[1-9]?\d))?$/; + +const IPv4requiredPrefixNoRouteDomainRex = /^(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))?(\x2f(3[012]|[12]?\d))$/; + +const IPv6requiredPrefixNoRouteDomainRex = /^((::(([0-9a-f]{1,4}:){0,5}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}::(([0-9a-f]{1,4}:){0,4}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}:[0-9a-f]{1,4}::(([0-9a-f]{1,4}:){0,3}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){2}::(([0-9a-f]{1,4}:){0,2}((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){3}::(([0-9a-f]{1,4}:)?((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){4}::((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})|(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)[.]){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)))?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){5}::([0-9a-f]{1,4})?)|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,6}::)|(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}))(\x2f(12[0-8]|1[01]\d|[1-9]?\d))$/; + +/* eslint-enable max-len */ + +module.exports = { + IPv4optionalPrefixNoRouteDomainRex, + IPv6optionalPrefixNoRouteDomainRex, + IPv4requiredPrefixNoRouteDomainRex, + IPv6requiredPrefixNoRouteDomainRex, + f5ip: (address) => { + const lowerAddress = address.toLowerCase(); + return (!lowerAddress.length + || ((lowerAddress.length > 1) + && (lowerAddress.match(/[^0-9a-f:.%\x2f]/) === null) + && (IPv4rex.test(lowerAddress) || IPv6rex.test(lowerAddress)))); + }, + f5base64: (string) => { + const regex = /^([0-9A-Za-z/+_-]*|[0-9A-Za-z/+_-]+={1,2})$/; + return regex.test(string); + }, + f5bigip: (name) => { + // "f5bigip" ought to match names of BIG-IP configuration + // components. In fact it merely excludes egregious errors. + // It does demand absolute pathnames (i.e., starting with / + // like "/Common/foo") and it forbids space in names + const regex = /^\/[^\s"#'*<>?[-\]{-}]+$/; + return regex.test(name); + }, + ipWithOptionalPrefix: (address) => { + const lowerAddress = address.toLowerCase(); + return (!lowerAddress.length + || ((lowerAddress.length > 1) + && (lowerAddress.match(/[^0-9a-f:.%\x2f]/) === null) + && (IPv4optionalPrefixNoRouteDomainRex.test(lowerAddress) + || IPv6optionalPrefixNoRouteDomainRex.test(lowerAddress)))); + }, + ipWithRequiredPrefix: (address) => { + const lowerAddress = address.toLowerCase(); + return (!lowerAddress.length + || ((lowerAddress.length > 1) + && (lowerAddress.match(/[^0-9a-f:.%\x2f]/) === null) + && (IPv4requiredPrefixNoRouteDomainRex.test(lowerAddress) + || IPv6requiredPrefixNoRouteDomainRex.test(lowerAddress)))); + }, + f5label: (string) => { + // 'f5label' allows 0-64 chars, excluding a few likely to + // cause trouble with string searching, JS, TCL, or HTML + + // eslint-disable-next-line no-control-regex + const regex = /^[^\x00-\x1f\x22#&*<>?\x5b-\x5d`\x7f]{0,64}$/; + return regex.test(string); + }, + f5remark: (string) => { + // 'f5remark' allows 0-64 chars, excluding only control- + // chars, double-quote, and backslash. This is permissive + // enough that you should worry about XSS attacks + + // eslint-disable-next-line no-control-regex + const regex = /^[^\x00-\x1f\x22\x5c\x7f]{0,64}$/; + return regex.test(string); + } +}; diff --git a/src/schema/1.37.0/gslb.schema.json b/src/schema/1.37.0/gslb.schema.json new file mode 100644 index 00000000..ee4cfa3f --- /dev/null +++ b/src/schema/1.37.0/gslb.schema.json @@ -0,0 +1,668 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/gslb.schema.json", + "title": "F5 BIG-IP Declarative Onboarding GSLB declaration", + "description": "GSLB properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "GSLBGlobals" } } + }, + "then": { "$ref": "#/definitions/gslbGlobals" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "GSLBDataCenter" } } + }, + "then": { "$ref": "#/definitions/gslbDataCenter" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "GSLBServer" } } + }, + "then": { "$ref": "#/definitions/gslbServer" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "GSLBMonitor" } } + }, + "then": { "$ref": "#/definitions/gslbMonitor" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "GSLBProberPool" } } + }, + "then": { "$ref": "#/definitions/gslbProberPool" } + } + ], + "definitions": { + "gslbGlobals": { + "required": ["class"], + "type": "object", + "description": "GSLB global settings.", + "properties": { + "class": { + "description": "Indicates that this property contains gslb global settings configuration.", + "type": "string", + "const": "GSLBGlobals" + }, + "general": { + "$ref": "#/definitions/generalGlobals" + } + }, + "additionalProperties": false + }, + "generalGlobals": { + "type":"object", + "description": "GSLB general global settings.", + "properties": { + "synchronizationEnabled": { + "description": "Specifies if the system is a member of a synchronization group.", + "type": "boolean", + "default": false + }, + "synchronizationGroupName": { + "description": "Specifies the name of the synchronization group that the system belongs to.", + "type": "string", + "default": "default" + }, + "synchronizationTimeTolerance": { + "description": "Specifies the number of seconds that one system can be out of sync with another in the synchronization group. A value of 0 turns time synchronization off. The values 1-4 are not allowed.", + "type": "integer", + "minimum": 0, + "maximum": 600, + "default": 10, + "not": { + "enum": [1, 2, 3, 4] + } + }, + "synchronizationTimeout": { + "description": "Specifies the number of seconds that the system attempts to sync with the GSLB configuration with a sync group member.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 180 + } + }, + "additionalProperties": false + }, + "gslbDataCenter": { + "required": ["class"], + "description": "Declares a GSLB Data Center configuration", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "GSLBDataCenter" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "enabled": { + "description": "Specifies whether the data center is enabled or disabled", + "type": "boolean", + "default": true + }, + "location": { + "description": "Specifies the location of the data center", + "type": "string" + }, + "contact": { + "description": "Specifies the name of the administrator or the name of the department that manages the data center", + "type": "string" + }, + "proberPreferred": { + "description": "Specifies the type of prober to use to monitor servers defined in this data center. The default value is inside-data-center. Note: Prober pools are not used by the bigip monitor", + "type": "string", + "enum": [ + "inside-datacenter", "outside-datacenter", "pool" + ], + "default": "inside-datacenter" + }, + "proberFallback": { + "description": "Specifies the type of prober to use to monitor servers defined in this data center when the preferred type is not available. The default value is any-available", + "type": "string", + "enum": [ + "any-available", "inside-datacenter", "none", "outside-datacenter", "pool" + ], + "default": "any-available" + }, + "proberPool": { + "description": "Specifies a prober pool to monitor servers defined in the data center when proberPreferred or proberFallback are a value of pool.", + "type": "string" + } + }, + + "dependencies": { + "proberPool": { + "oneOf": [ + { "properties": { "proberPreferred": { "const": "pool" } } }, + { "properties": { "proberFallback": { "const": "pool" } } } + ] + } + }, + "additionalProperties": false + }, + "gslbServer": { + "required": [ "class", "dataCenter", "devices" ], + "description": "Declares a GSLB server object which contains configuration for a load balancer or a host server", + "type": "object", + "properties": { + "class": { + "description": "Indicates that this property contains GSLB server configuration", + "type": "string", + "const": "GSLBServer" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "enabled": { + "description": "Specifies whether the server is enabled or disabled", + "type": "boolean", + "default": true + }, + "serverType": { + "description": "Specifies the server type. The server type determines the metrics that the system can collect from the server", + "type": "string", + "enum":[ + "bigip", "generic-host" + ], + "default": "bigip" + }, + "proberPreferred": { + "description": "Specifies the type of prober to use to monitor servers defined in this data center. The default value is inherit. Note: Prober pools are not used by the bigip monitor", + "type": "string", + "enum": [ + "inherit", "inside-datacenter", "outside-datacenter", "pool" + ], + "default": "inherit" + }, + "proberFallback": { + "description": "Specifies the type of prober to use to monitor servers defined in this data center when the preferred type is not available. The default value is inherit", + "type": "string", + "enum": [ + "inherit", "any-available", "inside-datacenter", "none", "outside-datacenter", "pool" + ], + "default": "inherit" + }, + "proberPool": { + "description": "Specifies the name of a prober pool to use to monitor this server's resources when either the proberPreferred or proberFallback value is pool", + "type": "string" + }, + "dataCenter": { + "description": "Specifies the GSLB data center to which the server belongs", + "type": "string" + }, + "devices": { + "description": "Specifies the actual device(s) that are represented by this server object", + "type": "array", + "items": { "$ref": "#/definitions/gslbServerDevice" }, + "minItems": 1 + }, + "virtualServers": { + "description": "Specifies the virtual server(s) that are resources on this server object", + "type": "array", + "items": { "$ref": "#/definitions/gslbVirtualServer" } + }, + "virtualServerDiscoveryMode": { + "description": "Specifies virtual server auto-discovery settings. Use 'enabled' (add, modify, delete), 'enabled-no-delete' (add, modify) or the default 'disabled' (manual configuration)", + "type": "string", + "enum": [ + "disabled", + "enabled", + "enabled-no-delete" + ], + "default": "disabled" + }, + "exposeRouteDomainsEnabled": { + "description": "Allows virtual servers from all route domains to be auto-discovered. The default setting is false", + "type": "boolean", + "default": false + }, + "bpsLimit": { + "description": "Specifies the maximum allowable data throughput rate, in bits per second, for the virtual servers on the server. If the network traffic volume exceeds this limit, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "bpsLimitEnabled": { + "description": "Enables or disables the maximum Bits Per Second (BPS) option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "ppsLimit": { + "description": "Specifies the maximum allowable data transfer rate, in packets per second, for the virtual servers on the server. If the network traffic volume exceeds this value, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "ppsLimitEnabled": { + "description": "Enables or disables the maximum Packets Per Second (PPS) option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "connectionsLimit": { + "description": "Specifies the number of current connections allowed for the virtual servers on the server. If the current connections exceed this value, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "connectionsLimitEnabled": { + "description": "Enables or disables the maximum current connections option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "cpuUsageLimit": { + "description": "Specifies the percent of CPU usage. If percent of CPU usage goes above the limit, the system marks the server as unavailable", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "cpuUsageLimitEnabled": { + "description": "Enables or disables the CPU Usage limit option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "memoryLimit": { + "description": "Specifies the available memory in kilobytes required by the virtual servers on the server. If available memory falls below this limit, the system marks the server as unavailable", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "memoryLimitEnabled": { + "description": "Enables or disables the maximum Bits Per Second (BPS) option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "serviceCheckProbeEnabled": { + "description": "Specifies whether this BIG-IP device will be used to conduct a service check probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean", + "default": true + }, + "pathProbeEnabled": { + "description": "Specifies whether this BIG-IP device will be used to conduct a path probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean", + "default": true + }, + "snmpProbeEnabled": { + "description": "Specifies whether this BIG-IP device will be used to conduct a SNMP probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean", + "default": true + }, + "monitors": { + "description": "Specifies the path and name of the health monitors that the system uses to determine whether it can use this server for load balancing", + "type": "array", + "items": { + "type": "string" + } + } + }, + "dependencies": { + "proberPreferred": { + "if": { "properties": { "proberPreferred": { "const": "pool" } } }, + "then": { "required": [ "proberPool" ] } + }, + "proberFallback": { + "if": { "properties": { "proberFallback": { "const": "pool" } } }, + "then": { "required": [ "proberPool" ] } + } + }, + "additionalProperties": false + }, + "gslbServerDevice": { + "description": "Configures a device for the GSLB server", + "type": "object", + "required": [ "address" ], + "properties": { + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "address": { + "type": "string", + "description": " Specifies an external (public) address for the device. If BIG-IP DNS configuration synchronization is enabled and all existing addresses for a device are being replaced, new addresses should be added and synchronized before old addresses are removed, otherwise the changes may fail to synchronize. Alternatively, the address configuration changes can be performed on each BIG-IP DNS system", + "format": "f5ip" + }, + "addressTranslation": { + "type": "string", + "description": "Specifies the internal (private) address that corresponds to the external address", + "format": "f5ip" + } + }, + "additionalProperties": false + }, + "gslbMonitor": { + "description": "Declares a monitor that verifies the availability and/or performance status of a particular protocol, service or application", + "type": "object", + "required": [ "class", "monitorType" ], + "properties": { + "class": { + "type": "string", + "const": "GSLBMonitor" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "monitorType": { + "description": "Specifies the type of monitor", + "type": "string", + "enum": [ "http", "https", "gateway-icmp", "tcp", "udp" ] + }, + "target": { + "description": "Specifies the IP address and service port of the resource that is the destination of this monitor. Format is ip:port", + "type": "string", + "default": "*:*" + }, + "interval": { + "description": "Specifies, in seconds, the frequency at which the system issues the monitor check when either the resource is down or the status of the resource is unknown", + "type": "integer", + "minimum": 0, + "maximum": 86399, + "default": 30 + }, + "timeout": { + "description": "Specifies the number of seconds the target has in which to respond to the monitor request", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 120 + }, + "probeTimeout": { + "description": "Specifies the number of seconds after which the system times out the probe request to the system", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 5 + }, + "ignoreDownResponseEnabled": { + "description": "Specifies whether the monitor immediately marks an object down when it recieves a down response. If enabled, the monitor ignores the down response for the duration of timeout. The default is false (disabled)", + "type": "boolean", + "default": false + }, + "transparent": { + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "if": { "properties": { "monitorType": { "const": "http" } } }, + "then": { "$ref": "#/definitions/gslbMonitorHTTP" } + }, + { + "if": { "properties": { "monitorType": { "const": "https" } } }, + "then": { "$ref": "#/definitions/gslbMonitorHTTPS" } + }, + { + "if": { "properties": { "monitorType": { "const": "gateway-icmp" } } }, + "then": { "$ref": "#/definitions/gslbMonitorICMP" } + }, + { + "if": { "properties": { "monitorType": { "const": "tcp" } } }, + "then": { "$ref": "#/definitions/gslbMonitorTCP" } + }, + { + "if": { "properties": { "monitorType": { "const": "udp" } } }, + "then": { "$ref": "#/definitions/gslbMonitorUDP" } + } + ] + }, + + "gslbMonitorHTTP": { + "description": "Additional Monitor class properties available when monitorType = http", + "type": "object", + "properties": { + "reverseEnabled": { + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "HEAD / HTTP/1.0\\r\\n\\r\\n" + }, + "receive": { + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "HTTP/1." + } + } + }, + "gslbMonitorHTTPS": { + "description": "Additional Monitor class properties available when monitorType = https", + "type": "object", + "allOf": [ + { + "properties": { + "ciphers": { + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "description": "Pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string" + } + } + }, + { + "$ref": "#/definitions/gslbMonitorHTTP" + } + ] + }, + "gslbMonitorICMP": { + "description": "Additional Monitor class properties available when monitorType = gateway-icmp", + "type": "object", + "properties": { + "probeInterval": { + "description": "Specifies the frequency at which the BIG-IP system probes the host server", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "probeAttempts": { + "description": "Specifies the number of times the BIG-IP system attempts to probe the host server, after which the BIG-IP system considers the host server down or unavailable", + "type": "integer", + "minimum": 0, + "default": 3 + } + } + }, + "gslbMonitorTCP": { + "description": "Additional Monitor class properties available when monitorType = tcp", + "type": "object", + "properties": { + "reverseEnabled": { + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "receive": { + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + } + } + }, + "gslbMonitorUDP": { + "description": "Additional Monitor class properties available when monitorType = udp", + "type": "object", + "properties": { + "debugEnabled": { + "description": "When enabled, the monitor sends error messages and additional information to a log file created and labeled specifically for this monitor. The default is false (disabled)", + "type": "boolean", + "default": false + }, + "probeAttempts": { + "description": "Specifies the number of times the BIG-IP system attempts to probe the host server, after which the BIG-IP system considers the host server down or unavailable", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "probeInterval": { + "description": "Specifies the frequency at which the BIG-IP system probes the host server", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "reverseEnabled": { + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "default send string" + }, + "receive": { + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + } + } + }, + "gslbProberPool": { + "description": "Declares a pool of BIG-IP devices that will monitor server resources for health and performance. Note: Prober pools are not used by the bigip monitor", + "type": "object", + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains GSLB Prober Pool configuration", + "type": "string", + "const": "GSLBProberPool" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "enabled": { + "description": "Specifies whether this pool is available for conducting probes", + "type": "boolean", + "default": true + }, + "lbMode": { + "description": "Specifies the load balancing mode that the system uses to select the members of this pool", + "type": "string", + "enum": [ + "global-availability", + "round-robin" + ], + "default": "global-availability" + }, + "members": { + "description": "Specifies the members of the prober pool", + "type": "array", + "items": { + "$ref": "#/definitions/gslbProberPoolMember" + } + } + }, + "additionalProperties": false + }, + "gslbProberPoolMember": { + "description": "Declares member of the GSLB prober pool", + "type": "object", + "required": [ "server" ], + "properties": { + "server": { + "description": "Specifies the GSLB Server name of the pool member", + "type": "string" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "enabled": { + "description": "Specifies whether the server can be used as a member of a prober pool", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "gslbVirtualServer": { + "description": "Declares virtual server resource for the GSLB server", + "type": "object", + "required": ["address"], + "properties": { + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "enabled": { + "description": "Specifies whether the virtual server is enabled or disabled", + "type": "boolean", + "default": true + }, + "port": { + "description": "Specifies the L4 port for the service (like 443 for HTTPS)", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "address": { + "description": "Specifies the IP address for the virtual server", + "type": "string", + "format": "f5ip" + }, + "addressTranslation": { + "description": "Specifies the public address that this virtual server translates into when the GSLB provider communicates between the network and the Internet", + "type": "string", + "format": "f5ip" + }, + "addressTranslationPort": { + "description": "Specifies the translation port number for the virtual server", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "monitors": { + "description": "Specifies the health monitors that the system uses to determine whether it can use this linked virtual server for load balancing", + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "description": "Specifies the name of the virtual server", + "type": "string" + } + }, + "additionalProperties": false + } + } +} diff --git a/src/schema/1.37.0/network.schema.json b/src/schema/1.37.0/network.schema.json new file mode 100644 index 00000000..f7cac3c2 --- /dev/null +++ b/src/schema/1.37.0/network.schema.json @@ -0,0 +1,1508 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/network.schema.json", + "title": "F5 BIG-IP Declarative Onboarding network declaration", + "description": "Network properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "Trunk" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains Trunk configuration.", + "type": "string", + "const": "Trunk" + }, + "distributionHash": { + "description": "Specifies the basis for the hash that the system uses as the frame distribution algorithm. Choices are 'dst-mac' (use the destination MAC addresses), 'src-dist-mac' (use the source, destination, and MAC addresses), or 'src-dst-ipport' (use the source and destination IP addresses and ports).", + "type": "string", + "enum": ["dst-mac", "src-dst-ipport", "src-dst-mac"], + "default": "dst-mac" + }, + "interfaces": { + "description": "Interfaces for the Trunk. The number of interfaces used is recommended to be a power of 2 (for example 2, 4, or 8). Interfaces must be untagged.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "lacpEnabled": { + "description": "Specifies, when true, that the system supports the link aggregation control protocol (LACP), which monitors the trunk by exchanging control packets over the member links to determine the health of the links.", + "type": "boolean", + "default": false + }, + "lacpMode": { + "description": "Specifies the operation mode for LACP if the lacp option is enabled for the trunk. The values are 'active' (specifies the system periodically transmits LACP packets, regardless of the control value of the peer system) and 'passive' (specifies the system periodically transmits LACP packets, unless the control value of the peer system is active).", + "type": "string", + "enum": ["active", "passive"], + "default": "active" + }, + "lacpTimeout": { + "description": "Specifies the rate at which the system sends the LACP control packets.", + "type": "string", + "enum": ["long", "short"], + "default": "long" + }, + "linkSelectPolicy": { + "description": "Sets the LACP policy that the trunk uses to determine which member link (interface) can handle new traffic.", + "type": "string", + "enum": ["auto", "maximum-bandwidth"], + "default": "auto" + }, + "qinqEthertype": { + "description": "Specifies the ether-type value used for the packets handled on this trunk when it is a member in a QinQ vlan.", + "type": "string", + "pattern": "^0x[a-fA-F0-9]{4}$", + "default": "0x8100" + }, + "spanningTreeEnabled": { + "description": "Enables the spanning tree protocols (STP).", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "VLAN" } } + }, + "then": { + "required": ["class", "interfaces"], + "properties": { + "class": { + "description": "Indicates that this property contains VLAN configuration.", + "type": "string", + "const": "VLAN" + }, + "mtu": { + "description": "MTU for the VLAN.", + "type": "integer", + "minimum": 576, + "maximum": 9198, + "default": 1500 + }, + "tag": { + "description": "Tag for the VLAN.", + "type": "integer", + "minimum": 1, + "maximum": 4094 + }, + "interfaces": { + "description": "Interfaces for the VLAN.", + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "description": "Name of the interface.", + "type": "string" + }, + "tagged": { + "description": "Whether or not the interface is tagged. Default is true if a VLAN tag is provided, otherwise false.", + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "autoLastHop": { + "description": "When enabled, allows the system to send return traffic to the MAC address that transmitted the request, even if the routing table points to a different network or interface. As a result, the system can send return traffic to clients even when there is no matching route. Settings are default (inherited global setting), enabled, and disabled.", + "type": "string", + "enum": ["default", "enabled", "disabled"], + "default": "default" + }, + "cmpHash": { + "description": "Specifies how the traffic on the VLAN will be disaggregated.", + "type": "string", + "enum": ["default", "dst-ip", "src-ip"], + "default": "default" + }, + "failsafeEnabled": { + "description": "Enables a fail-safe mechanism that causes the active cluster to fail over to a redundant cluster when loss of traiffic is detected on a VLAN", + "type": "boolean", + "default": false + }, + "failsafeAction": { + "description": "Specifies the action for the system to take when the fail-safe mechanism is triggered", + "type": "string", + "enum": ["failover", "failover-restart-tm", "reboot", "restart-all"], + "default": "failover-restart-tm" + }, + "failsafeTimeout": { + "description": "Specifies the number of seconds that an active unit can run without detecting network traffic on this VLAN before starting a failover", + "type": "integer", + "minimum": 10, + "maximum": 3600, + "default": 90 + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "FirewallPolicy" } } + }, + "then": { "$ref": "#/definitions/firewallPolicy" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "FirewallAddressList" } } + }, + "then": { "$ref": "#/definitions/firewallAddressList" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "FirewallPortList" } } + }, + "then": { "$ref": "#/definitions/firewallPortList" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "NetAddressList" } } + }, + "then": { "$ref": "#/definitions/netAddressList" } + }, + { + "if": { + "required": ["class"], + "type": "object", + "properties": { "class": { "const": "NetPortList" } } + }, + "then": { "$ref": "#/definitions/netPortList" } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SelfIp" } } + }, + "then": { + "required": ["class", "address", "vlan"], + "properties": { + "class": { + "description": "Indicates that this property contains Self IP configuration.", + "type": "string", + "const": "SelfIp" + }, + "address": { + "description": "IP address.", + "type": "string", + "format": "f5ip" + }, + "trafficGroup": { + "description": "Traffic group for the Self IP.", + "type": "string", + "enum": ["traffic-group-local-only", "traffic-group-1"], + "default": "traffic-group-local-only" + }, + "vlan": { + "description": "VLAN or Tunnel for the self IP.", + "type": "string" + }, + "allowService": { + "description": "Which services (ports) to allow on the self IP. Value should be 'all', 'none', 'default', or array of ''. NOTE: The default value is not recommended and a value of 'none' should be used if possible.", + "oneOf": [ + { + "type": "string", + "enum": ["all", "none", "default"] + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "(\\w+:\\d+|default)" + } + } + ], + "default": "none" + }, + "enforcedFirewallPolicy": { + "description": "Specifies an enforced firewall policy on the self IP.", + "type": "string" + }, + "stagedFirewallPolicy": { + "description": "Specifies a staged firewall policy on the self IP.", + "type": "string" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DNS_Resolver" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains DNS Resolver configuration.", + "type": "string", + "const": "DNS_Resolver" + }, + "answerDefaultZones": { + "description": "Specifies whether the resolver answers queries for default zones: localhost, reverse 127.0.0.1, ::1, and AS112 zones.", + "type": "boolean", + "default": false + }, + "cacheSize": { + "description": "Specifies the maximum cach size in bytes of the DNS Resolver object", + "type": "integer", + "minimum": 10, + "maximum": 9437184, + "default": 5767168 + }, + "forwardZones": { + "description": "Forward zones on a DNS Resolver. A given zone name should only use the symbols allowed for a fully qualified domain name (FQDN), namely ASCII letters a through z, digits 0 through 9, hyphen, nad period. For example site.example.com would be a valid zone name. A DNS Resolver configured with a forward zone will forward any queries that resulted in a cache-miss and which also match a configured zone name, to the nameserver specified on the zone.", + "type": "array", + "items": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "description": "Name of a forward zone.", + "type": "string", + "anyOf": [ + { + "format": "hostname" + }, + { + "pattern": "^\\.$" + } + ] + }, + "nameservers": { + "description": "Specifies the IP address and service port of a recursive nameserver that answers DNS queries when the response cannot be found in the internal DNS resolver cache. Enter each address in the format address:port (IPv4) or addrss.port (IPv6). The port is usually 53.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "randomizeQueryNameCase": { + "description": "Specifies whether the resolver randomizes the case of query names.", + "type": "boolean", + "default": true + }, + "routeDomain": { + "description": "Specifies the name of the route domain the resolver uses for outbound traffic.", + "type": "string", + "default": "0" + }, + "useIpv4": { + "description": "Specifies whether the resolver sends DNS queries to IPv4", + "type": "boolean", + "default": true + }, + "useIpv6": { + "description": "Specifies whether the resolver sends DNS queries to IPv6", + "type": "boolean", + "default": true + }, + "useTcp": { + "description": "Specifies whether the resolver sends DNS queries over TCP", + "type": "boolean", + "default": true + }, + "useUdp": { + "description": "Specifies whether the resolver sends DNS queries over UDP", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "Route" } } + }, + "then": { + "properties": { + "class": { + "description": "Indicates that this property contains Route configuration.", + "type": "string", + "const": "Route" + }, + "gw": { + "description": "Gateway for the route.", + "type": "string", + "format": "f5ip" + }, + "network": { + "description": "IP address/netmask for route", + "type": "string", + "anyOf": [ + { "format": "f5ip" }, + { "enum": ["default", "default-inet6"]} + ], + "default": "default" + }, + "mtu": { + "description": "MTU for the route.", + "type": "integer", + "minimum": 0, + "maximum": 9198 + }, + "target": { + "description": "The VLAN or Tunnel for the Route.", + "type": "string", + "minLength": 0 + }, + "localOnly": { + "description": "A boolean to indicate if the Route should be added to the LOCAL_ONLY partition. 'Across Network' clusters in AWS require this partition to be configured.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": ["class", "gw"] + }, + { + "required": ["class", "target"] + } + ] + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "RouteDomain" } } + }, + "then": { + "required": ["class", "id"], + "properties": { + "class": { + "description": "Indicates that this property contains Route Domain configuration.", + "type": "string", + "const": "RouteDomain" + }, + "id": { + "description": "Specifies a unique numeric identifier for the route domain.", + "type": "integer", + "minimum": 0, + "maximum": 65534 + }, + "parent": { + "description": "Specifies the route domain the system searches when it cannot find a route in the configured domain.", + "type": "string" + }, + "bandWidthControllerPolicy": { + "description": "Specifies the bandwidth controller policy for the route domain.", + "type": "string" + }, + "connectionLimit": { + "description": "The connection limit for the route domain.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "flowEvictionPolicy": { + "description": "Specifies a flow eviction policy for the route domain to use.", + "type": "string" + }, + "ipIntelligencePolicy": { + "description": "Specifies an IP intelligence policy for the route domain to use.", + "type": "string" + }, + "enforcedFirewallPolicy": { + "description": "Specifies an enforced firewall policy on the route domain.", + "type": "string" + }, + "stagedFirewallPolicy": { + "description": "Specifies a staged firewall policy on the route domain.", + "type": "string" + }, + "securityNatPolicy": { + "description": "Specifies the security NAT policy for the route domain.", + "type": "string" + }, + "servicePolicy": { + "description": "Specifies the service policy for the route domain.", + "type": "string" + }, + "strict": { + "description": "Determines whether a connection can span route domains.", + "type": "boolean", + "default": true + }, + "routingProtocols": { + "description": "Specifies routing protocols for the system to use in the route domain.", + "type": "array", + "items": { + "type": "string", + "enum": ["BFD", "BGP", "IS-IS", "OSPFv2", "OSPFv3", "PIM", "RIP", "RIPng"] + } + }, + "vlans": { + "description": "Specifies VLANS for the system to use in the route domain.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DagGlobals" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains DAG Globals configuration.", + "type": "string", + "const": "DagGlobals" + }, + "icmpHash": { + "description": "Specifies ICMP hash for ICMP echo request and ICMP echo reply in SW DAG.", + "type": "string", + "enum": ["icmp", "ipicmp"], + "default": "icmp" + }, + "ipv6PrefixLength": { + "description": "Specifies whether SPDAG or IPv6 prefix DAG should be used to disaggregate IPv6 traffic when vlan cmp hash is set to src-ip or dst-ip.", + "type": "integer", + "default": 128, + "minimum": 0, + "maximum": 128 + }, + "roundRobinMode": { + "description": "Specifies whether the round robin disaggregator (DAG) on a blade can disaggregate packets to all the TMMs in the system or only to the TMMs local to the blade.", + "type": "string", + "enum": ["global", "local"], + "default": "global" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "Tunnel" } } + }, + "then": { + "required": ["class", "tunnelType"], + "properties": { + "class": { + "description": "Indicates that this property contains Tunnel configuration.", + "type": "string", + "const": "Tunnel" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "tunnelType": { + "description": "Specifies the profile that you want to associate with the Tunnel. Note: As of 1.36.0, when creating a VXLAN Tunnel, accept-ip-options in traffic controls will no longer default to true. Instead it will remain the same or be set to the value in the declaration.", + "type": "string", + "enum": ["geneve", "gre", "tcp-forward", "vxlan"] + }, + "mtu": { + "description": "Specifies the maximum transmission unit of the Tunnel.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "usePmtu": { + "description": "Enable or disable the Tunnel to use Path MTU information provided by ICMP NeedFrag error messages.", + "type": "boolean", + "default": true + }, + "typeOfService": { + "description": "Specifies a value for insertion into the Type of Service octet within the IP header of the encapsulating header of transmitted packets.", + "oneOf": [ + { + "type": "string", + "enum": ["preserve"] + }, + { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + ], + "default": "preserve" + }, + "autoLastHop": { + "description": "Specifies that packets are returned to the MAC address from which they were sent when enabled. The default setting specifies that the system uses the default route to send back the request.", + "type": "string", + "enum": [ + "default", + "enabled", + "disabled" + ], + "default": "default" + }, + "key": { + "description": "When applied to a GRE tunnel, this value specifies an optional field in the GRE header, used to authenticate the source of the packet. When applied to a VXLAN or Geneve tunnel, this value specifies the Virtual Network Identifier (VNI). When applied to an NVGRE tunnel, this value specifies the Virtual Subnet Identifier (VSID).", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "localAddress": { + "description": "Specifies the IP address of the local endpoint of the tunnel.", + "type": "string", + "anyOf": [ + { "enum": ["any", "any6"] }, + { "format": "f5ip" } + ], + "default": "any6" + }, + "remoteAddress": { + "description": "Specifies the IP address of the remote endpoint of the tunnel.", + "type": "string", + "anyOf": [ + { "enum": ["any", "any6"] }, + { "format": "f5ip" } + ], + "default": "any6" + }, + "secondaryAddress": { + "description": "Specifies a non-floating IP address for the tunnel, to be used with host-initiated traffic.", + "type": "string", + "anyOf": [ + { "enum": ["any", "any6"] }, + { "format": "f5ip" } + ], + "default": "any6" + }, + "mode": { + "description": "Specifies how the tunnel carries traffic.", + "type": "string", + "enum": ["bidirectional", "inbound", "outbound"], + "default": "bidirectional" + }, + "transparent": { + "description": "Specifies that the tunnel operates in transparent mode. When enabled, you can inspect and manipulate the encapsulated traffic flowing through the BIG-IP system.", + "type": "boolean", + "default": false + }, + "trafficGroup": { + "description": "Specifies the traffic group to associate with the tunnel.", + "type": "string", + "default": "none" + } + }, + "allOf": [ + { + "if": { + "required": ["transparent", "trafficGroup"], + "properties": { "transparent": { "const": true } } + }, + "then": { + "properties": { + "trafficGroup": { "const": "none" } + } + } + }, + { + "if": { + "required": ["tunnelType"], + "properties": { "tunnelType": { "const": "geneve" } } + }, + "then": { + "properties": { + "mode": { "const": "bidirectional" }, + "remoteAddress": { "enum": ["any", "any6"] } + } + } + }, + { + "if": { + "required": ["tunnelType"], + "properties": { "tunnelType": { "const": "vxlan" } } + }, + "then": { + "properties": { + "defaultsFrom": { + "description": "Specifies the existing profile from which the system imports settings for the new profile. Default value is vxlan. Can NOT default from itself.", + "type": "string", + "default": "vxlan" + }, + "port": { + "description": "Specifies the local port for receiving VXLAN packets. The default is 4789.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 4789 + }, + "floodingType": { + "description": "Specifies the flooding type to use to transmit multicast, broadcast, and unknown destination frames. The default is multicast.", + "type": "string", + "enum": ["none", "multicast", "multipoint", "replicator"], + "default": "multicast" + }, + "encapsulationType": { + "description": "Specifies whether the VXLAN header is formatted according to RFC 7348 (vxlan) or with the Generic Protocol Extension (vxlan-gpe). The default is vxlan.", + "type": "string", + "enum": ["vxlan", "vxlan-gpe"], + "default": "vxlan" + } + } + } + } + ] + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "RoutingAsPath" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains routing AS path configuration.", + "type": "string", + "const": "RoutingAsPath" + }, + "entries": { + "description": "An array that holds action and regex objects", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "integer", + "description": "Name of the entity" + }, + "regex": { + "type": "string", + "description": "A regex string" + } + }, + "required": ["name", "regex"], + "additionalProperties": false + }, + "default": [] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "RoutingAccessList" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains routing access list configuration.", + "type": "string", + "const": "RoutingAccessList" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "entries": { + "description": "An array that holds sources and destinations.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "integer", + "description": "Name of the entity identified as an integer" + }, + "action": { + "type": "string", + "description": "Permit or deny access", + "enum": [ + "permit", + "deny" + ] + }, + "destination": { + "description": "IPv4 or IPv6 address or address range. Specify either [address] or [address/prefixlength].", + "type": "string", + "format": "ipWithOptionalPrefix", + "default": "::" + }, + "exactMatchEnabled": { + "description": "Perform exact matching. A single entry with exactMatchEnabled true disallows any entry to have a non-default destination.", + "type": "boolean", + "default": false + }, + "source": { + "description": "IPv4 or IPv6 address or address range. Specify either [address] or [address/prefixlength].", + "type": "string", + "format": "ipWithOptionalPrefix", + "default": "::" + } + }, + "required": ["name", "action"], + "additionalProperties": false + }, + "default": [] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "RoutingPrefixList" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains routing prefix list configuration.", + "type": "string", + "const": "RoutingPrefixList" + }, + "entries": { + "description": "An array that holds action, prefix, and prefixLengthRange.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "integer", + "description": "Name of the entity" + }, + "action": { + "type": "string", + "description": "An action to take", + "enum": [ + "permit", + "deny" + ] + }, + "prefix": { + "type": "string", + "description": "Address with prefix length [address/prefix length]", + "format": "ipWithRequiredPrefix", + "default": "::/0" + }, + "prefixLengthRange": { + "type": "string", + "description": "Prefix length range. Examples: Specify '1:32' for greater than or equal to 1 and less than or equal to 32. Specify '1:' for greater than or equal to 1. Specify ':32' for less than or equal to 32. Specify '32' for equal to 32. Must be 0 or greater than the length on the prefix property.", + "pattern": "^\\d*:?\\d*$", + "default": "0" + } + }, + "required": ["name", "action"], + "additionalProperties": false + }, + "default": [] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "RouteMap" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains route map configuration.", + "type": "string", + "const": "RouteMap" + }, + "entries": { + "description": "An array that holds action to take when corresponding entries are matched.", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "description": "Name of the entity", + "type": "integer" + }, + "action": { + "description": "An action to take", + "type": "string", + "enum": [ + "permit", + "deny" + ] + }, + "match": { + "description": "AS path and addresses to match", + "type": "object", + "properties": { + "asPath": { + "description": "RoutingAsPath to match. Defines a BGP AS path access list.", + "type": "string" + }, + "ipv4": { + "description": "IPv4 to match", + "type": "object", + "properties": { + "address": { + "description": "IPv4 addresses to match", + "type": "object", + "properties": { + "prefixList": { + "description": "RoutingPrefixList to match", + "type": "string" + } + }, + "default": {} + }, + "nextHop": { + "description": "IPv4 next hops to match", + "type": "object", + "properties": { + "prefixList": { + "description": "RoutingPrefixList to match", + "type": "string" + } + }, + "default": {} + } + }, + "default": { + "address": {}, + "nextHop": {} + }, + "additionalProperties": false + }, + "ipv6": { + "description": "IPv6 to match", + "type": "object", + "properties": { + "address": { + "description": "IPv6 addresses to match", + "type": "object", + "properties": { + "prefixList": { + "description": "RoutingPrefixList to match", + "type": "string" + } + }, + "default": {} + }, + "nextHop": { + "description": "IPv6 next hops to match", + "type": "object", + "properties": { + "prefixList": { + "description": "RoutingPrefixList to match", + "type": "string" + } + }, + "default": {} + } + }, + "default": { + "address": {}, + "nextHop": {} + }, + "additionalProperties": false + } + }, + "default": { + "ipv4": { + "address": {}, + "nextHop": {} + }, + "ipv6": { + "address": {}, + "nextHop": {} + } + }, + "additionalProperties": false + } + }, + "required": ["name", "action"], + "additionalProperties": false + }, + "default": [] + }, + "routeDomain": { + "description": "Specifies the name of the route domain used by the route map", + "type": "string", + "default": "0" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "RoutingBGP" } } + }, + "then": { + "required": ["class", "localAS"], + "properties": { + "class": { + "description": "Indicates that this property contains Border Gateway Protocol configuration.", + "type": "string", + "const": "RoutingBGP" + }, + "localAS": { + "description": "Local Autonomous System. After the RoutingBGP has been created this value cannot be modified.", + "type": "integer", + "minimum": 1, + "maximum": 4294967295 + }, + "addressFamilies": { + "description": "Address family", + "type": "array", + "items": { + "type": "object", + "required": ["internetProtocol"], + "properties": { + "internetProtocol": { + "description": "Address family. The value 'all' sets both 'ipv4' and 'ipv6' to the 'all' values.", + "type": "string", + "enum": ["ipv4", "ipv6", "all"] + }, + "redistributionList": { + "description": "Redistribution list", + "type": "array", + "items": { + "type": "object", + "required": ["routingProtocol"], + "properties": { + "routingProtocol": { + "description":"Routing protocol", + "type": "string", + "enum": ["connected", "isis", "kernel", "ospf", "rip", "static"] + }, + "routeMap": { + "description": "Route map", + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "gracefulRestart": { + "description": "Graceful restart", + "type": "object", + "properties": { + "gracefulResetEnabled": { + "description": "Graceful reset capability", + "type": "boolean", + "default": false + }, + "restartTime": { + "description": "Maximum time needed for neighbor(s) to restart (seconds)", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 3600 + }, + "stalePathTime": { + "description": "Maximum time to retain stale paths from restarting neighbor(s) (seconds)", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 3600 + } + }, + "default": { + "gracefulResetEnabled": false, + "restartTime": 0, + "stalePathTime": 0 + }, + "additionalProperties": false + }, + "holdTime": { + "description": "Globally set or reset the hold time for all of the neighbors. The holdTime must be either 0 or at least 3 times keepAlive", + "type": "integer", + "default": 90, + "minimum": 0, + "maximum": 65535 + }, + "keepAlive": { + "description": "Globally set or reset the keep alive for all of the neighbors", + "type": "integer", + "default": 30, + "minimum": 0, + "maximum": 65535 + }, + "neighbors": { + "description": "Neighbors", + "type": "array", + "items": { + "type": "object", + "required": ["address", "peerGroup"], + "properties": { + "address": { + "description": "Name", + "type": "string", + "format": "f5ip" + }, + "ebgpMultihop": { + "description": "Allow external BGP members not on directly connected networks", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 1 + }, + "peerGroup": { + "description": "Peer group", + "type": "string" + } + }, + "additionalProperties": false + }, + "default": [] + }, + "peerGroups": { + "description": "Peer group", + "type": "array", + "items": { + "description": "Peer groups member", + "type": "object", + "required": ["name"], + "properties": { + "name": { + "description": "Name", + "type": "string" + }, + "addressFamilies": { + "description": "Address family", + "type": "array", + "items": { + "type": "object", + "required": ["internetProtocol"], + "properties": { + "internetProtocol": { + "description": "Address family", + "type": "string", + "enum": ["ipv4", "ipv6"] + }, + "softReconfigurationInboundEnabled": { + "description": "Soft reconfiguration inbound enabled", + "type": "boolean", + "default": false + }, + "routeMap": { + "description": "Route maps", + "type": "object", + "properties": { + "in": { + "description": "Incoming route map", + "type": "string" + }, + "out": { + "description": "Outgoing route map", + "type": "string" + } + }, + "default": {}, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "remoteAS": { + "description": "Remote Autonomous System", + "type": "integer", + "default": 0 + } + }, + "additionalProperties": false + }, + "default": [] + }, + "routeDomain": { + "description": "Specifies the name of the route domain used by the routing bgp", + "type": "string", + "default": "0" + }, + "routerId": { + "description": "Manually override current router identifier (peers will reset)", + "type": "string", + "default": "any6" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "ManagementIpFirewall" } } + }, + "then": { "$ref": "#/definitions/managementIpFirewall" } + } + ], + "definitions": { + "firewallPolicy": { + "description": "Configures firewall policy", + "type": "object", + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains firewall policy configuration", + "type": "string", + "const": "FirewallPolicy" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "rules": { + "description": "Specifies the list of firewall policy rules", + "type": "array", + "items": { "$ref": "#/definitions/firewallRulePolicy" } + } + }, + "additionalProperties": false + }, + "firewallAddressList": { + "title": "Firewall Address List", + "description": "Declares an address-list for use by firewall rules. An address list is a list of IP-address prefixes to compare against the source-IP address and/or destination-IP address in an IP packet", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "FirewallAddressList" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "addresses": { + "type": "array", + "description": "A list of IPv4 and IPv6 addresses and address ranges. You can specify a network with CIDR slash notation.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "fqdns": { + "type": "array", + "description": "A list of fully qualified domain names.", + "items": { + "type": "string", + "format": "hostname" + }, + "minItems": 1 + }, + "geo": { + "type": "array", + "description": "A list of geographic locations (for example, US:Washington).", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "fqdns" + ] + }, + { + "required": [ + "geo" + ] + } + ] + }, + "firewallPortList": { + "title": "Firewall Port List", + "description": "Declares a port-list for use by firewall rules. A firewall rule can match a packet's source port or destination port against one of the ports in a port list, and can take some action (such as ACCEPT or DROP) for a matching packet.", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "FirewallPortList" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "ports": { + "type": "array", + "description": "A list of ports and port ranges (for example, 80, \"8080-8090\").", + "items": { + "type": [ + "integer", + "string" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class", + "ports" + ] + }, + "firewallRuleCore": { + "description": "Configures a firewall rule.", + "type": "object", + "required": ["name", "action"], + "properties": { + "name": { + "type": "string", + "description": "Specifies the name of the firewall rule" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "action": { + "description": "Specifies the action that the firewall rule will take on matching packets", + "type": "string", + "enum": [ + "accept", + "drop", + "accept-decisively", + "reject" + ] + }, + "protocol": { + "description": "Specifies the protocol to which the firewall rule applies", + "type": "string", + "enum": [ + "any", + "tcp", + "udp" + ], + "default": "any" + }, + "source": { + "$ref": "#/definitions/firewallRuleSourceCore" + }, + "destination": { + "$ref": "#/definitions/firewallRuleDestinationCore" + }, + "loggingEnabled": { + "description": "Specifies whether the system enables or disables logging for the firewall rule", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "firewallRulePolicy": { + "type": "object", + "allOf": [ + { "$ref": "#/definitions/firewallRuleCore" }, + { + "properties": { + "source": { "$ref": "#/definitions/firewallRuleSourcePolicy" } + } + } + ] + }, + "firewallRuleSourceCore": { + "description": "Configures the packet sources to which the network firewall rule applies", + "type": "object", + "properties": { + "addressLists": { + "type": "array", + "description": "Specifies a list of address lists against which the packet will be compared.", + "items": { + "type": "string" + }, + "additionalProperties": false + }, + "portLists": { + "type": "array", + "description": "Specifies a list of port lists against which the packet will be compared.", + "items": { + "type": "string" + }, + "additionalProperties": false + } + } + }, + "firewallRuleSourcePolicy": { + "type": "object", + "allOf": [ + { "$ref": "#/definitions/firewallRuleSourceCore" }, + { + "type": "object", + "properties": { + "vlans": { + "type": "array", + "description": "Specifies a list of VLANs against which the packets will be compared", + "items": { + "type": "string" + }, + "additionalProperties": false + } + } + } + ] + }, + "firewallRuleDestinationCore": { + "description": "Configures the packet destination to which the network firewall rule applies", + "type": "object", + "properties": { + "addressLists": { + "type": "array", + "description": "Specifies a list of address lists against which the packet will be compared.", + "items": { + "type": "string" + }, + "additionalProperties": false + }, + "portLists": { + "type": "array", + "description": "Specifies a list of port lists against which the packet will be compared.", + "items": { + "type": "string" + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "netAddressList": { + "title": "Network Address List", + "description": "Declares an address-list for use by management IP firewall rules. This property doesn't need an AFM to be provisioned. An address list is a list of IP-address prefixes to compare against the source-IP address and/or destination-IP address in an IP packet", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "NetAddressList" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "addresses": { + "type": "array", + "description": "A list of IPv4 and IPv6 addresses and address ranges. You can specify a network with CIDR slash notation.", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class", + "addresses" + ] + }, + "netPortList": { + "title": "Network Port List", + "description": "Declares a port-list for use by management IP firewall rules. This property doesn't need an AFM to be provisioned. A firewall rule can match a packet's source port or destination port against one of the ports in a port list, and can take some action (such as ACCEPT or DROP) for a matching packet.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "NetPortList" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "ports": { + "type": "array", + "description": "A list of ports and port ranges (for example, 80, \"8080-8090\").", + "items": { + "type": [ + "integer", + "string" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class", + "ports" + ] + }, + "managementIpFirewall": { + "description": "Configures the management IP firewall", + "type": "object", + "required": ["class"], + "properties": { + "class": { + "description": "Indicates this property contains management IP firewall configuration.", + "type": "string", + "const": "ManagementIpFirewall" + }, + "label": { + "$ref": "definitions.schema.json#/definitions/Label" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "rules": { + "description": "Specifies the list of firewall rules", + "type": "array", + "items": { "$ref": "#/definitions/firewallRuleCore" } + } + }, + "additionalProperties": false + } + } +} diff --git a/src/schema/1.37.0/openapi.yaml b/src/schema/1.37.0/openapi.yaml new file mode 100644 index 00000000..8b292232 --- /dev/null +++ b/src/schema/1.37.0/openapi.yaml @@ -0,0 +1,590 @@ +openapi: 3.0.3 +info: + title: F5 BIG-IP Declarative Onboarding + description: This reference describes the BIG-IP DO API and available endpoints. For more details, see https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest/using-do.html. + version: 1.37.0 + contact: + name: BIG-IP Declarative Onboarding + email: solutionsfeedback@f5.com + url: 'https://github.com/F5Networks/f5-declarative-onboarding' + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +servers: + - url: https://192.0.2.1:443/mgmt/shared/declarative-onboarding +paths: + /: + get: + summary: Get status of configuration request + description: Retrieve the status of the most recently deployed configuration request. + operationId: getMostRecentTask + tags: + - Configuration + parameters: + - name: show + in: query + required: false + description: Retrieve original and current configuration. + schema: + type : string + enum: + - full + - name: statusCodes + in: query + required: false + description: | + Determines how BIG-IP DO returns HTTP status codes. + - *legacy*: Returns any errors as the HTTP status. + - *experimental*: Returns a 200 HTTP status code unless there is an actual error with the request. The result in the body of the response contains the status of the task. + schema: + type : string + enum: + - legacy + - experimental + default: legacy + responses: + 200: + description: Configuration was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/task' + examples: + success: + value: + $ref: '#/components/examples/task' + failure: + value: + $ref: '#/components/examples/errorConfig' + 500: + $ref: '#/components/responses/500' + post: + summary: Apply BIG-IP DO configuration + description: Configure the device per the declaration. + operationId: postDeclaration + tags: + - Configuration + requestBody: + description: BIG-IP DO Declaration. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/device' + responses: + 200: + description: Successful synchronous response. + content: + application/json: + schema: + $ref: '#/components/schemas/task' + example: + $ref: '#/components/examples/task' + 202: + description: Successful asynchronous response. + content: + application/json: + schema: + $ref: '#/components/schemas/task' + example: + id: 'c098f4f1-d2a4-4c53-8728-7d1ce5567a4a' + result: + class: Result, + code: 202, + status: RUNNING, + dryRun: false, + message: processing + declaration: + class: Device + schemaVersion: 1.0.0 + async: true + Common: + class: Tenant + myLicense: + class: License + licenseType: regKey + regKey: AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE + selfLink: 'https://localhost/mgmt/shared/appsvcs/task/c098f4f1-d2a4-4c53-8728-7d1ce5567a4' + 422: + description: Error while applying config. + content: + application/json: + schema: + $ref: '#/components/schemas/task' + example: + $ref: '#/components/examples/errorConfig' + 500: + $ref: '#/components/responses/500' + /config: + get: + summary: Return all original configurations + description: Retrieve the original configuration of all devices. + operationId: getAllConfigs + tags: + - Configuration + responses: + 200: + description: Retrieval was successful. + content: + application/json: + schema: + type: array + items: + allOf: + - $ref: '#/components/schemas/config' + 500: + $ref: '#/components/responses/500' + /config/{machineId}: + get: + summary: Return original configuration by machine ID + description: Retrieve the original configuration of a device by machine ID. + operationId: getConfig + tags: + - Configuration + parameters: + - name: machineId + in: path + required: true + description: The machine ID that is returned by the /shared/identified-devices/config/device-info endpoint. + schema: + type : string + format: uuid + responses: + 200: + description: Retrieval was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/config' + 404: + $ref: '#/components/responses/404' + 500: + $ref: '#/components/responses/500' + delete: + summary: Delete the stored original configuration by config ID + description: Delete the stored original configuration by config ID. This can be used in some cases when BIG-IP DO has gotten into an unusable state. + operationId: deleteConfig + tags: + - Configuration + parameters: + - name: configId + in: path + required: true + description: The config ID that was returned by a GET to /config + schema: + type : string + format: uuid + responses: + 200: + description: Delete was successful. + content: + application/json: + schema: + type: array + example: + [] + 404: + $ref: '#/components/responses/404' + 500: + $ref: '#/components/responses/500' + /info: + get: + summary: /mgmt/shared/appsvcs/info + tags: + - Information + description: | + This returns version and release information for the instance of BIG-IP DO you are using. + It also shows current and minimum required versions of the BIG-IP DO schema. + responses: + 200: + description: Successful response. + content: + application/json: + schema: + type: object + properties: + id: + type: integer + enum: + - 0 + selfLink: + type: string + format: uri + result: + $ref: '#/components/schemas/result' + version: + type: string + description: The version of BIG-IP DO. + release: + type: string + description: The build number of the current version. + schemaCurrent: + type: string + description: The maximum schema version supported. + schemaMinimum: + type: string + description: The minimum schema version supported. + example: + id: 0 + selfLink: https://localhost/mgmt/shared/declarative-onboarding/info, + result: + class: Result, + code: 200, + status: OK, + message: "" + errors: [] + version: 1.30.0 + release: 2 + schemaCurrent: 1.30.0 + schemaMinimum: 1.0.0 + 500: + $ref: '#/components/responses/500' + /inspect: + get: + summary: Return current configuration + description: Retrieve the current configuration of a device. + operationId: getInspect + tags: + - Inspect + parameters: + - name: targetHost + in: query + required: false + description: The IP address or domain name of the host from which to retrieve the current configuration. + schema: + type : string + default: localhost + - name: targetPort + in: query + required: false + description: The port that is used with the targetHost to establish a connection to the device. By default, BIG-IP DO tries to establish a connection to the device using ports 443 and 8443. + schema: + type : integer + minimum: 0 + maximum: 65535 + - name: targetUsername + in: query + required: false + description: The username for the targetHost. + schema: + type : string + default: admin + - name: targetPassword + in: query + required: false + description: The password for the targetHost. + schema: + type : string + default: admin + responses: + 200: + description: Retrieval was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/inspect' + 500: + $ref: '#/components/responses/500' + /task: + get: + summary: Return status of all configurations + description: Retrieve the status of all previously deployed configurations. + operationId: getAllTasks + tags: + - Task + responses: + 200: + description: Retrieval was successful. + content: + application/json: + schema: + type: array + items: + allOf: + - $ref: '#/components/schemas/task' + example: + $ref: '#/components/examples/task' + + 500: + $ref: '#/components/responses/500' + /task/{taskId}: + get: + summary: Return status of configuration by task ID + description: Retrieve the status of a previously deployed configuration by task ID. + operationId: getTask + tags: + - Task + parameters: + - name: taskId + in: path + required: true + description: The task ID. + schema: + type : string + format: uuid + responses: + 200: + description: Retrieval was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/task' + examples: + success: + value: + $ref: '#/components/examples/task' + failure: + value: + $ref: '#/components/examples/errorConfig' + 404: + $ref: '#/components/responses/404' + 500: + $ref: '#/components/responses/500' +components: + schemas: + config: + title: Config + description: The original configuration of a device. + type: object + allOf: + - properties: + id: + type: string + format: uuid + selfLink: + type: string + format: uri + result: + $ref: '#/components/schemas/result' + - $ref: '#/components/schemas/configObject' + configObject: + title: Config Object + type: object + properties: + Common: + type: object + description: A collection of sub-objects that describe the configuration state of a device. + additionalProperties: true + errorConfig: + title: BIG-IP DO Processing Error + description: An error response caused by attempting to apply invalid config. + type: object + properties: + id: + description: Unique ID for task. + type: string + format: uuid + selfLink: + description: URI at which to fetch task on the device. + type: string + format: uri + code: + type: integer + enum: + - 422 + - 500 + status: + type: string + enum: + - ERROR + message: + type: string + errors: + type: array + items: + type: string + result: + $ref: '#/components/schemas/result' + declaration: + $ref: '#/components/schemas/device' + errorProcessing: + title: Bad declaration Error + description: An error response caused by a bad parameter or bad declaration. + type: object + properties: + code: + type: integer + message: + type: string + referer: + type: string + format: ipv4 + restOperationId: + type: integer + kind: + type: string + enum: + - ':resterrorresponse' + device: + $ref: base.schema.json + inspect: + title: Inspect + description: The current configuration of a device. + type: object + properties: + id: + type: string + format: uuid + selfLink: + type: string + format: uri + result: + $ref: '#/components/schemas/result' + declaration: + type: object + properties: + class: + type: string + enum: + - DO + declaration: + $ref: '#/components/schemas/device' + result: + title: Result + description: Standard result object in responses. + type: object + properties: + class: + type: string + enum: + - Result + code: + description: Status code. + type: integer + status: + description: Status string. + type: string + enum: + - OK + - ERROR + - ROLLING_BACK + - RUNNING + - REBOOTING + - REVOKING + message: + description: Overall result message. + type: string + errors: + description: Array of errors that occurred. + type: array + items: + type: string + task: + title: Task + description: The configuration status and associated declaration. + type: object + properties: + id: + description: Unique ID for task. + type: string + format: uuid + selfLink: + description: URI at which to fetch task on the device. + type: string + format: uri + message: + description: Overall result message. + type: string + errors: + description: Array of errors that occurred. + type: array + items: + type: string + result: + $ref: '#/components/schemas/result' + declaration: + $ref: '#/components/schemas/device' + currentConfig: + $ref: '#/components/schemas/configObject' + originalConfig: + $ref: '#/components/schemas/configObject' + examples: + errorConfig: + id: c098f4f1-d2a4-4c53-8728-7d1ce5567a4 + selfLink: 'https://localhost/mgmt/shared/appsvcs/task/c098f4f1-d2a4-4c53-8728-7d1ce5567a4' + code: 422 + status: ERROR + message: 'Error licensing: Invalid reg key' + errors: + - 'Invalid reg key' + result: + class: Result + code: 422 + status: ERROR + dryRun: false + message: 'Error licensing: Invalid reg key' + errors: + - 'Invalid reg key' + declaration: + class: Device + schemaVersion: 1.0.0 + async: true + Common: + class: Tenant + myLicense: + class: License + licenseType: regKey + regKey: AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE + errorNotFound: + code: 404, + message: 'java.net.ProtocolException: status:404, body:b1994382-8b2d-46c1-9e1b-44bd08925e7b does not exist' + referer: 172.18.6.16 + restOperationId: 46740167 + kind: :resterrorresponse + errorProcessing: + code: 400 + message: 'java.net.ProtocolException: status:400, body:DELETE is only supported for the config endpoint' + referer: '192.168.0.1' + restOperationId: 12345678 + kind: ':resterrorresponse' + task: + id: c098f4f1-d2a4-4c53-8728-7d1ce5567a4 + selfLink: 'https://localhost/mgmt/shared/appsvcs/task/c098f4f1-d2a4-4c53-8728-7d1ce5567a4' + result: + class: Result + code: 200 + status: OK + message: success + declaration: + class: Device + schemaVersion: 1.0.0 + async: true + Common: + class: Tenant + myLicense: + class: License + licenseType: regKey + regKey: AAAAA-BBBBB-CCCCC-DDDDD-EEEEEEE + responses: + 404: + description: ID not found. + content: + application/json: + schema: + title: 404 + description: Not found. + type: object + properties: + code: + type: integer + enum: + - 404 + message: + type: string + referer: + type: string + format: ipv4 + restOperationId: + type: integer + kind: + type: string + example: + $ref: '#/components/examples/errorNotFound' + 500: + description: Something went wrong internally and a bug report should be filed: https://github.com/F5Networks/f5-declarative-onboarding/issues/new/choose. + content: + application/json: + schema: + $ref: '#/components/schemas/errorProcessing' + example: + $ref: '#/components/examples/errorProcessing' diff --git a/src/schema/1.37.0/remote.schema.json b/src/schema/1.37.0/remote.schema.json new file mode 100644 index 00000000..37316c82 --- /dev/null +++ b/src/schema/1.37.0/remote.schema.json @@ -0,0 +1,202 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/remote.schema.json", + "title": "F5 BIG-IP Declarative Onboarding request declaration", + "description": "Wrapper for remote onboarding of a BIG-IP device using F5 BIG-IP Declarative Onboarding", + "type": "object", + "required": ["class", "declaration"], + "if": { + "required": ["targetPassphrase"] + }, + "then": { + "dependencies": { + "targetSshKey": { + "not": {} + } + } + }, + "else": { + "if": { + "required": ["targetSshKey"] + }, + "then": { + "dependencies": { + "targetPassphrase": { + "not": {} + } + } + } + }, + "properties": { + "class": { + "description": "Indicates that this is a BIG-IP Declarative Onboarding request", + "type": "string", + "const": "DO" + }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, + "targetHost": { + "description": "Hostname or IP address of ADC to which request applies (default localhost)", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" } + ], + "default": "localhost" + }, + "targetPort": { + "description": "TCP port number of management service on targetHost; default 0 means try common ports", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "targetUsername": { + "description": "Username of principal authorized to modify configuration of targetHost (may not include the character ':'). NOTE: this is generally not required to configure 'localhost' because client authentication and authorization precede invocation of BIG-IP DO. It is also not required for any targetHost if you populate targetTokens", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^[^:]{0,254}$" } + ] + }, + "targetPassphrase": { + "description": "Passphrase for targetUsername account. This is generally not required to configure 'localhost' and is not required when you populate targetTokens", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "targetSshKey": { + "description": "Private key for use in ssh operations. Corresponding public key must be in the targetUsername's ~/.ssh/authorized_keys file on the targetHost. This is only used to do initial account creation in environments where that is necessary. If this value is present, BIG-IP DO will look in the declaration for a user matching targetUsername and set its password via ssh.", + "type": "object", + "required": ["path"], + "properties": { + "path": { + "description": "Full path to private ssh key. File must be owned by restnoded.", + "type": "string" + } + }, + "additionalProperties": false + }, + "targetTokens": { + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'ABCABC') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "oneOf": [ + { + "description": "Pointer to tokens in a format that matches the 'object' schema below", + "type": "string", + "anyOf": [ + { "format": "json-pointer" } + ] + }, + { + "type": "object", + "patternProperties": { + "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]{0,8192}$" + } + }, + "additionalProperties": false + } + ] + }, + "targetTimeout": { + "description": "Maximum delay allowed while communicating with targetHost device (seconds, default 900)", + "type": "integer", + "minimum": 1, + "maximum": 900, + "default": 900 + }, + "bigIqSettings": { + "description": "Settings for the management of a BIG-IP which is onboarded via a BIG-IQ.", + "type": "object", + "properties": { + "snapshotWorkingConfig": { + "description": "Whether or not to snapshot the working configuration for current device before the import.", + "type": "boolean", + "default": false + }, + "accessModuleProperties": { + "description": "Key/value properties for importing access module. If apm module is not listed in provision section of current declaration, BIG-IQ will only discover/import ltm module.", + "type": "object", + "propertyNames": { + "description": "The name of the access module property." + }, + "additionalProperties": { + "description": "The value to set for the access module property." + } + }, + "failImportOnConflict": { + "description": "Whether or not to fail import task on conflicts.", + "type": "boolean", + "default": false + }, + "conflictPolicy": { + "description": "Conflict policy for shared objects. For Access, a shared import will Accept/USE_BIGIP for all shared and device-specific objects.", + "type": "string", + "enum": ["NONE", "USE_BIGIP", "USE_BIGIQ", "KEEP_VERSION"] + }, + "deviceConflictPolicy": { + "description": "Conflict policy for device-specific objects. For Access, a device-specific import will Accept/USE_BIGIP for all device-specific objects. If value not provided the value will be the same as conflictPolicy.", + "type": "string", + "enum": ["NONE", "USE_BIGIP", "USE_BIGIQ", "KEEP_VERSION"] + }, + "versionedConflictPolicy": { + "description": "Conflict policy for version-specific objects. This is used for all the devices for which device specific versionedConflictPolicy is not specified. If value not provided the value will be the same as conflictPolicy.", + "type": "string", + "enum": ["NONE", "USE_BIGIP", "USE_BIGIQ", "KEEP_VERSION"] + }, + "clusterName": { + "description": "Cluster display name on BIG-IQ.", + "type": "string" + }, + "useBigiqSync": { + "description": "Instead of using the BIG-IP cluster sync to synchronize cluster devices configuration, use BIG-IQ to push changes to cluster devices during deployment.", + "type": "boolean" + }, + "deployWhenDscChangesPending": { + "description": "Deploy when there are pending DSC changes on BIG-IP.", + "type": "boolean" + }, + "statsConfig": { + "description": "Options for configuring http analytics/avr on BIG-IQ.", + "type": "object", + "required": ["enabled"], + "properties": { + "enabled": { + "description": "Whether or not to enable collecting statistics for this device", + "type": "boolean", + "default": false + }, + "zone": { + "description": "User-defined names that associate BIG-IP devices with one or more data collection device (DCD) systems to provide optimal routing for statistics traffic.", + "type": "string", + "default": "default" + } + } + } + }, + "allOf": [ + { + "if": { + "required": ["failImportOnConflict"], + "properties": { "failImportOnConflict": { "const": false }} + }, + "then": { + "required": ["conflictPolicy"] + } + } + ] + }, + "declaration": { + "description": "Declaration to deploy to targetHost", + "$ref": "base.schema.json#" + } + }, + "additionalProperties": false +} diff --git a/src/schema/1.37.0/security.schema.json b/src/schema/1.37.0/security.schema.json new file mode 100644 index 00000000..bb610f79 --- /dev/null +++ b/src/schema/1.37.0/security.schema.json @@ -0,0 +1,162 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/security.schema.json", + "title": "F5 BIG-IP Declarative Onboarding security declaration", + "description": "Security properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SecurityAnalytics" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains SecurityAnalytics configuration.", + "type": "string", + "const": "SecurityAnalytics" + }, + "aclRules": { + "description": "Firewall (ACL) security statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": " Specifies whether source/client IP address should be collected for ACL rule matching.", + "type": "boolean", + "default": true + }, + "collectClientPortEnabled": { + "description": "Specifies whether source/client port should be collected for ACL rule matching.", + "type": "boolean", + "default": false + }, + "collectDestinationIpEnabled": { + "description": "Specifies whether the destination IP address should be collected for ACL rule matching.", + "type": "boolean", + "default": true + }, + "collectDestinationPortEnabled": { + "description": "Specifies whether the destination port should be collected for ACL rule matching.", + "type": "boolean", + "default": true + }, + "collectServerSideStatsEnabled": { + "description": "Specifies whether server side statistics (source address translation information, self IP address and pool member address) should be collected for ACL rule matching.", + "type": "boolean", + "default": false + } + } + }, + "collectAllDosStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of all DoS statistics.", + "type": "boolean", + "default": false + }, + "collectedStatsExternalLoggingEnabled": { + "description": "Specifies whether to enable or disable external logging of collected statistics.", + "type": "boolean", + "default": false + }, + "collectedStatsInternalLoggingEnabled": { + "description": "Specifies whether to enable or disable internal logging of collected statistics.", + "type": "boolean", + "default": false + }, + "dns": { + "description": "DNS security statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": "Specifies whether source/client IP address should be collected for DNS security.", + "type": "boolean", + "default": true + }, + "collectDestinationIpEnabled": { + "description": "Specifies whether the destination IP address should be collected for DNS security.", + "type": "boolean", + "default": true + } + } + }, + "collectDnsStatsEnabled": { + "description": "Specifies whether to enable or disable DNS statistics collection.", + "type": "boolean", + "default": true + }, + "dosL2L4": { + "description": "Network DoS statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": "Specifies whether source/client IP address should be collected for network layer's DoS security.", + "type": "boolean", + "default": true + }, + "collectDestinationGeoEnabled": { + "description": "Specifies whether the destination geo should be collected for network layer's DoS security.", + "type": "boolean", + "default": true + } + } + }, + "collectDosL3StatsEnabled": { + "description": "Specifies whether to enable or disable the collection of DoS L3 statistics.", + "type": "boolean", + "default": true + }, + "collectFirewallAclStatsEnabled": { + "description": "Specifies whther to enable or disable the collection of firewall ACL statistics.", + "type": "boolean", + "default": true + }, + "collectFirewallDropsStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of firewall drops statistics.", + "type": "boolean", + "default": true + }, + "collectIpReputationStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of IP reputation statistics.", + "type": "boolean", + "default": true + }, + "l3L4Errors": { + "description": "Firewall errors statistics collection options.", + "type": "object", + "properties": { + "collectClientIpEnabled": { + "description": "Specifies whether source/client IP address should be collected for firewall errors.", + "type": "boolean", + "default": true + }, + "collectDestinationIpEnabled": { + "description": "Specifies whether the destination IP address should be collected for firewall errors.", + "type": "boolean", + "default": true + } + } + }, + "publisher": { + "description": "Specifies the external logging publisher used to send statistical data to one or more destinations.", + "type": "string" + }, + "collectSipStatsEnabled": { + "description": "Specifies whether to enable or disable the collection of SIP statistics.", + "type": "boolean", + "default": true + }, + "smtpConfig": { + "description": "Specifies the default SMTP configuration used for exporting CSV or PDF security analytics reports.", + "type": "string" + }, + "collectStaleRulesEnabled": { + "description": "Specifies whether statistics about all firewall rules should be collected in order to present information regarding rule staleness.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + } + } + ] +} diff --git a/src/schema/1.37.0/system.schema.json b/src/schema/1.37.0/system.schema.json new file mode 100644 index 00000000..5c2d607d --- /dev/null +++ b/src/schema/1.37.0/system.schema.json @@ -0,0 +1,1457 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/F5Networks/f5-declarative-onboarding/master/src/schema/latest/system.schema.json", + "title": "F5 BIG-IP Declarative Onboarding system declaration", + "description": "System properties for onboarding a BIG-IP.", + "allOf": [ + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DeviceCertificate" } } + }, + "then": { + "description": "PKI certificate with optional chain", + "required": ["class", "certificate"], + "allOf": [ + { + "properties": { + "class": { + "description": "Indicates that this property contains device certificate information", + "type": "string", + "const": "DeviceCertificate" + } + } + }, + { "$ref": "definitions.schema.json#/definitions/pkiCertificate" } + ] + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "License" } } + }, + "then": { + "oneOf": [ + { "$ref": "#/definitions/regKeyInfo" }, + { "$ref": "#/definitions/licensePoolInfo" } + ], + "if": { + "required": ["licenseType"], + "properties": { "licenseType": { "const": "licensePool" } } + }, + "then": { + "properties": { + "unitOfMeasure": { + "default": "monthly" + } + } + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DbVariables" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains global db variable configuration.", + "type": "string", + "const": "DbVariables" + } + }, + "propertyNames": { + "description": "The name of the db variable." + }, + "additionalProperties": { + "description": "The value to set for the db variable." + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "Provision" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains module provisioning configuration.", + "type": "string", + "const": "Provision" + } + }, + "propertyNames": { + "description": "The module to provision. Note: 'cgnat' is only supported on TMOS v15+", + "enum": [ + "class", + "afm", + "am", + "apm", + "asm", + "avr", + "cgnat", + "dos", + "fps", + "gtm", + "ilx", + "lc", + "ltm", + "pem", + "swg", + "urldb", + "sslo" + ] + }, + "additionalProperties": { + "description": "The level at which to provision the module.", + "type": "string", + "enum": ["dedicated", "nominal", "minimum", "none"] + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "DNS" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains DNS configuration.", + "type": "string", + "const": "DNS" + }, + "nameServers": { + "description": "IP addresses of name servers to use for DNS.", + "type": "array", + "items": { + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" } + ] + } + }, + "search": { + "description": "Search domain to use for DNS.", + "type": "array", + "items": { + "type": "string", + "format": "hostname" + } + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "NTP" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains NTP configuration.", + "type": "string", + "const": "NTP" + }, + "servers": { + "description": "IP addresses of servers to use for NTP.", + "type": "array", + "items": { + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" } + ] + } + }, + "timezone": { + "description": "The timezone to set.", + "type": "string", + "default": "UTC" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "HTTPD" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Configures the HTTP daemon for the system. Important: F5 Networks recommends that users of the Configuration utility exit the utility before changes are made to the system using the httpd component. This is because making changes to the system using this component causes a restart of the httpd daemon. Additionally, restarting the httpd daemon creates the necessity for a restart of the Configuration utility.", + "type": "string", + "const": "HTTPD" + }, + "allow": { + "description": "Configures IP addresses for the HTTP clients from which the httpd daemon accepts requests.", + "oneOf": [ + { + "type": "string", + "enum": [ + "all", + "none" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "anyOf": [ + { "format": "ipWithOptionalPrefix" }, + { "const": "all" } + ] + } + } + ], + "default": "all" + }, + "authPamIdleTimeout": { + "description": "Specifies the number of seconds of inactivity that can elapse before the GUI session is automatically logged out.", + "type": "integer", + "minimum": 120, + "maximum": 2147483647, + "default": 1200 + }, + "maxClients": { + "description": "Maximum number of clients allowed to be simultaneously connected.", + "type": "integer", + "minimum": 10, + "maximum": 256, + "default": 10 + }, + "sslCiphersuite": { + "description": "Specifies the ciphers that the system uses.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9A-Za-z!:\\-+.~@$%^&*()_=\\[\\]|]+$" + }, + "default": [ + "ECDHE-RSA-AES128-GCM-SHA256", + "ECDHE-RSA-AES256-GCM-SHA384", + "ECDHE-RSA-AES128-SHA", + "ECDHE-RSA-AES256-SHA", + "ECDHE-RSA-AES128-SHA256", + "ECDHE-RSA-AES256-SHA384", + "ECDHE-ECDSA-AES128-GCM-SHA256", + "ECDHE-ECDSA-AES256-GCM-SHA384", + "ECDHE-ECDSA-AES128-SHA", + "ECDHE-ECDSA-AES256-SHA", + "ECDHE-ECDSA-AES128-SHA256", + "ECDHE-ECDSA-AES256-SHA384", + "AES128-GCM-SHA256", + "AES256-GCM-SHA384", + "AES128-SHA", + "AES256-SHA", + "AES128-SHA256", + "AES256-SHA256" + ] + }, + "sslProtocol": { + "description": "The list of SSL protocols to accept on the management console. A space-separated list of tokens in the format accepted by the Apache mod_ssl SSLProtocol directive.", + "type": "string", + "default": "all -SSLv2 -SSLv3 -TLSv1" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SnmpAgent" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains basic SNMP agent configuration.", + "type": "string", + "const": "SnmpAgent" + }, + "contact": { + "description": "The name of the person who administers the SNMP service for this system.", + "type": "string" + }, + "location": { + "description": "The description of this system's physical location.", + "type": "string" + }, + "allowList": { + "description": "Allowed client IP addresses.", + "type": "array", + "items": { + "type": "string", + "format": "f5ip" + } + }, + "snmpV1": { + "description": "Enables snmpd daemon support of snmpV1 queries.", + "type": "boolean", + "default": true + }, + "snmpV2c": { + "description": "Enables snmpd daemon support of snmpV2c queries.", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SnmpCommunity" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains SNMP v1 or v2c community configuration.", + "type": "string", + "const": "SnmpCommunity" + }, + "ipv6": { + "description": "Specifies whether the record applies to IPv6 addresses.", + "type": "boolean", + "default": false + }, + "source": { + "description": "Specifies the source address for access to the MIB.", + "type": "string" + }, + "oid": { + "description": "Specifies the current object identifier (OID) for the record.", + "type": "string" + }, + "access": { + "description": "Whether the user's access level to the MIB is readOnly.", + "type": "string", + "enum": [ "ro", "rw" ], + "default": "ro" + }, + "name": { + "description": "Overrides using the object name as the community name. Use this if you want special characters in the community name.", + "type": "string" + } + }, + "if": { + "required": ["oid"] + }, + "then": { + "required": ["source"] + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SnmpUser" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains SNMP v3 user configuration.", + "type": "string", + "const": "SnmpUser" + }, + "authentication": { + "description": "Specifies the user's authentication method and password.", + "type": "object", + "required": [ "protocol", "password" ], + "properties": { + "protocol": { + "description": "Authentication protocol.", + "type": "string", + "enum": ["sha", "md5"], + "default": "sha" + }, + "password": { + "description": "Specifies the password for the user.", + "type": "string" + } + }, + "additionalProperties": false + }, + "privacy": { + "description": "Specifies the privacy protcol to use to deliver authentication information for this user.", + "type": "object", + "required": [ "protocol", "password" ], + "properties": { + "protocol": { + "description": "Specifies the encryption protocol.", + "type": "string", + "enum": ["aes", "des"], + "default": "aes" + }, + "password": { + "description": "Specifies the password for the user.", + "type": "string" + } + } + }, + "oid": { + "description": "Specifies the current object identifier (OID) for the record.", + "type": "string", + "default": ".1" + }, + "access": { + "description": "Whether the user's access level to the MIB is readOnly.", + "type": "string", + "enum": ["ro", "rw"], + "default": "ro" + }, + "name": { + "description": "Overrides using the object name as the username. Use this if you want special characters in the username.", + "type": "string" + } + }, + "additionalProperties": false, + "if": { + "required": [ "privacy" ] + }, + "then": { + "required": [ "authentication" ] + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SnmpTrapEvents" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates that this property contains SNMP trap configuration.", + "type": "string", + "const": "SnmpTrapEvents" + }, + "agentStartStop": { + "description": "Indicates whether to send a trap when the SNMP agent starts/stops.", + "type": "boolean", + "default": true + }, + "authentication": { + "description": "Indicates whether to send authentication warning traps.", + "type": "boolean", + "default": false + }, + "device": { + "description": "Indicates whether to send device warning traps.", + "type": "boolean", + "default": true + } + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SnmpTrapDestination" } } + }, + "then": { + "required": ["class", "version", "destination", "port", "network"], + "properties": { + "class": { + "description": "Indicates that this property contains SNMP trap configuration.", + "type": "string", + "const": "SnmpTrapDestination" + }, + "version": { + "description": "Specifies to which Simple Network Management Protocol (SNMP) version the trap destination applies.", + "type": "string", + "enum": ["1", "2c", "3"], + "default": "2c" + }, + "destination": { + "description": "Specifies the address for the trap destination.", + "type": "string", + "oneOf": [ + { "format": "ipv4" }, + { "format": "ipv6" } + ] + }, + "port": { + "description": "Specifies the port for the trap destination.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 162 + }, + "network": { + "description": "Specifies the trap network. The system sends the SNMP trap out the specified network. 'management' specifies that the system sends the trap out of the management IP address. 'other' specifies that the system sends the trap out of the interface based on the routing tables.", + "type": "string", + "enum": ["management", "other"], + "default": "management" + } + }, + "if": { + "required": ["version"], + "properties": { "version": { "const" : "3" } } }, + "then": { + "required": ["securityName", "authentication"], + "properties": { + "securityName": { + "description": "Specifies the user name the system uses to handle SNMP v3 traps.", + "type": "string" + }, + "authentication": { + "description": "Specifies the user's authentication method and password.", + "type": "object", + "required": [ "protocol", "password" ], + "properties": { + "protocol": { + "description": "Authentication protocol.", + "type": "string", + "enum": ["sha", "md5"] + }, + "password": { + "description": "Specifies the password for the user.", + "type": "string" + } + }, + "additionalProperties": false + }, + "privacy": { + "description": "Specifies the privacy protcol to use to deliver authentication information for this user.", + "type": "object", + "properties": { + "protocol": { + "description": "Specifies the encryption protocol.", + "type": "string", + "enum": ["aes", "des"] + }, + "password": { + "description": "Specifies the password for the user.", + "type": "string" + } + } + }, + "engineId": { + "description": "Specifies the unique identifier (snmpEngineID) of the remote SNMP protocol engine.", + "type": "string" + } + } + }, + "else": { + "required": ["community"], + "properties": { + "community": { + "description": "Specifies the community name for the trap destination.", + "type": "string" + } + } + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "User" } } + }, + "then": { + "if": { + "properties": { "userType": { "const": "root" } } + }, + "then": { + "required": ["class", "userType", "newPassword", "oldPassword"], + "properties": { + "class": { + "description": "Indicates that this property contains user configuration.", + "type": "string", + "const": "User" + }, + "userType": { + "description": "The type of user.", + "type": "string", + "const": "root" + }, + "newPassword": { + "description": "Password to set for the root user.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "oldPassword": { + "description": "Old password for the root user.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "keys": { + "description": "An array of public keys for the user. If the user is root, this will preserve only the master key and then overwrite the rest in the file: /root/.ssh/authorized_keys.", + "type": "array", + "items": { + "type": "string" + } + }, + "forceInitialPasswordChange": { + "description": "Determines if a password change will be required on the first user login.", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "else": { + "required": ["class", "userType"], + "properties": { + "class": { + "description": "Indicates that this property contains user configuration.", + "type": "string", + "const": "User" + }, + "userType": { + "description": "The type of user.", + "type": "string", + "const": "regular" + }, + "password": { + "description": "Password for the user.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "partitionAccess": { + "description": "Access control configuration.", + "type": "object", + "properties": { + "Common": { + "$ref": "#/definitions/partitionAccess" + }, + "all-partitions": { + "$ref": "#/definitions/partitionAccess" + } + }, + "additionalProperties": false + }, + "shell": { + "description": "Shell for the user.", + "type": "string", + "enum": ["bash", "tmsh", "none"], + "default": "tmsh" + }, + "keys": { + "description": "An array of public keys for the user. These will overwrite the /home/username/.ssh/authorized_keys if not root.", + "type": "array", + "items": { + "type": "string" + } + }, + "forceInitialPasswordChange": { + "description": "Determines if a password change will be required on the first user login.", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "ManagementIp" } } + }, + "then": { + "required": ["class", "address"], + "properties": { + "class": { + "description": "Indicates this property contains management IP configuration. Note that if you set this you will have to poll for status on the new address.", + "type": "string", + "const": "ManagementIp" + }, + "address": { + "description": "IP address.", + "type": "string", + "format": "ipWithRequiredPrefix" + }, + "remark": { + "description": "To handle rollback to a dynamically configured address, do not set this to 'configured-by-dhcp'", + "$ref": "definitions.schema.json#/definitions/Remark", + "default": "configured-statically by DO" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "ManagementRoute" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates this property contains management route configuration", + "type": "string", + "const": "ManagementRoute" + }, + "remark": { + "$ref": "definitions.schema.json#/definitions/Remark" + }, + "gw": { + "description": "Gateway for the management route.", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" } + ] + }, + "network": { + "description": "IP address/netmask for the management route", + "type": "string", + "anyOf": [ + { "format": "f5ip" }, + { "enum": ["default", "default-inet6"]} + ], + "default": "default" + }, + "mtu": { + "description": "MTU for the management route.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "type": { + "description": "Type of the management route", + "type": "string", + "enum": [ + "interface", + "blackhole" + ] + } + }, + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "network": { + "not": { + "enum": ["default", "default-inet6"] + } + }, + "type": { + "not": { + "enum": ["interface", "blackhole"] + } + } + } + }, + "then": { + "required": ["gw"] + } + }, + { + "if": { + "required": ["type"] + }, + "then": { + "dependencies": { + "gw": { + "not": {} + } + } + } + } + ] + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SyslogRemoteServer" } } + }, + "then": { + "required": ["class", "host"], + "properties": { + "class": { + "description": "Indicates that this property contains Syslog Remote Server Information", + "type": "string", + "const": "SyslogRemoteServer" + }, + "host": { + "description": "Specifies the IP address of a remote server to which syslog sends messages.", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" } + ] + }, + "localIp": { + "description": "Specifies the IP address of the interface syslog binds with in order to log messages to a remote host.", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" } + ] + }, + "remotePort": { + "description": "Specifies the port to which the syslog sends messages.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 514 + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "System" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates this property contains global system settings", + "type": "string", + "const": "System" + }, + "hostname": { + "description": "Hostname to set for the device. Note: If you set the hostname as part of the Common class, you CANNOT set a hostname in the System class (they are mutually exclusive).", + "type": "string", + "format": "hostname", + "default": "bigip1" + }, + "consoleInactivityTimeout": { + "description": "Configure automatic logout for idle serial console sessions (command line sessions) in seconds. The default value 0 means that no timeout is set.", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "cliInactivityTimeout": { + "description": "Configure automatic logout for idle users in TMSH interactive mode. A setting other than 0 automatically logs a user out after a specified number of seconds, which must be entered in multiples of 60. The default value 0 means that no timeout is set.", + "type": "integer", + "minimum": 0, + "maximum": 128849018820, + "multipleOf": 60, + "default": 0 + }, + "autoPhonehome": { + "description": "Enables the BIG-IP system to send non-confidential, high-level device information to F5 in order to help determine product usage to optimize product development.", + "type": "boolean", + "default": true + }, + "autoCheck": { + "description": "Enables the BIG-IP system to check for and recommend software updates.", + "type": "boolean", + "default": true + }, + "tmshAuditLog": { + "description": "Enables audit logging for tmsh.", + "type": "boolean", + "default": true + }, + "guiAuditLog": { + "description": "Enables audit logging for the GUI. Only available on TMOS v14+", + "type": "boolean", + "default": false + }, + "mcpAuditLog": { + "description": "Enables audit logging for MCP.", + "type": "string", + "enum": [ + "disable", + "enable", + "verbose", + "all" + ], + "default": "enable" + }, + "preserveOrigDhcpRoutes": { + "description": "Determines if DHCP ManagementRoute objects are preserved.", + "type": "boolean", + "default": false + }, + "mgmtDhcpEnabled": { + "description": "Determines if Management DHCP is enabled or not.", + "type": "boolean" + }, + "guiSecurityBanner": { + "description": "Specifies whether the system presents on the login screen the text you specify in guiSecurityBannerText. If you disable this option, the system presents an empty frame in the right portion of the login screen.", + "type": "boolean", + "default": true + }, + "guiSecurityBannerText": { + "description": "Specifies the text to present on the login screen when the guiSecurityBanner is enabled.", + "type": "string", + "default": "Welcome to the BIG-IP Configuration Utility.\n\nLog in with your username and password using the fields on the left." + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "TrafficControl" } } + }, + "then": { + "required": ["class"], + "properties": { + "class": { + "description": "Indicates this property contains traffic control configuration", + "type": "string", + "const": "TrafficControl" + }, + "acceptIpOptions": { + "description": "Specifies whether the system accepts IPv4 packets with IP Options.", + "type": "boolean", + "default": false + }, + "acceptIpSourceRoute": { + "description": "Specifies whether the system accepts IPv4 packets with IP source route options that are destined for TMM. To enable this option, you must also enable the acceptIpOptions option.", + "type": "boolean", + "default": false + }, + "allowIpSourceRoute": { + "description": "Specifies whether the system allows IPv4 packets with IP source route options enabled to be routed through TMM. To enable this option, you must also enable the acceptIpOptions option.", + "type": "boolean", + "default": false + }, + "continueMatching": { + "description": "Specifies whether the system matches against a less-specific virtual server when the more-specific one is disabled or rejects / drops the packets depending on the value of rejectUnmatched.", + "type": "boolean", + "default": false + }, + "maxIcmpRate": { + "description": "Specifies the maximum rate per second at which the system issues ICMP errors.", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 100 + }, + "maxPortFindLinear": { + "description": "Specifies the maximum of ports to linearly search for outbound connections", + "type": "integer", + "minimum": 0, + "maximum": 61439, + "default": 16 + }, + "maxPortFindRandom": { + "description": "Specifies the maximum of ports to randomly search for outbound connections", + "type": "integer", + "minimum": 0, + "maximum": 1024, + "default": 16 + }, + "maxRejectRate": { + "description": "Specifies the maximum rate per second at which the system issues reject packets (TCP RST or ICMP port unreach).", + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 250 + }, + "maxRejectRateTimeout": { + "description": "Specifies the time in seconds which the system ignores ICMP port unreach and TCP RST ratelimits on becoming active after a failover.", + "type": "integer", + "minimum": 0, + "maximum": 300, + "default": 30 + }, + "minPathMtu": { + "description": "Specifies the minimum packet size that can traverse the path without suffering fragmentation", + "type": "integer", + "minimum": 68, + "maximum": 1500, + "default": 296 + }, + "pathMtuDiscovery": { + "description": "Specifies that the system discovers the MTU that it can send over a path without fragmenting TCP packets", + "type": "boolean", + "default": true + }, + "portFindThresholdWarning": { + "description": "Specifies if the ephemeral port-exhaustion threshold warning is to be monitored.", + "type": "boolean", + "default": true + }, + "portFindThresholdTrigger": { + "description": "Specifies the threshold warning's trigger which is the value of random port attempts when attempting to find an unused outbound port for a connection.", + "type": "integer", + "minimum": 1, + "maximum": 12, + "default": 8 + }, + "portFindThresholdTimeout": { + "description": "Specifies the threshold warning's timeout which is the time in seconds since the last trigger value was hit and will drop the tuple if not hit.", + "type": "integer", + "minimum": 0, + "maximum": 300, + "default": 30 + }, + "rejectUnmatched": { + "description": "Specifies, when enabled, that the system returns a TCP RST or ICMP port unreach packet if no virtual servers on the system match the destination address of the incoming packet. When disabled, the system silently drops the unmatched packet.", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "dependencies": { + "acceptIpSourceRoute": { + "if": { + "required": ["acceptIpSourceRoute"], + "properties": { "acceptIpSourceRoute": { "const": true } } + }, + "then": { + "required": ["acceptIpOptions"], + "properties": { "acceptIpOptions": { "const": true } } + } + }, + "allowIpSourceRoute": { + "if": { + "required": ["allowIpSourceRoute"], + "properties": { "allowIpSourceRoute": { "const": true } } + }, + "then": { + "required": ["acceptIpOptions"], + "properties": { "acceptIpOptions": { "const": true } } + } + } + } + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "SSHD" } } + }, + "then": { + "properties": { + "class": { + "description": "Indicates this contains SSH configuration.", + "type": "string", + "const": "SSHD" + }, + "allow": { + "description": "Specifies the list of IP addresses that are allowed to log in to the system. Allow all addresses by using the 'all' value or disallow all addresses using the 'none' value.", + "oneOf": [ + { + "type": "string", + "enum": [ + "all", + "none" + ] + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "banner": { + "description": "Enables or disabled the display of the banner text field when a user logs in.", + "type": "string" + }, + "ciphers": { + "description": "Specifies the ciphers to be included.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "3des-cbc", + "aes128-ctr", + "aes192-ctr", + "aes256-ctr", + "aes128-cbc", + "aes192-cbc", + "aes256-cbc", + "aes128-gcm@openssh.com", + "aes256-gcm@openssh.com", + "arcfour", + "arcfour128", + "arcfour256", + "blowfish-cbc", + "cast128-cbc", + "chacha20-poly1305@openssh.com" + ] + } + }, + "inactivityTimeout": { + "description": "Specifies the number of seconds before inactivity causes an SSH session to log out.", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 2147483647 + }, + "loginGraceTime": { + "description": "Specifies the login grace period that will be included. This is in the number of seconds.", + "type": "integer" + }, + "MACS": { + "description": "Specifies the MACs that will be included.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "hmac-sha1", + "hmac-ripemd160", + "hmac-md5", + "hmac-md5-96", + "hmac-sha1-96", + "hmac-sha2-256", + "hmac-sha2-512", + "hmac-md5-etm@openssh.com", + "hmac-md5-96-etm@openssh.com", + "hmac-ripemd160-etm@openssh.com", + "hmac-sha1-etm@openssh.com", + "hmac-sha1-96-etm@openssh.com", + "hmac-sha2-256-etm@openssh.com", + "hmac-sha2-512-etm@openssh.com", + "umac-64@openssh.com", + "umac-128@openssh.com", + "umac-64-etm@openssh.com", + "umac-128-etm@openssh.com" + ] + } + }, + "kexAlgorithms": { + "description": "Specifies the KexAlgorithms that will be included.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "diffie-hellman-group1-sha1", + "diffie-hellman-group14-sha1", + "diffie-hellman-group14-sha256", + "diffie-hellman-group16-sha512", + "diffie-hellman-group18-sha512", + "diffie-hellman-group-exchange-sha1", + "diffie-hellman-group-exchange-sha256", + "ecdh-sha2-nistp256", + "ecdh-sha2-nistp384", + "ecdh-sha2-nistp521", + "curve25519-sha256", + "curve25519-sha256@libssh.org", + "gss-gex-sha1-", + "gss-group1-sha1-", + "gss-group14-sha1-" + ] + } + }, + "maxAuthTries": { + "description": "Specifies the max auth tries to be included.", + "type": "integer" + }, + "maxStartups": { + "description": "Specifies the max startups to include.", + "type": "string" + }, + "protocol": { + "description": "Specifies the protocol to be included.", + "type": "integer", + "minimum": 1, + "maximum": 2 + } + }, + "additionalProperties": false + } + }, + { + "if": { + "required": ["class"], + "properties": { "class": { "const": "Disk" } } + }, + "then": { + "properties": { + "class": { + "description": "Indicates this contains Disk configuration. This API is experimental and subject to change.", + "type": "string", + "const": "Disk" + }, + "applicationData": { + "description": "Specifies the size in kilobytes for the application data. This size should be less than the current size. This API is experimental and subject to change.", + "type": "integer", + "minimum": 0, + "multipleOf": 4096 + } + }, + "additionalProperties": false + } + } + ], + "definitions": { + "partitionAccess": { + "description": "The partition - either 'Common' or 'all-partitions'.", + "type": "object", + "required": ["role"], + "properties": { + "role": { + "description": "Role for the user.", + "type": "string", + "enum": [ + "admin", + "auditor", + "guest", + "manager", + "operator", + "user-manager", + "application-editor", + "certificate-manager", + "irule-manager", + "no-access", + "resource-admin" + ] + } + }, + "additionalProperties": false + }, + "regKeyInfo": { + "description": "Registration key information.", + "required": ["class", "licenseType", "regKey"], + "properties": { + "class": { + "description": "Indicates that this property contains licensing information.", + "type": "string", + "const": "License" + }, + "licenseType": { + "description": "The type of license", + "type": "string", + "const": "regKey" + }, + "regKey": { + "description": "Registration key.", + "type": "string", + "pattern": "^([A-Z]{5}-[A-Z]{5}-[A-Z]{5}-[A-Z]{5}-[A-Z]{7})|([A-Z][0-9]{4}-[0-9]{5}-[0-9]{5}-[0-9]{5}-[0-9]{7})$" + }, + "addOnKeys": { + "description": "Add on keys.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Z]{7}-[A-Z]{7}$", + "uniqueItems": true + } + }, + "overwrite": { + "description": "Whether or not to overwrite the license if the device is already licensed.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "licensePoolInfo": { + "required": ["class", "licenseType"], + "if": { + "required": ["reachable"], + "properties": { "reachable": { "const": false }} + }, + "then": { + "if": { + "required": ["licensePool"] + }, + "then": { + "required": ["hypervisor"] + } + }, + "else": { + "not": { "required": ["tenant"] }, + "if": { + "required": ["licensePool"] + }, + "then": { + "required": ["bigIpUsername", "bigIpPassword"] + } + }, + "properties": { + "class": { + "description": "Indicates that this property contains licensing information.", + "type": "string", + "const": "License" + }, + "licenseType": { + "description": "The type of license", + "type": "string", + "const": "licensePool" + }, + "licensePool": { + "description": "Name of the BIG-IQ license pool from which to get a new license.", + "type": "string" + }, + "skuKeyword1": { + "description": "skuKeyword1 parameter for subscription licensing.", + "type": "string" + }, + "skuKeyword2": { + "description": "skuKeyword2 parameter for subscription licensing.", + "type": "string" + }, + "unitOfMeasure": { + "description": "unitOfMeasure parameter for subscription licensing.", + "type": "string", + "enum": ["yearly", "monthly", "daily", "hourly"] + }, + "hypervisor": { + "description": "Hypervisor which is running the BIG-IP. Required by BIG-IQ if 'reachable' is false.", + "type": "string", + "oneOf": [ + { "enum": ["aws", "azure", "gce", "vmware", "hyperv", "kvm", "xen", "alibaba"] }, + { "pattern": "0x[0-9a-zA-Z]*" } + ] + }, + "bigIpUsername": { + "description": "An admin user on the BIG-IP. Used by BIG-IQ to login to BIG-IP if 'reachable' is true.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "bigIpPassword": { + "description": "Password for the user in bigIpUsername. Used by BIG-IQ to login to BIG-IP if 'reachable' is true.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "chargebackTag": { + "description": "An optional text string which can be used as a charge back tag.", + "type": "string" + }, + "overwrite": { + "description": "Whether or not to overwrite the license if the device is already licensed.", + "type": "boolean", + "default": false + }, + "revokeFrom": { + "description": "Current license should be revoked from the pool specified. Either just the name of the pool (if old license is on the same BIG-IQ as in the main License section) or full licensePoolInfo (if old license is on a different BIG-IQ)", + "oneOf": [ + { "type": "string" }, + { + "required": ["licensePool"], + "properties": { + "licensePool": { + "description": "Name of the BIG-IQ license pool.", + "type": "string" + } + }, + "allOf": [ + { "$ref": "#/definitions/bigIqHostInfo" } + ] + } + ] + }, + "tenant": { + "description": "An optional description for the license. Can be useful in a clustered environment. Requires that reachable is set to false.", + "type": "string" + } + }, + "allOf": [ + { "$ref": "#/definitions/bigIqHostInfo" } + ] + }, + "bigIqHostInfo": { + "description": "BIG-IQ host/credentials information", + "type": "object", + "allOf": [ + { + "if": { + "required": ["bigIqPassword"] + }, + "then": { + "dependencies": { + "bigIqPasswordUri": { + "not": {} + } + } + } + }, + { + "if": { + "required": ["bigIqHost"] + }, + "then": { + "if": { "not": {"properties": { "bigIqHost": { "const": "localhost" } } } }, + "then": { + "required": ["bigIqUsername"], + "oneOf": [ + { "required": ["bigIqPassword"] }, + { "required": ["bigIqPasswordUri"] } + ] + } + } + } + ], + "properties": { + "bigIqHost": { + "description": "The BIG-IQ hostname or IP address.", + "type": "string", + "anyOf": [ + { "format": "ipv4" }, + { "format": "ipv6" }, + { "format": "hostname" } + ] + }, + "bigIqUsername": { + "description": "An admin user on the BIG-IQ.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^[^:]{0,254}$" } + ] + }, + "bigIqPassword": { + "description": "Password for the user in bigIqUsername.", + "type": "string", + "anyOf": [ + { "format": "json-pointer" }, + { "pattern": "^.{0,254}$" } + ] + }, + "bigIqPasswordUri": { + "description": "URI which will return the password for the user in bigIqUsername.", + "type": "string", + "format": "uri" + }, + "bigIqAuthProvider": { + "description": "Name of auth provider on BIG-IQ. Default is to use TMOS.", + "type": "string" + }, + "reachable": { + "description": "Whether or not BIG-IQ has a route to the BIG-IP device.", + "type": "boolean", + "default": true + } + } + } + } +} From 11a176485928e5b999d579ae6744dfd83ab26fdb Mon Sep 17 00:00:00 2001 From: ansmith Date: Tue, 14 Mar 2023 17:09:16 +0000 Subject: [PATCH 22/22] bump 1.37.0-3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b1132cf..76c8d00d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.37.0-2", + "version": "1.37.0-3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index be6f2e2a..8287502c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "f5-declarative-onboarding", - "version": "1.37.0-2", + "version": "1.37.0-3", "description": "F5 Declarative Onboarding", "main": "index.js", "repository": {