Skip to content

Commit

Permalink
Closes-Bug: #1606646
Browse files Browse the repository at this point in the history
Post node version 0.9.1, tls, https: validate server certificate by default.
So in case self signed certificate, UI will not work with https request to
openstack services.
mscdex/node-imap#181 (comment)
Fix: Added rejectUnauthorized flag.

In node post v0.11.14, we have custom checkServerIdentity in options to have
more control.

UT Results:
+++++++++++
contrail-web-controller:
------------------------
PhantomJS 1.9.8 (Mac OS X 10.9.5): Executed 376 of 376 SUCCESS (1 min 41.645 secs / 1 min 39.143 secs)
Done, without errors.

contrail-web-server-manager:
----------------------------
PhantomJS 1.9.8 (Mac OS X 10.9.5): Executed 89 of 89 SUCCESS (11.9 secs / 11.643 secs)
Done, without errors.

contrail-web-storage:
--------------------
PhantomJS 1.9.8 (Mac OS X 0.0.0): Executed 84 of 84 SUCCESS (20.301 secs / 18.748 secs)
Done, without errors.

Change-Id: Iec589a59b5ae153c3b6a57ad1e96a025c8a9280e
  • Loading branch information
biswajit-mandal committed Jul 27, 2016
1 parent e80f55a commit 60c2149
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 8 deletions.
7 changes: 3 additions & 4 deletions src/serverroot/common/httpsoptions.api.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,12 +144,11 @@ function updateHttpsSecureOptions (apiType, options)
logutils.logger.error('readFileSync error for ca file' + e);
}
}
/* If strictSSL is set to false, then if response.client.authorized
* is set as false, a secure connection is established.
*/
/* https://github.com/mscdex/node-imap/issues/181 */
options['rejectUnauthorized'] = false;
var strictSSL = getHttpsOptionsByAPIType(apiType, 'strictSSL');
if (null != strictSSL) {
options['strictSSL'] = strictSSL;
options['rejectUnauthorized'] = strictSSL;
}
}
return options;
Expand Down
33 changes: 29 additions & 4 deletions src/serverroot/common/rest.api.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/

var http = require('http'),
https = require('https'),
config = process.mainModule.exports.config,
logutils = require('../utils/log.utils'),
messages = require('./messages'),
Expand Down Expand Up @@ -143,9 +144,31 @@ APIServer.prototype.updateDiscoveryServiceParams = function (params)

APIServer.prototype.makeHttpsRestCall = function (options, callback)
{
request(options, function(err, response, data) {
callback(err, data, response);
var method = options['method'];
var req = https.request(options, function (res) {
var result = '';
res.on('data', function (chunk) {
result += chunk;
});
res.on('end', function () {
callback(null, result, res);
});
res.on('error', function (err) {
callback(err);
})
});

// req error
req.on('error', function (err) {
logutils.logger.error(err.stack);
callback(err);
});

//send request with the postData form
if (('POST' == method) || ('PUT' == method)) {
req.write(options['data']);
}
req.end();
}

/** Retry the REST API Call, once it fails
Expand Down Expand Up @@ -252,19 +275,21 @@ APIServer.prototype.makeCall = function (restApi, params, callback, isRetry)
options['headers']['Content-Type'] = 'application/json';
}
params = self.updateDiscoveryServiceParams(params);
options['parser'] = restler.parsers.auto;
options = httpsOp.updateHttpsSecureOptions(self.name, options);
if ((null != options['headers']) &&
(null != options['headers']['protocol']) &&
(global.PROTOCOL_HTTPS == options['headers']['protocol'])) {
delete options['headers']['protocol'];
reqUrl = global.HTTPS_URL + params.url + ':' + params.port + params.path;
options['uri'] = reqUrl;
options['body'] = options['data'];
if (('POST' != method) && ('PUT' != method)) {
delete options['data'];
delete options['body'];
}
options['hostname'] = params.url;
options['port'] = params.port;
options['path'] = params.path;

self.makeHttpsRestCall(options, function(err, data, response) {
var localIp =
commonUtils.getValueByJsonPath(response,
Expand Down

0 comments on commit 60c2149

Please sign in to comment.