From 0ad9c422c98ea670a4366f0727debb270e100c50 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 17 Jan 2023 16:50:53 +0100 Subject: [PATCH 1/4] chore: updating dependencies to force yarn.locks to use compatible versions. Signed-off-by: blam --- plugins/scaffolder-react/package.json | 8 +++--- plugins/scaffolder/package.json | 4 +-- yarn.lock | 38 +++++++++++++-------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index b115437e33..33eb8324d6 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -47,11 +47,11 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@rjsf/core": "^3.2.1", - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.14", + "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16", "@rjsf/material-ui": "^3.2.1", - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@^5.0.0-beta.14", - "@rjsf/utils": "^5.0.0-beta.14", - "@rjsf/validator-ajv6": "^5.0.0-beta.14", + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@^5.0.0-beta.16", + "@rjsf/utils": "^5.0.0-beta.16", + "@rjsf/validator-ajv6": "^5.0.0-beta.16", "@types/json-schema": "^7.0.9", "classnames": "^2.2.6", "json-schema": "^0.4.0", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 2a113dea11..145c9c53cc 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -56,9 +56,9 @@ "@material-ui/lab": "4.0.0-alpha.57", "@react-hookz/web": "^20.0.0", "@rjsf/core": "^3.2.1", - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.14", + "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16", "@rjsf/material-ui": "^3.2.1", - "@rjsf/utils": "^5.0.0-beta.14", + "@rjsf/utils": "^5.0.0-beta.16", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", "git-url-parse": "^13.0.0", diff --git a/yarn.lock b/yarn.lock index f94fa04e1a..f041fa4902 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7240,11 +7240,11 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@rjsf/core": ^3.2.1 - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.14" + "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16" "@rjsf/material-ui": ^3.2.1 - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@^5.0.0-beta.14" - "@rjsf/utils": ^5.0.0-beta.14 - "@rjsf/validator-ajv6": ^5.0.0-beta.14 + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@^5.0.0-beta.16" + "@rjsf/utils": ^5.0.0-beta.16 + "@rjsf/validator-ajv6": ^5.0.0-beta.16 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -7297,9 +7297,9 @@ __metadata: "@material-ui/lab": 4.0.0-alpha.57 "@react-hookz/web": ^20.0.0 "@rjsf/core": ^3.2.1 - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.14" + "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16" "@rjsf/material-ui": ^3.2.1 - "@rjsf/utils": ^5.0.0-beta.14 + "@rjsf/utils": ^5.0.0-beta.16 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -12585,9 +12585,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/core-v5@npm:@rjsf/core@^5.0.0-beta.14": - version: 5.0.0-beta.14 - resolution: "@rjsf/core@npm:5.0.0-beta.14" +"@rjsf/core-v5@npm:@rjsf/core@^5.0.0-beta.16": + version: 5.0.0-beta.16 + resolution: "@rjsf/core@npm:5.0.0-beta.16" dependencies: lodash: ^4.17.15 lodash-es: ^4.17.15 @@ -12596,7 +12596,7 @@ __metadata: peerDependencies: "@rjsf/utils": ^5.0.0-beta.1 react: ^16.14.0 || >=17 - checksum: 2e1a1ba4b4385401868628a127da72439a617abc72952c64e07dd1134f2252dcc13a4ec57876cb3bc44ab519e1d3c05eccfd3764eb76178526ebea051179a6ba + checksum: 38b0e02cfc394958d714f1c2b29262e95c5da01fbfffd657db7af8546ae5b00d1900fd0484be07be13d354dd1e48833cabcdcdaa8e9ffa0dfba63fba7e9556c3 languageName: node linkType: hard @@ -12619,16 +12619,16 @@ __metadata: languageName: node linkType: hard -"@rjsf/material-ui-v5@npm:@rjsf/material-ui@^5.0.0-beta.14": - version: 5.0.0-beta.14 - resolution: "@rjsf/material-ui@npm:5.0.0-beta.14" +"@rjsf/material-ui-v5@npm:@rjsf/material-ui@^5.0.0-beta.16": + version: 5.0.0-beta.16 + resolution: "@rjsf/material-ui@npm:5.0.0-beta.16" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 "@rjsf/core": ^5.0.0-beta.1 "@rjsf/utils": ^5.0.0-beta.1 react: ^16.14.0 || >=17 - checksum: 5abc14a274b97a29288abd489f80f9b3fca53e4429ff96f6c03368dfe625d34b3f66ec2e446a84a8a1874d9dc81cb62ef5a706fc1b200bbe1632c612960a9dc6 + checksum: b8252dd7edd07435c065393cf4a86f7a8db0224646f71206561f9d300fb8d39a658282b5181f1b0100b069f775620953c03f89818fecdf34c52076e39108b93f languageName: node linkType: hard @@ -12644,7 +12644,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:^5.0.0-beta.14": +"@rjsf/utils@npm:^5.0.0-beta.16": version: 5.0.0-beta.16 resolution: "@rjsf/utils@npm:5.0.0-beta.16" dependencies: @@ -12659,16 +12659,16 @@ __metadata: languageName: node linkType: hard -"@rjsf/validator-ajv6@npm:^5.0.0-beta.14": - version: 5.0.0-beta.15 - resolution: "@rjsf/validator-ajv6@npm:5.0.0-beta.15" +"@rjsf/validator-ajv6@npm:^5.0.0-beta.16": + version: 5.0.0-beta.16 + resolution: "@rjsf/validator-ajv6@npm:5.0.0-beta.16" dependencies: ajv: ^6.7.0 lodash: ^4.17.15 lodash-es: ^4.17.15 peerDependencies: "@rjsf/utils": ^5.0.0-beta.1 - checksum: ce6d2cd110eee21e37ae08e4081b0f0fd65ac22f8c94ceeaff9f9a9482072897c3f988de1bc770c25031932117e7f71dda0bd166c2bb953af420d0ce1fd255d0 + checksum: c4296e37608907c904424c46c884a15991101229e708caaa43e2e3c7d7e44a7e88ba206a902f80853f9a7f4c78d129fe47452ee5265cfd845b916051e99cd70d languageName: node linkType: hard From add395e416d5110ac0268d10cf0b4ac2edfd2c97 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 17 Jan 2023 16:52:35 +0100 Subject: [PATCH 2/4] chore: lock versions Signed-off-by: blam --- plugins/scaffolder-react/package.json | 8 ++++---- plugins/scaffolder/package.json | 4 ++-- yarn.lock | 20 ++++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 33eb8324d6..229d0dfd5c 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -47,11 +47,11 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@rjsf/core": "^3.2.1", - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16", + "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.16", "@rjsf/material-ui": "^3.2.1", - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@^5.0.0-beta.16", - "@rjsf/utils": "^5.0.0-beta.16", - "@rjsf/validator-ajv6": "^5.0.0-beta.16", + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.16", + "@rjsf/utils": "5.0.0-beta.16", + "@rjsf/validator-ajv6": "5.0.0-beta.16", "@types/json-schema": "^7.0.9", "classnames": "^2.2.6", "json-schema": "^0.4.0", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 145c9c53cc..97ee629cfa 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -56,9 +56,9 @@ "@material-ui/lab": "4.0.0-alpha.57", "@react-hookz/web": "^20.0.0", "@rjsf/core": "^3.2.1", - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16", + "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.16", "@rjsf/material-ui": "^3.2.1", - "@rjsf/utils": "^5.0.0-beta.16", + "@rjsf/utils": "5.0.0-beta.16", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", "git-url-parse": "^13.0.0", diff --git a/yarn.lock b/yarn.lock index f041fa4902..a95a231c32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7240,11 +7240,11 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@rjsf/core": ^3.2.1 - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16" + "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.16" "@rjsf/material-ui": ^3.2.1 - "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@^5.0.0-beta.16" - "@rjsf/utils": ^5.0.0-beta.16 - "@rjsf/validator-ajv6": ^5.0.0-beta.16 + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.0.0-beta.16" + "@rjsf/utils": 5.0.0-beta.16 + "@rjsf/validator-ajv6": 5.0.0-beta.16 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -7297,9 +7297,9 @@ __metadata: "@material-ui/lab": 4.0.0-alpha.57 "@react-hookz/web": ^20.0.0 "@rjsf/core": ^3.2.1 - "@rjsf/core-v5": "npm:@rjsf/core@^5.0.0-beta.16" + "@rjsf/core-v5": "npm:@rjsf/core@5.0.0-beta.16" "@rjsf/material-ui": ^3.2.1 - "@rjsf/utils": ^5.0.0-beta.16 + "@rjsf/utils": 5.0.0-beta.16 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -12585,7 +12585,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/core-v5@npm:@rjsf/core@^5.0.0-beta.16": +"@rjsf/core-v5@npm:@rjsf/core@5.0.0-beta.16": version: 5.0.0-beta.16 resolution: "@rjsf/core@npm:5.0.0-beta.16" dependencies: @@ -12619,7 +12619,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/material-ui-v5@npm:@rjsf/material-ui@^5.0.0-beta.16": +"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.0.0-beta.16": version: 5.0.0-beta.16 resolution: "@rjsf/material-ui@npm:5.0.0-beta.16" peerDependencies: @@ -12644,7 +12644,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:^5.0.0-beta.16": +"@rjsf/utils@npm:5.0.0-beta.16": version: 5.0.0-beta.16 resolution: "@rjsf/utils@npm:5.0.0-beta.16" dependencies: @@ -12659,7 +12659,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/validator-ajv6@npm:^5.0.0-beta.16": +"@rjsf/validator-ajv6@npm:5.0.0-beta.16": version: 5.0.0-beta.16 resolution: "@rjsf/validator-ajv6@npm:5.0.0-beta.16" dependencies: From cbab8ac107c2c849e2ac5f9a415efcfca84ca48d Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 17 Jan 2023 16:55:31 +0100 Subject: [PATCH 3/4] chore: changeset Signed-off-by: blam --- .changeset/flat-cups-itch.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/flat-cups-itch.md diff --git a/.changeset/flat-cups-itch.md b/.changeset/flat-cups-itch.md new file mode 100644 index 0000000000..250393c21a --- /dev/null +++ b/.changeset/flat-cups-itch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +lock versions of `@rjsf/*-beta` packages From a18da2f8b5824c2638e44fd531f711f2be091ed0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 17 Jan 2023 16:56:15 +0100 Subject: [PATCH 4/4] backend-app-api: fix log redaction escaping Signed-off-by: Patrik Oldsberg --- .changeset/eight-falcons-explode.md | 5 +++ .../src/logging/WinstonLogger.test.ts | 38 +++++++++++++++++++ .../src/logging/WinstonLogger.ts | 9 +++-- 3 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 .changeset/eight-falcons-explode.md create mode 100644 packages/backend-app-api/src/logging/WinstonLogger.test.ts diff --git a/.changeset/eight-falcons-explode.md b/.changeset/eight-falcons-explode.md new file mode 100644 index 0000000000..d9a1a2fe1f --- /dev/null +++ b/.changeset/eight-falcons-explode.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Fixed an issue were the log redaction didn't properly escape RegExp characters. diff --git a/packages/backend-app-api/src/logging/WinstonLogger.test.ts b/packages/backend-app-api/src/logging/WinstonLogger.test.ts new file mode 100644 index 0000000000..5d8cfc9c90 --- /dev/null +++ b/packages/backend-app-api/src/logging/WinstonLogger.test.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2023 The Backstage Authors + * + * 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. + */ + +import { WinstonLogger } from './WinstonLogger'; + +function msg(message: string) { + return { message, level: 'info' }; +} + +describe('WinstonLogger', () => { + it('redacter should redact and escape regex', () => { + const redacter = WinstonLogger.redacter(); + expect(redacter.format.transform(msg('hello (world)'))).toEqual( + msg('hello (world)'), + ); + redacter.add(['hello']); + expect(redacter.format.transform(msg('hello (world)'))).toEqual( + msg('[REDACTED] (world)'), + ); + redacter.add(['(world)']); + expect(redacter.format.transform(msg('hello (world)'))).toEqual( + msg('[REDACTED] [REDACTED]'), + ); + }); +}); diff --git a/packages/backend-app-api/src/logging/WinstonLogger.ts b/packages/backend-app-api/src/logging/WinstonLogger.ts index cfee65d053..d32b816523 100644 --- a/packages/backend-app-api/src/logging/WinstonLogger.ts +++ b/packages/backend-app-api/src/logging/WinstonLogger.ts @@ -27,6 +27,7 @@ import { transports, transport as Transport, } from 'winston'; +import { escapeRegExp } from '../lib/escapeRegExp'; /** * @public @@ -98,10 +99,10 @@ export class WinstonLogger implements RootLoggerService { } } if (added > 0) { - redactionPattern = new RegExp( - `(${Array.from(redactionSet).join('|')})`, - 'g', - ); + const redactions = Array.from(redactionSet) + .map(r => escapeRegExp(r)) + .join('|'); + redactionPattern = new RegExp(`(${redactions})`, 'g'); } }, };