Merge pull request #772 from matiu/feature/defaultsToSSLandLivenet

SSL and livenet config by default
This commit is contained in:
Gustavo Maximiliano Cortez 2014-06-27 09:55:26 -03:00
commit 1af298b5f1
6 changed files with 50 additions and 58 deletions

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
var defaultConfig = { var defaultConfig = {
// DEFAULT network (livenet or testnet) // DEFAULT network (livenet or testnet)
networkName: 'testnet', networkName: 'livenet',
// DEFAULT unit: Bit // DEFAULT unit: Bit
unitName: 'bits', unitName: 'bits',
@ -96,14 +96,16 @@ var defaultConfig = {
// blockchain service API config // blockchain service API config
blockchain: { blockchain: {
host: 'test.insight.is', schema: 'https',
port: 80, host: 'insight.bitpay.com',
port: 443,
retryDelay: 1000, retryDelay: 1000,
}, },
// socket service API config // socket service API config
socket: { socket: {
host: 'test.insight.is', schema: 'https',
port: 80, host: 'insight.bitpay.com',
port: 443,
// will duplicate itself after each try // will duplicate itself after each try
reconnectDelay: 500, reconnectDelay: 500,
}, },

View File

@ -849,6 +849,9 @@
<input type="text" ng-model="insightHost" class="form-control" name="insight-host"> <input type="text" ng-model="insightHost" class="form-control" name="insight-host">
<label for="insight-port">Port</label> <label for="insight-port">Port</label>
<input type="number" ng-model="insightPort" class="form-control" name="insight-port"> <input type="number" ng-model="insightPort" class="form-control" name="insight-port">
<input id="insight-secure" type="checkbox" ng-model="insightSecure" class="form-control">
<label for="insight-secure">Use SSL</label>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>PeerJS server</legend> <legend>PeerJS server</legend>

View File

@ -7,6 +7,7 @@ angular.module('copayApp.controllers').controller('SettingsController',
$scope.networkName = config.networkName; $scope.networkName = config.networkName;
$scope.insightHost = config.blockchain.host; $scope.insightHost = config.blockchain.host;
$scope.insightPort = config.blockchain.port; $scope.insightPort = config.blockchain.port;
$scope.insightSecure = config.blockchain.schema === 'https';
$scope.networkKey = config.network.key; $scope.networkKey = config.network.key;
$scope.networkHost = config.network.host; $scope.networkHost = config.network.host;
$scope.networkPort = config.network.port; $scope.networkPort = config.network.port;
@ -39,9 +40,15 @@ angular.module('copayApp.controllers').controller('SettingsController',
} }
$scope.$watch('networkName', function(net) { $scope.$watch('networkName', function(net) {
$scope.insightHost = net === 'testnet' ? 'test.insight.is' : 'live.insight.is'; $scope.insightHost = net === 'testnet' ? 'test-insight.bitpay.com' : 'insight.bitpay.com';
}); });
$scope.$watch('insightSecure', function(ssl) {
$scope.insightPort = ssl ? 443 : 80;
});
$scope.save = function() { $scope.save = function() {
var network = config.network; var network = config.network;
network.key = $scope.networkKey; network.key = $scope.networkKey;
@ -53,11 +60,13 @@ angular.module('copayApp.controllers').controller('SettingsController',
networkName: $scope.networkName, networkName: $scope.networkName,
blockchain: { blockchain: {
host: $scope.insightHost, host: $scope.insightHost,
port: $scope.insightPort port: $scope.insightPort,
schema: $scope.insightSecure ? 'https' : 'http',
}, },
socket: { socket: {
host: $scope.insightHost, host: $scope.insightHost,
port: $scope.insightPort port: $scope.insightPort,
schema: $scope.insightSecure ? 'https' : 'http',
}, },
network: network, network: network,
disableVideo: $scope.disableVideo, disableVideo: $scope.disableVideo,

View File

@ -12,7 +12,7 @@ function Insight(opts) {
opts = opts || {}; opts = opts || {};
this.host = opts.host || 'localhost'; this.host = opts.host || 'localhost';
this.port = opts.port || '3001'; this.port = opts.port || '3001';
this.scheme = opts.scheme || 'http'; this.schema = opts.schema || 'http';
this.retryDelay = opts.retryDelay || 5000; this.retryDelay = opts.retryDelay || 5000;
} }
@ -62,6 +62,21 @@ function removeRepeatedElements(ar) {
return r; return r;
} }
Insight.prototype._getOptions = function(method, path, data) {
return {
host: this.host,
port: this.port,
schema: this.schema,
method: method,
path: path,
data: data,
headers: {
'Access-Control-Request-Headers': ''
}
};
};
Insight.prototype.getTransactions = function(addresses, cb) { Insight.prototype.getTransactions = function(addresses, cb) {
var self = this; var self = this;
@ -71,17 +86,7 @@ Insight.prototype.getTransactions = function(addresses, cb) {
var txs = []; var txs = [];
_asyncForEach(addresses, function(addr, callback) { _asyncForEach(addresses, function(addr, callback) {
var options = { var options = self._getOptions('GET', '/api/addr/' + addr);
host: self.host,
port: self.port,
scheme: self.scheme,
method: 'GET',
path: '/api/addr/' + addr,
headers: {
'Access-Control-Request-Headers': ''
}
};
self._request(options, function(err, res) { self._request(options, function(err, res) {
var txids_tmp = res.transactions; var txids_tmp = res.transactions;
for (var i = 0; i < txids_tmp.length; i++) { for (var i = 0; i < txids_tmp.length; i++) {
@ -92,16 +97,7 @@ Insight.prototype.getTransactions = function(addresses, cb) {
}, function() { }, function() {
var clean_txids = removeRepeatedElements(txids); var clean_txids = removeRepeatedElements(txids);
_asyncForEach(clean_txids, function(txid, callback2) { _asyncForEach(clean_txids, function(txid, callback2) {
var options = { var options = self._getOptions('GET', '/api/tx/' + txid);
host: self.host,
port: self.port,
scheme: self.scheme,
method: 'GET',
path: '/api/tx/' + txid,
headers: {
'Access-Control-Request-Headers': ''
}
};
self._request(options, function(err, res) { self._request(options, function(err, res) {
txs.push(res); txs.push(res);
callback2(); callback2();
@ -117,17 +113,7 @@ Insight.prototype.getUnspent = function(addresses, cb) {
var all = []; var all = [];
var options = { var options = this._getOptions('POST', '/api/addrs/utxo', 'addrs=' + addresses.join(','));
host: this.host,
port: this.port,
scheme: this.scheme,
method: 'POST',
data: 'addrs=' + addresses.join(','),
path: '/api/addrs/utxo',
headers: {
'Access-Control-Request-Headers': ''
}
};
var self = this; var self = this;
this._request(options, function(err, res) { this._request(options, function(err, res) {
@ -146,16 +132,7 @@ Insight.prototype.getUnspent = function(addresses, cb) {
Insight.prototype.sendRawTransaction = function(rawtx, cb) { Insight.prototype.sendRawTransaction = function(rawtx, cb) {
if (!rawtx) throw new Error('rawtx must be set'); if (!rawtx) throw new Error('rawtx must be set');
var options = { var options = this._getOptions('POST', '/api/tx/send', 'rawtx=' + rawtx);
host: this.host,
port: this.port,
method: 'POST',
path: '/api/tx/send',
data: 'rawtx=' + rawtx,
headers: {
'Access-Control-Request-Headers': ''
}
};
this._request(options, function(err, res) { this._request(options, function(err, res) {
if (err) return cb(); if (err) return cb();
@ -244,9 +221,7 @@ Insight.prototype._requestNode = function(options, callback) {
Insight.prototype._requestBrowser = function(options, callback) { Insight.prototype._requestBrowser = function(options, callback) {
var request = new XMLHttpRequest(); var request = new XMLHttpRequest();
var url = (options.schema || 'http') + '://' + options.host;
// TODO: Normalize URL
var url = 'http://' + options.host;
if (options.port !== 80) { if (options.port !== 80) {
url = url + ':' + options.port; url = url + ':' + options.port;

View File

@ -3,11 +3,14 @@
angular.module('copayApp.services').factory('Socket', angular.module('copayApp.services').factory('Socket',
function($rootScope) { function($rootScope) {
var listeners = []; var listeners = [];
var url = 'http://' + config.socket.host + ':' + config.socket.port; var url = (config.socket.schema || 'http') + '://' + config.socket.host + ':' + config.socket.port;
var socket = io(url, { var opts = {
'reconnection': true, 'reconnection': true,
'reconnectionDelay': config.socket.reconnectDelay || 500, 'reconnectionDelay': config.socket.reconnectDelay || 500,
}); 'secure': config.socket.schema === 'https' ? true : false,
};
var socket = io(url, opts);
return { return {
on: function(event, callback) { on: function(event, callback) {

View File

@ -1,6 +1,6 @@
{ {
"name": "copay", "name": "copay",
"version": "0.1.1", "version": "0.2.0",
"description": "A multisignature wallet", "description": "A multisignature wallet",
"repository": { "repository": {
"type": "git", "type": "git",