From 41db94d3302a5812b822abc053132954121caff1 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Thu, 26 Feb 2015 18:16:49 -0300 Subject: [PATCH] add simple index.js --- .jshintrc | 5 +- config/default.yml | 4 ++ index.js | 136 +++++------------------------------------- lib/networkmonitor.js | 9 ++- package.json | 2 + 5 files changed, 25 insertions(+), 131 deletions(-) create mode 100644 config/default.yml diff --git a/.jshintrc b/.jshintrc index 73413260..40fd8c6f 100644 --- a/.jshintrc +++ b/.jshintrc @@ -41,8 +41,5 @@ "it", "module", "require" - ], - "globals" : { - "Promise" : true - } + ] } diff --git a/config/default.yml b/config/default.yml new file mode 100644 index 00000000..007e6881 --- /dev/null +++ b/config/default.yml @@ -0,0 +1,4 @@ +NetworkMonitor: + network: livenet + host: localhost + port: 8333 diff --git a/index.js b/index.js index 0085ddcf..fe11a90c 100755 --- a/index.js +++ b/index.js @@ -1,134 +1,26 @@ -#!/usr/bin/env node - 'use strict'; -//Set the node enviornment variable if not set before -process.env.NODE_ENV = process.env.NODE_ENV || 'development'; -var fs = require('fs'); -var PeerSync = require('./lib/PeerSync'); -var HistoricSync = require('./lib/HistoricSync'); -var http = require('http'); -var https = require('https'); -var express = require('express'); -var program = require('commander'); +var config = require('config'); -var config = require('./config/config'); -var logger = require('./lib/logger').logger; -program - .version(config.version); +var bitcore = require('bitcore'); -// text title -console.log( - 'bitcore-node', -'\n\t\t\t\t\t\tv%s\n', config.version); -program.on('--help', function() { - logger.info('\n# Configuration:\n\ -\tBLOCKCHAIN_API_NETWORK (Network): %s\n\ -\tBLOCKCHAIN_API_DB (Database Path): %s\n\ -\tBLOCKCHAIN_API_SAFE_CONFIRMATIONS (Safe Confirmations): %s\n\ -\tBLOCKCHAIN_API_IGNORE_CACHE (Ignore Cache): %s\n\ - # Bicoind Connection configuration:\n\ -\tRPC Username: %s\t\tBITCOIND_USER\n\ -\tRPC Password: %s\tBITCOIND_PASS\n\ -\tRPC Protocol: %s\t\tBITCOIND_PROTO\n\ -\tRPC Host: %s\t\tBITCOIND_HOST\n\ -\tRPC Port: %s\t\t\tBITCOIND_PORT\n\ -\tP2P Port: %s\t\t\tBITCOIND_P2P_PORT\n\ -\tBITCOIND_DATADIR: %s\n\ -\t%s\n\ -\nChange setting by assigning the enviroment variables above. Example:\n\ - $ BLOCKCHAIN_API_NETWORK="testnet" BITCOIND_HOST="123.123.123.123" ./index.js\ -\n\n', - config.network, config.leveldb, config.safeConfirmations, config.ignoreCache ? 'yes' : 'no', - config.bitcoind.user, - config.bitcoind.pass ? 'Yes(hidden)' : 'No', - config.bitcoind.protocol, - config.bitcoind.host, - config.bitcoind.port, - config.bitcoind.p2pPort, - config.bitcoind.dataDir + (config.network === 'testnet' ? '*' : ''), (config.network === 'testnet' ? '* (/testnet3 is added automatically)' : '') - ); +var NetworkMonitor = require('./lib/networkmonitor'); +var EventBus = require('./lib/eventbus'); + + +var bus = new EventBus(); +var nm = NetworkMonitor.create(bus, config.get('NetworkMonitor')); + +bus.register(bitcore.Transaction, function(tx) { + console.log('Transaction:', tx.id); }); -program.parse(process.argv); - -// create express app -var expressApp = express(); - -// setup headers -require('./config/headers')(expressApp); - -// setup http/https base server -var server; -if (config.enableHTTPS) { - var serverOpts = {}; - serverOpts.key = fs.readFileSync('./etc/test-key.pem'); - serverOpts.cert = fs.readFileSync('./etc/test-cert.pem'); - server = https.createServer(serverOpts, expressApp); -} else { - server = http.createServer(expressApp); -} - -// Bootstrap models -var models_path = __dirname + '/app/models'; -var walk = function(path) { - fs.readdirSync(path).forEach(function(file) { - var newPath = path + '/' + file; - var stat = fs.statSync(newPath); - if (stat.isFile()) { - if (/(.*)\.(js$)/.test(file)) { - require(newPath); - } - } else if (stat.isDirectory()) { - walk(newPath); - } - }); -}; - -walk(models_path); - -// p2pSync process -var peerSync = new PeerSync({ - shouldBroadcast: true +bus.register(bitcore.Block, function(block) { + console.log('Block:', block.id); }); -if (!config.disableP2pSync) { - peerSync.run(); -} - -// historic_sync process -var historicSync = new HistoricSync({ - shouldBroadcastSync: true -}); -peerSync.historicSync = historicSync; - -if (!config.disableHistoricSync) { - historicSync.start({}, function(err) { - if (err) { - var txt = 'ABORTED with error: ' + err.message; - console.log('[historic_sync] ' + txt); - } - if (peerSync) peerSync.allowReorgs = true; - }); -} else -if (peerSync) peerSync.allowReorgs = true; +nm.start(); -// socket.io -var ios = require('socket.io')(server, config); -require('./app/controllers/socket.js').init(ios); - -// express settings -require('./config/express')(expressApp, historicSync, peerSync); -require('./config/routes')(expressApp); - - -//Start the app by listening on -server.listen(config.port, function() { - logger.info('bitcoin-node API listening on port %d in %s mode', server.address().port, process.env.NODE_ENV); -}); - -//expose app -exports = module.exports = expressApp; diff --git a/lib/networkmonitor.js b/lib/networkmonitor.js index cf7d9b7c..2f5a442d 100644 --- a/lib/networkmonitor.js +++ b/lib/networkmonitor.js @@ -21,11 +21,10 @@ util.inherits(NetworkMonitor, EventEmitter); NetworkMonitor.create = function(eventBus, opts) { opts = opts || {}; - opts.network = opts.network || Networks.defaultNetwork; - opts.host = opts.host || 'localhost'; - opts.port = opts.port || Networks.defaultNetwork.port; - - var peer = new Peer(opts.host, opts.port, opts.network); + var network = Networks.get(opts.network) || Networks.defaultNetwork; + var host = opts.host || 'localhost'; + var port = opts.port || Networks.defaultNetwork.port; + var peer = new Peer(host, port, network); return new NetworkMonitor(eventBus, peer); }; diff --git a/package.json b/package.json index c2300bf4..957d0d66 100644 --- a/package.json +++ b/package.json @@ -51,9 +51,11 @@ "bufferput": "bitpay/node-bufferput", "buffertools": "*", "commander": "^2.3.0", + "config": "^1.12.0", "cron": "^1.0.4", "express": "~3.4.7", "glob": "*", + "js-yaml": "^3.2.7", "leveldown": "~0.10.0", "levelup": "~0.19.0", "lodash": "^2.4.1",