Skip to content
Snippets Groups Projects
Select Git revision
  • bda5e69184de7f4d3a87d3d4c4c78359803d7570
  • master default protected
  • 3-regression-l-onglet-network-reste-vide
  • v1.7.5 protected
  • v1.7.4 protected
  • v1.7.3 protected
  • v1.7.2 protected
  • v1.7.1 protected
  • v1.7.0 protected
  • v1.6.31 protected
  • v1.6.30 protected
  • v1.6.29 protected
  • v1.6.28 protected
  • v1.6.27 protected
  • v1.6.26 protected
  • v1.6.25 protected
  • v1.6.24 protected
  • v1.6.23 protected
  • v1.6.22 protected
  • v1.6.21 protected
  • v1.6.20 protected
  • v1.6.19 protected
  • v1.6.18 protected
23 results

index.js

Blame
  • index.js 2.16 KiB
    "use strict";
    
    var co = require('co');
    var Server = require('./server');
    var bma  = require('./app/lib/streams/bma');
    var webmin  = require('./app/lib/streams/webmin');
    var upnp = require('./app/lib/upnp');
    var multicaster = require('./app/lib/streams/multicaster');
    var logger = require('./app/lib/logger')('ucoin');
    
    module.exports = function (dbConf, overConf) {
      return new Server(dbConf, overConf);
    };
    
    module.exports.statics = {
    
      enableHttpAdmin: (dbConf, overConf, httpLogs, wmHost, wmPort) => webmin(dbConf, overConf, [{
        ip:  wmHost || 'localhost',
        port: wmPort || 9220
      }], httpLogs !== false),
    
      startNode: (server, conf) => co(function *() {
    
        logger.info(">> NODE STARTING");
    
        // Public http interface
        let bmapi = yield bma(server, null, conf.httplogs);
    
        // Routing documents
        server
        // The router asks for multicasting of documents
          .pipe(server.router())
          // The documents get sent to peers
          .pipe(multicaster(server.conf))
          // The multicaster may answer 'unreachable peer'
          .pipe(server.router());
    
        // Services
        yield module.exports.statics.startServices(server);
        yield bmapi.openConnections();
    
        logger.info('>> Server ready!');
      }),
    
      startServices: (server) => co(function *() {
    
        /***************
         * HTTP ROUTING
         **************/
        server.router(server.conf.routing);
    
        /***************
         *    UPnP
         **************/
        if (server.conf.upnp) {
          try {
            if (server.upnpAPI) {
              server.upnpAPI.stopRegular();
            }
            server.upnpAPI = yield upnp(server.conf.port, server.conf.remoteport);
            server.upnpAPI.startRegular();
          } catch (e) {
            logger.warn(e);
          }
        }
    
        /*******************
         * BLOCK COMPUTING
         ******************/
        if (server.conf.participate) {
          server.startBlockComputation();
        }
    
        /***********************
         * CRYPTO NETWORK LAYER
         **********************/
        server.start();
    
        return {};
      }),
    
      stopServices: (server) => co(function *() {
    
        server.router(false);
        if (server.conf.participate) {
          server.stopBlockComputation();
        }
        yield server.stop();
    
        return {};
      })
    };