diff --git a/AUTHORS b/AUTHORS index f4e05578d..c502fd946 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,4 +1,5 @@ 030 +Aaron Lozier Alex Kocharin Alex Kocharin Alex Vernacchia diff --git a/conf/full.yaml b/conf/full.yaml index ac9e0b106..4fe9db429 100644 --- a/conf/full.yaml +++ b/conf/full.yaml @@ -48,6 +48,9 @@ uplinks: # to be stored in the local storage (defaults to true) #cache: false + # set this to false to disable strict SSL cert check (defaults to true) + #strict_ssl: false + packages: '@*/*': # scoped packages diff --git a/docs/uplinks.md b/docs/uplinks.md index 23f6c332a..3e3b238e4 100644 --- a/docs/uplinks.md +++ b/docs/uplinks.md @@ -36,6 +36,7 @@ max_fails | number | No |2 | all | limit maximun failure request | 2 cache | boolean | No |[true,false] | >= 2.1 | avoid cache tarballs | true auth | list | No | type: [bearer,basic], [token: "token",token_env: [true,\]] | >= 2.5 | assigns the header 'Authorization' see: http://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules | disabled headers | list | No | authorization: "Basic YourBase64EncodedCredentials==" | all | list of custom headers for the uplink | disabled +strict_ssl |boolean | No | [true,false] | >= 3.0 | If true, requires SSL certificates be valid. | true ### You Must know diff --git a/src/lib/up-storage.js b/src/lib/up-storage.js index 6988e13f5..506a7ba6c 100644 --- a/src/lib/up-storage.js +++ b/src/lib/up-storage.js @@ -56,6 +56,7 @@ class ProxyStorage implements IProxy { upname: string; proxy: string; last_request_time: number; + strict_ssl: boolean; /** * Constructor @@ -88,6 +89,7 @@ class ProxyStorage implements IProxy { this.timeout = parseInterval(setConfig(this.config, 'timeout', '30s')); this.max_fails = Number(setConfig(this.config, 'max_fails', 2 )); this.fail_timeout = parseInterval(setConfig(this.config, 'fail_timeout', '5m' )); + this.strict_ssl = Boolean(setConfig(this.config, 'strict_ssl', true)); } /** @@ -129,6 +131,7 @@ class ProxyStorage implements IProxy { method: method, headers: headers, uri: uri, + strictSSL: this.strict_ssl }, 'making request: \'@{method} @{uri}\''); if (isObject(options.json)) { @@ -203,6 +206,7 @@ class ProxyStorage implements IProxy { encoding: null, gzip: true, timeout: this.timeout, + strictSSL: this.strict_ssl }, requestCallback); let statusCalled = false; @@ -387,6 +391,7 @@ class ProxyStorage implements IProxy { json: true, headers: headers, req: options.req, + strictSSL: this.strict_ssl }, (err, res, body) => { if (err) { return callback(err); @@ -418,6 +423,7 @@ class ProxyStorage implements IProxy { const readStream = this.request({ uri_full: url, encoding: null, + strictSSL: this.strict_ssl, headers: { Accept: contenTypeAccept, }, @@ -465,6 +471,7 @@ class ProxyStorage implements IProxy { const requestStream: stream$Readable = this.request({ uri: options.req.url, req: options.req, + strictSSL: this.strict_ssl, headers: { referer: options.req.headers.referer, },