From 98ee9d99b9feacf9b6ac7ee77959bf5d030913d2 Mon Sep 17 00:00:00 2001 From: Guilherme de Paula Date: Mon, 9 Oct 2017 22:10:28 -0300 Subject: [PATCH 1/3] fix https proxied requests --- lib/atom-io-client.coffee | 11 +++++++++++ lib/package-manager.coffee | 39 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/lib/atom-io-client.coffee b/lib/atom-io-client.coffee index f5ce0da1..a2ea6e0e 100644 --- a/lib/atom-io-client.coffee +++ b/lib/atom-io-client.coffee @@ -13,6 +13,13 @@ class AtomIoClient @expiry = 1000 * 60 * 60 * 12 @createAvatarCache() @expireAvatarCache() + @packageManager.isStrictSsl() + .then (resolve) => + @strictSsl = resolve + @packageManager.getHttpsProxy() + .then (resolve) => + @httpsProxy = resolve + # Public: Get an avatar image from the filesystem, fetching it first if necessary avatar: (login, callback) -> @@ -70,6 +77,10 @@ class AtomIoClient url: "#{@baseURL}#{path}" headers: {'User-Agent': navigator.userAgent} } + if @httpsProxy? + options.proxy = @httpsProxy + if @strictSsl is false + options.rejectUnauthorized = false request options, (err, res, body) => try diff --git a/lib/package-manager.coffee b/lib/package-manager.coffee index 1a717bbf..5bc4e6ad 100644 --- a/lib/package-manager.coffee +++ b/lib/package-manager.coffee @@ -214,6 +214,45 @@ class PackageManager handleProcessErrors(apmProcess, errorMessage, callback) + isStrictSsl: -> + new Promise (resolve, reject) => + args = ['config' ,'get', 'strict-ssl'] + errorMessage = 'Checking strict-ssl configuration failed' + apmProcess = @runCommand args, (code, stdout, stderr) -> + if code is 0 + if stdout.trim() is 'false' + resolve(false) + else + resolve(true) + else + error = new Error(errorMessage) + error.stdout = stdout + error.stderr = stderr + reject(error) + + handleProcessErrors apmProcess, errorMessage, (error) -> + reject(error) + + getHttpsProxy: -> + new Promise (resolve, reject) => + args = ['config' ,'get', 'https-proxy'] + errorMessage = 'Checking https-proxy configuration failed' + apmProcess = @runCommand args, (code, stdout, stderr) -> + if code is 0 + result = stdout.trim() + if result isnt 'null' + resolve(result) + else + resolve(null) + else + error = new Error(errorMessage) + error.stdout = stdout + error.stderr = stderr + reject(error) + + handleProcessErrors apmProcess, errorMessage, (error) -> + reject(error) + getInstalled: -> new Promise (resolve, reject) => @loadInstalled (error, result) -> From 0975fc17cff662fe0e9cc898f68a680ab7ee0eea Mon Sep 17 00:00:00 2001 From: Guilherme de Paula Date: Thu, 9 Nov 2017 20:38:54 -0200 Subject: [PATCH 2/3] fix linting --- lib/package-manager.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/package-manager.coffee b/lib/package-manager.coffee index 5bc4e6ad..0efc6cd7 100644 --- a/lib/package-manager.coffee +++ b/lib/package-manager.coffee @@ -216,7 +216,7 @@ class PackageManager isStrictSsl: -> new Promise (resolve, reject) => - args = ['config' ,'get', 'strict-ssl'] + args = ['config' , 'get', 'strict-ssl'] errorMessage = 'Checking strict-ssl configuration failed' apmProcess = @runCommand args, (code, stdout, stderr) -> if code is 0 @@ -235,7 +235,7 @@ class PackageManager getHttpsProxy: -> new Promise (resolve, reject) => - args = ['config' ,'get', 'https-proxy'] + args = ['config' , 'get', 'https-proxy'] errorMessage = 'Checking https-proxy configuration failed' apmProcess = @runCommand args, (code, stdout, stderr) -> if code is 0 From d3d757b1c48db1d92efa47f0f65d42b3060a1f0d Mon Sep 17 00:00:00 2001 From: Guilherme de Paula Date: Thu, 9 Nov 2017 22:36:53 -0200 Subject: [PATCH 3/3] check undefined variable --- lib/atom-io-client.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/atom-io-client.coffee b/lib/atom-io-client.coffee index a2ea6e0e..54805a35 100644 --- a/lib/atom-io-client.coffee +++ b/lib/atom-io-client.coffee @@ -13,10 +13,10 @@ class AtomIoClient @expiry = 1000 * 60 * 60 * 12 @createAvatarCache() @expireAvatarCache() - @packageManager.isStrictSsl() + @packageManager?.isStrictSsl() .then (resolve) => @strictSsl = resolve - @packageManager.getHttpsProxy() + @packageManager?.getHttpsProxy() .then (resolve) => @httpsProxy = resolve