From 79ca2424fd70aaf31b0970b499cdb89004ee6255 Mon Sep 17 00:00:00 2001 From: Yannick Galatol Date: Wed, 20 Oct 2021 15:44:12 +0200 Subject: [PATCH] feat(web): allow unsecure ssl proxy on file-server Fix usage of self-signed certificates while using a proxy in file-server executor. See https://github.com/nrwl/nx/issues/5118 --- docs/angular/api-web/executors/file-server.md | 6 +++ docs/node/api-web/executors/file-server.md | 6 +++ docs/react/api-web/executors/file-server.md | 6 +++ package.json | 2 +- packages/web/package.json | 2 +- .../executors/file-server/file-server.impl.ts | 3 ++ .../web/src/executors/file-server/schema.d.ts | 1 + .../web/src/executors/file-server/schema.json | 4 ++ yarn.lock | 44 ++++++++++++++++++- 9 files changed, 70 insertions(+), 4 deletions(-) diff --git a/docs/angular/api-web/executors/file-server.md b/docs/angular/api-web/executors/file-server.md index 4f962b67728d6c..e6ab34d3de3c09 100644 --- a/docs/angular/api-web/executors/file-server.md +++ b/docs/angular/api-web/executors/file-server.md @@ -53,6 +53,12 @@ Type: `string` URL to proxy unhandled requests to. +### secure + +Type: `boolean` + +True if you want to verify the SSL Certs. + ### ssl Default: `false` diff --git a/docs/node/api-web/executors/file-server.md b/docs/node/api-web/executors/file-server.md index 156a78a8ddb7fb..b2005f78050e71 100644 --- a/docs/node/api-web/executors/file-server.md +++ b/docs/node/api-web/executors/file-server.md @@ -53,6 +53,12 @@ Type: `string` URL to proxy unhandled requests to. +### secure + +Type: `boolean` + +True if you want to verify the SSL Certs. + ### ssl Default: `false` diff --git a/docs/react/api-web/executors/file-server.md b/docs/react/api-web/executors/file-server.md index 156a78a8ddb7fb..b2005f78050e71 100644 --- a/docs/react/api-web/executors/file-server.md +++ b/docs/react/api-web/executors/file-server.md @@ -53,6 +53,12 @@ Type: `string` URL to proxy unhandled requests to. +### secure + +Type: `boolean` + +True if you want to verify the SSL Certs. + ### ssl Default: `false` diff --git a/package.json b/package.json index be08ab507b655f..620312cbac0253 100644 --- a/package.json +++ b/package.json @@ -156,7 +156,7 @@ "fork-ts-checker-webpack-plugin": "6.2.10", "fs-extra": "^9.1.0", "html-webpack-plugin": "^3.2.0", - "http-server": "0.12.3", + "http-server": "14.0.0", "husky": "^6.0.0", "identity-obj-proxy": "3.0.0", "ignore": "^5.0.4", diff --git a/packages/web/package.json b/packages/web/package.json index f195ea47663f3f..0b619d3af25658 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -111,7 +111,7 @@ "webpack-subresource-integrity": "^1.5.2", "worker-plugin": "3.2.0", "webpack-dev-server": "^4.3.1", - "http-server": "0.12.3", + "http-server": "14.0.0", "ignore": "^5.0.4" } } diff --git a/packages/web/src/executors/file-server/file-server.impl.ts b/packages/web/src/executors/file-server/file-server.impl.ts index 0a66215bca8c05..1860f123c59496 100644 --- a/packages/web/src/executors/file-server/file-server.impl.ts +++ b/packages/web/src/executors/file-server/file-server.impl.ts @@ -26,6 +26,9 @@ function getHttpServerArgs(options: Schema) { if (options.proxyUrl) { args.push(`-P ${options.proxyUrl}`); } + if (typeof options.secure === 'boolean') { + args.push(`--proxy-options.secure ${options.secure}`); + } return args; } diff --git a/packages/web/src/executors/file-server/schema.d.ts b/packages/web/src/executors/file-server/schema.d.ts index dc6a2afe50594d..b29c6ad4ece5f3 100644 --- a/packages/web/src/executors/file-server/schema.d.ts +++ b/packages/web/src/executors/file-server/schema.d.ts @@ -5,6 +5,7 @@ export interface Schema { sslKey?: string; sslCert?: string; proxyUrl?: string; + secure?: boolean; buildTarget: string; parallel: boolean; maxParallel?: number; diff --git a/packages/web/src/executors/file-server/schema.json b/packages/web/src/executors/file-server/schema.json index beeffe5567d91e..f6c5622d61964f 100644 --- a/packages/web/src/executors/file-server/schema.json +++ b/packages/web/src/executors/file-server/schema.json @@ -48,6 +48,10 @@ "proxyUrl": { "type": "string", "description": "URL to proxy unhandled requests to." + }, + "secure": { + "type": "boolean", + "description": "True if you want to verify the SSL Certs." } }, "additionalProperties": false, diff --git a/yarn.lock b/yarn.lock index 8cfa0d089073ad..2b0c1d38db898d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6760,6 +6760,13 @@ basic-auth@^1.0.3: resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ= +basic-auth@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + batch-processor@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" @@ -12562,6 +12569,13 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + html-entities@^2.1.0, html-entities@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" @@ -12749,6 +12763,25 @@ http-server@0.12.3: secure-compare "3.0.1" union "~0.5.0" +http-server@14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.0.0.tgz#bd214952a60b93ce8ca9bbe8ba181faf7f9821b0" + integrity sha512-XTePIXAo5x72bI8SlKFSqsg7UuSHwsOa4+RJIe56YeMUvfTvGDy7TxFkTEhfIRmM/Dnf6x29ut541ythSBZdkQ== + dependencies: + basic-auth "^2.0.1" + colors "^1.4.0" + corser "^2.0.1" + he "^1.2.0" + html-encoding-sniffer "^3.0.0" + http-proxy "^1.18.1" + mime "^1.6.0" + minimist "^1.2.5" + opener "^1.5.1" + portfinder "^1.0.28" + secure-compare "3.0.1" + union "~0.5.0" + url-join "^4.0.1" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -12830,7 +12863,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: +iconv-lite@0.6.3, iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -22666,7 +22699,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@4.0.1: +url-join@4.0.1, url-join@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== @@ -23368,6 +23401,13 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"