Beispiel #1
0
 this.plugFileSystem = () => co(function *() {
   logger.debug('Plugging file system...');
   const params = yield paramsP;
   that.dal = fileDAL(params);
 });
Beispiel #2
0
'use strict'

const fs = require("fs");
const co = require('co');

co(function* () {
  return yield Promise.resolve(true);
}).then(function (val) {
  console.log(val);
  throw new Error('error now')
}, function (err) {
  console.error(err.stack);
}).catch(function (err) {
  console.error(err.stack);
});
Beispiel #3
0
Total.updateSyncStatus(0, utility.noop);

// the same time only sync once
var syncing = false;

var handleSync = co(function *() {
  debug('mode: %s, syncing: %s', config.syncModel, syncing);
  if (!syncing) {
    syncing = true;
    debug('start syncing');
    var data;
    var error;
    try {
      var data = yield *sync();
    } catch (err) {
      error = err;
    }
    if (config.debug) {
      error && console.error(error.stack);
      data && console.log(data);
    } else {
      sendMailToAdmin(error, data, new Date());
    }
    syncing = false;
  }
});

if (sync) {
  handleSync();
  setInterval(handleSync, ms(config.syncInterval));
}
Beispiel #4
0
 it('should return 200', function(done) {
     co(function *() {
         var res = yield upyun.uploadFile('/lorem/lorem_md5_custom.txt', './LICENSE', true, '69e97c8b91968c5878f331e53b8dcbf4', null);
         res.should.have.property('statusCode').be.exactly(200);
     })(done)
 })
Beispiel #5
0
 it('should return not found', function(done) {
     co(function *() {
         var res = yield upyun.uploadFile('/lorem_notfound/lorem.txt', './LICENSE', false, null, null);
         res.error.code.should.be.exactly(404);
     })(done)
 })
Beispiel #6
0
    value: function _handlerWrapper(handlerFunc, resolved, skipOnError, service, controller, orgOutput) {
      if (!orgOutput) {
        orgOutput = { out: null, code: 200, headers: null };
      }

      // error, 40x and 50x codes
      if (orgOutput.code && orgOutput.code > 400 && skipOnError) {
        return when.resolve(orgOutput);
      }

      var deferer = when.defer();
      var resolveOutput = function resolveOutput(newOutput) {
        deferer.resolve(newOutput);
      };

      // TODO: dependency injection
      var done = function done(data, code, headers) {
        resolveOutput({
          data: data,
          code: code || orgOutput.code || 200,
          headers: headers
        });
      };
      // TODO: dependency injection
      var error = function error(data, code, headers) {
        resolveOutput({
          data: data,
          code: code || 400,
          headers: headers
        });
      };
      // TODO: dependency injection
      var fatal = function fatal(data, code, headers) {
        resolveOutput({
          data: data,
          code: code || 500,
          headers: headers
        });
      };

      // TODO: dependency injection
      var custom = function custom(data) {
        if (_.isObject(data)) {
          if (data.hasOwnProperty('filename')) {
            if (!data.header) {
              data.headers = {};
            }
            data.headers.filename = data.filename;
            delete data.filename;
          }

          resolveOutput(data);
        } else {
          service.logger.error('custom response input must be object');
        }
      };
      // ---------------------------------------

      var module = {
        '$done': ['value', done],
        '$error': ['value', error],
        '$fatal': ['value', fatal],
        '$custom': ['value', custom],
        '$output': ['value', orgOutput || {}]
      };

      // add resolved to DI
      _.forEach(resolved, function (value, key) {
        module[key] = ['value', value];
      });

      // TODO: replace this with DI lib
      try {
        var result = this._serviceManager.injectionDependency(module, service, controller.instance, handlerFunc);
      } catch (err) {
        // TODO: fix this so errors are thrown, they seem to be swallowed by DI
        error({ error: err.message });
      }

      // if function is generator then wait on yield
      if (util.isES6Function(handlerFunc)) {
        try {
          // result is generator, so co wrapper it and turn into promise
          result = co(result);
        } catch (err) {
          error({ error: err.message });
        }
      }

      // if result is promise, fire done on the result data
      if (when.isPromiseLike(result)) {
        result.then(function (output) {
          // TODO: figure out better way to handle combined input/vs just data
          // API breaking change?
          if (output && output.data && output.code) {
            done(output.data, output.code, output.headers);
          } else {
            done(output);
          }
        }).catch(function (err) {
          error({ error: err });
        });
      }
      // if result is not promise and not null or undefined
      else if (_.isObject(result) && result.data && result.code) {
          // TODO: figure out better way to handle combined input/vs just data
          // API breaking change?
          done(result.data, result.code, result.headers);
        }
        // else if result is something
        else if (result !== null && result !== undefined) {
            done(result);
          }
      // TODO: is a timer needed here in case handler never resloves the route

      return deferer.promise;
    }
Beispiel #7
0
 it('should contain a file list', function(done) {
     co(function *() {
         var res = yield upyun.listDir('/');
         res.should.have.property('data').not.be.empty;
     })(done)
 })
Beispiel #8
0
co(function *() {
  // argv parsing
  program
    .version(version)
    .usage('<service> [options]')
    .option('-c, --configs-path <c>', 'configs file path')
    .option('-s, --sample-configs', 'generate sample configs file')
    .option('-l, --log-level <l>', 'logging level (1~5 for debug~critical)',
            function(val){return (parseInt(val, 10) - 1) % 5 + 1;})
    .parse(process.argv);

  // init logging
  log.addRule({name: 'stdout', stream: process.stdout,
              level: (program.logLevel || 2) * 10});

  if (program.sampleConfigs) {
    log.info('Generate sample.configs.toml to current directory');
    return util.copy(util.path.configs, 'sample.configs.toml');
  }

  // update configs
  var configsPath = program.configsPath || util.path.configs;
  var configsContent = fs.readFileSync(configsPath).toString();
  util.updateNestedObjects(configs, toml.parse(configsContent));

  var name = program.args[0];

  if (!name) {
    // no service name
    program.help();
  }

  var service = {
    listener: require('./lib/listener'),
    analyzer: require('./lib/analyzer'),
    webapp  : require('./lib/webapp'),
    alerter : require('./lib/alerter'),
    cleaner : require('./lib/cleaner'),
  }[name];

  if (!service) {
    // invalid service name
    program.help();
  }

  // run service
  yield service.serve();
}).catch(function(err) {
Resolver.prototype.download = function (branch) {
  var task = this._download(branch.resolvedRemotes, branch.name, branch.ref);
  this.channel.installs.push(co(task));
}
Beispiel #10
0
'use strict';
var co = require('co');
var webdriver = require('pocci/webdriver.js');

co(function*() {
  yield webdriver.init();
  yield webdriver.browser
    .url('http://user:9898/')
    .setValue("#login-cn", "admin")
    .setValue("#login-userPassword", "admin")
    .save("user-admin-berore-autherize")
    .click("#login button")
    .save("user-admin-after-autherize");
  process.exit(0);
}).catch(function(err) {
  console.error(err);
  process.exit(1);
});
Beispiel #11
0
'use strict';
var views = require('co-views');
var parse = require('co-body');
var monk = require('monk');
var wrap = require('co-monk');
// var db = monk('localhost/library');
var mongoose = require('mongoose');
var co = require('co');

var Comment = require('../model/comment');

// console.log(mongoose);

// From lifeofjs
co(function * () {
  var comments = yield Comment.find({});
});

var render = views(__dirname + '/../views', {
  map: {
    html: 'swig'
  }
});

// This must be avoided, use ajax in the view.
module.exports.all = function * all(next) {
  if ('GET' != this.method) return yield next;
  var comments = yield Comment.find({}).populate('poster');
  console.log(comments);
  this.body = comments;
};
Beispiel #12
0
Controller.prototype.delivery = function(viewModels, user){
   var shippingController = this.shippingController;

   return co(function*(){
      yield* _co.coEach(viewModels, function*(viewModel){
          viewModel.quantity = _.parseInt(viewModel.quantity);

          if(viewModel.quantity === 0)
            return;

          var shipping = yield model.findOne({_id: objectId(viewModel.shippingId)});

          if(!shipping)
            return;

          var item = _.find(shipping.items, function(item){
             return item._id.toString() === viewModel.itemId.toString();
          });

          if(!item)
            return;

          var recapitulation = _.find(item.recapitulations, function(recapitulation){
              return recapitulation._id.toString() === viewModel.recapitulationId.toString();
          });

          if(!recapitulation || recapitulation.available === 0)
            return;

          if(viewModel.quantity > recapitulation.available)
            viewModel.quantity = recapitulation.available;

          var delivery = {
            "recapitulation": recapitulation._id,
            "date": new Date(),
            "quantity": viewModel.quantity,
            "available": viewModel.quantity,
            "weight": (item.dimensions.weight / item.colli.quantity) * viewModel.quantity,
            "limasColor": viewModel.limasColor,
            "relationColor": viewModel.relationColor,
            "vehicleNumber": viewModel.vehicleNumber,
            "driver": viewModel.driver,
            "notes": viewModel.notes,
            "created": {
               "user": user._id,
               "date": new Date()
            },
            "modified":{ "user": user._id}
          };

          item.colli.delivered += viewModel.quantity;
          recapitulation.available -= viewModel.quantity;
          shipping.colli.delivered += viewModel.quantity;

          if(item.colli.delivered === item.colli.quantity)
            item.status = TERKIRIM;
          else
            item.status = TERKIRIM_SEBAGIAN;

          item.deliveries.push(delivery);
          yield shipping.save();
      });
   });
};
Beispiel #13
0
 this.loadConf = (useDefaultConf) => co(function *() {
   logger.debug('Loading conf...');
   that.conf = yield that.dal.loadConf(overrideConf, useDefaultConf);
   // Default values
   const defaultValues = {
     remoteipv6:         that.conf.ipv6,
     remoteport:         that.conf.port,
     cpu:                constants.DEFAULT_CPU,
     c:                  constants.CONTRACT.DEFAULT.C,
     dt:                 constants.CONTRACT.DEFAULT.DT,
     ud0:                constants.CONTRACT.DEFAULT.UD0,
     stepMax:            constants.CONTRACT.DEFAULT.STEPMAX,
     sigPeriod:          constants.CONTRACT.DEFAULT.SIGPERIOD,
     sigStock:           constants.CONTRACT.DEFAULT.SIGSTOCK,
     sigWindow:          constants.CONTRACT.DEFAULT.SIGWINDOW,
     sigValidity:        constants.CONTRACT.DEFAULT.SIGVALIDITY,
     msValidity:         constants.CONTRACT.DEFAULT.MSVALIDITY,
     sigQty:             constants.CONTRACT.DEFAULT.SIGQTY,
     idtyWindow:         constants.CONTRACT.DEFAULT.IDTYWINDOW,
     msWindow:           constants.CONTRACT.DEFAULT.MSWINDOW,
     xpercent:           constants.CONTRACT.DEFAULT.X_PERCENT,
     percentRot:         constants.CONTRACT.DEFAULT.PERCENTROT,
     blocksRot:          constants.CONTRACT.DEFAULT.BLOCKSROT,
     powDelay:           constants.CONTRACT.DEFAULT.POWDELAY,
     avgGenTime:         constants.CONTRACT.DEFAULT.AVGGENTIME,
     dtDiffEval:         constants.CONTRACT.DEFAULT.DTDIFFEVAL,
     medianTimeBlocks:   constants.CONTRACT.DEFAULT.MEDIANTIMEBLOCKS,
     rootoffset:         0,
     forksize:           constants.BRANCHES.DEFAULT_WINDOW_SIZE
   };
   _.keys(defaultValues).forEach(function(key){
     if (that.conf[key] == undefined) {
       that.conf[key] = defaultValues[key];
     }
   });
   logger.debug('Loading crypto functions...');
   // Extract key pair
   let keyPair = null;
   const keypairOverriden = overrideConf && (overrideConf.salt || overrideConf.passwd);
   if (!keypairOverriden && that.conf.pair) {
     keyPair = keyring.Key(that.conf.pair.pub, that.conf.pair.sec);
   }
   else if (that.conf.passwd || that.conf.salt) {
     keyPair = yield keyring.scryptKeyPair(that.conf.salt, that.conf.passwd);
   }
   else {
     keyPair = keyring.Key(constants.CRYPTO.DEFAULT_KEYPAIR.pub,
         constants.CRYPTO.DEFAULT_KEYPAIR.sec);
   }
   if (!keyPair) {
     throw Error('This node does not have a keypair. Use `duniter wizard key` to fix this.');
   }
   that.keyPair = keyPair;
   that.sign = keyPair.sign;
   // Update services
   [that.IdentityService, that.MembershipService, that.PeeringService, that.BlockchainService, that.TransactionsService].map((service) => {
     service.setConfDAL(that.conf, that.dal, that.keyPair);
   });
   that.router().setConfDAL(that.conf, that.dal);
   return that.conf;
 });
Beispiel #14
0
 this.unplugFileSystem = () => co(function *() {
   logger.debug('Unplugging file system...');
   yield that.dal.close();
 });
Beispiel #15
0
 checkUnitBase: (block) => co(function *() {
   if (block.dividend > 0 && !(block.unitbase === 0 || block.unitbase > 0))
     throw Error('UnitBase must be provided for UD block');
   return true;
 }),
Beispiel #16
0
 Object.keys(deps).forEach(function (name) {
   ch.push(co(this.resolveDependency(branch, name.toLowerCase(), deps[name])))
 }, this)
Beispiel #17
0
 checkBlockSignature: (block) => co(function *() {
   if (!crypto.verify(block.getSignedPart(), block.signature, block.issuer))
     throw Error('Block\'s signature must match');
   return true;
 }),
suite('Extend Task Graph', function() {
  var co = require('co');
  var get = require('./helper/get');
  var cmd = require('./helper/cmd');
  var slugid = require('slugid');

  var scheduler = new (require('taskcluster-client').Scheduler);
  var queue = new (require('taskcluster-client').Queue);

  var LocalWorker = require('../dockerworker');
  var TestWorker = require('../testworker');
  var Task = require('taskcluster-task-factory/task');

  var EXTENSION_LABEL = 'test_task_extension';

  var worker;
  setup(co(function * () {
    worker = new TestWorker(LocalWorker);
    yield worker.launch();
  }));

  teardown(co(function* () {
    yield worker.terminate();
  }));

  test('successfully extend graph', co(function* () {
    var graphId = slugid.v4();
    var primaryTaskId = slugid.v4();
    var customTaskId = slugid.v4();

    var graphTask = Task.create({
      taskGroupId: graphId,
      schedulerId: 'task-graph-scheduler',
      workerType: worker.workerType,
      provisionerId: worker.provisionerId,
      metadata: {
        description: 'testing',
        source: 'http://mytest/',
        owner: '*****@*****.**'
      },
      payload: {
        image: 'taskcluster/test-ubuntu',
        command: cmd('echo "wooot custom!"'),
        features: {},
        artifacts: {},
        maxRunTime: 5 * 60
      }
    });

    var graph = {
      tasks: [{
        taskId: customTaskId,
        label: EXTENSION_LABEL,
        requires: [],
        reruns: 0,
        task: graphTask
      }]
    };

    var json = JSON.stringify(graph);
    var result = yield worker.postToScheduler(graphId, {
      metadata: {
        source: 'http://xfoobar.com'
      },
      scopes: [
        'queue:define-task:' + worker.provisionerId + '/' + worker.workerType
      ],
      tasks: [{
        taskId: primaryTaskId,
        label: 'primary',
        task: {
          metadata: {
            owner: '*****@*****.**'
          },
          payload: {
            image: 'taskcluster/test-ubuntu',
            command: cmd(
              'echo \'' + json + '\' > /graph.json'
            ),
            features: {},
            artifacts: {},
            graphs: ['/graph.json'],
            maxRunTime: 5 * 60
          }
        }
      }]
    });

    assert.equal(result.length, 2, 'two tasks ran in graph');

    var extendingTask = result.filter(function(task) {
      return task.taskId === primaryTaskId
    })[0];

    var customTask = result.filter(function(task) {
      return task.taskId === customTaskId;
    })[0];

    assert.equal(extendingTask.run.state, 'completed', 'extending task should be successful');
    assert.equal(extendingTask.run.reasonResolved, 'completed', 'extending task should be successful');
    assert.ok(
      extendingTask.log.indexOf('extended graph') !== -1,
      'log is shown with graph extension'
    );

    assert.equal(customTask.run.state, 'completed', 'custom task should be successful');
    assert.equal(customTask.run.reasonResolved, 'completed', 'custom task should be successful');
    assert.ok(
      customTask.log.indexOf('wooot custom') !== 1, 'correctly executed commands'
    );
  }));

  test('task failure when graph json is invalid', co(function* () {
    var graphId = slugid.v4();
    var primaryTaskId = slugid.v4();

    var result = yield worker.postToScheduler(graphId, {
      metadata: {
        source: 'http://xfoobar.com'
      },
      scopes: [
        'queue:define-task:' + worker.provisionerId + '/' + worker.workerType
      ],
      tasks: [{
        taskId: primaryTaskId,
        label: 'primary',
        task: {
          metadata: {
            owner: '*****@*****.**'
          },
          payload: {
            image: 'taskcluster/test-ubuntu',
            command: cmd(
              'echo "{foo:bar}" > /graph.json'
            ),
            features: {},
            artifacts: {},
            graphs: ['/graph.json'],
            maxRunTime: 5 * 60
          }
        }
      }]
    });

    console.log(result[0].log);
    assert.ok(
      result[0].log.includes("Invalid json in taskgraph extension path"),
      'Task graph should have been logged as invalid'
    );
    assert.ok(
      result[0].log.includes('foo:bar'),
      'Error message should include contents of invalid json file'
    );
    assert.ok(
      result[0].run.state === 'failed',
      'Task should have been marked as failed'
    );
  }));

  test('Update invalid taskgraph id', co(function* () {
    var graphId = slugid.v4();
    var badGraphId = slugid.v4();
    var primaryTaskId = slugid.v4();

    var graphTask = Task.create({
      taskGroupId: badGraphId,
      schedulerId: 'task-graph-scheduler',
      workerType: worker.workerType,
      provisionerId: worker.provisionerId,
      metadata: {
        description: 'testing',
        source: 'http://mytest/',
        owner: '*****@*****.**'
      },
      payload: {
        image: 'taskcluster/test-ubuntu',
        command: cmd('echo "wooot custom!"'),
        features: {},
        artifacts: {},
        maxRunTime: 5 * 60
      }
    });

    var graph = {
      tasks: [{
        taskId: slugid.v4(),
        label: EXTENSION_LABEL,
        requires: [],
        reruns: 0,
        task: graphTask
      }]
    };

    var json = JSON.stringify(graph);
    var result = yield worker.postToScheduler(graphId, {
      metadata: {
        source: 'http://xfoobar.com'
      },
      scopes: [
        'queue:define-task:' + worker.provisionerId + '/' + worker.workerType
      ],
      tasks: [{
        taskId: primaryTaskId,
        label: 'primary',
        task: {
          metadata: {
            owner: '*****@*****.**'
          },
          payload: {
            image: 'taskcluster/test-ubuntu',
            command: cmd(
              'echo \'' + json + '\' > /graph.json'
            ),
            features: {},
            artifacts: {},
            graphs: ['/graph.json'],
            maxRunTime: 5 * 60
          }
        }
      }]
    });

    assert.ok(
      result[0].log.includes("Graph server error while extending task graph"),
      'Task graph error not logged'
    );
    assert.ok(
      result[0].run.state === 'failed',
      'Task should have been marked as failed'
    );
  }));

  test('Update graph with invalid task scopes', co(function* () {
    var graphId = slugid.v4();
    var primaryTaskId = slugid.v4();

    var graphTask = Task.create({
      taskGroupId: graphId,
      schedulerId: 'task-graph-scheduler',
      workerType: worker.workerType,
      provisionerId: worker.provisionerId,
      // Because this scope is not included in the scopes the graph has, extending
      // the task graph will fail
      scopes: ['this-is-a-bad-scope'],
      metadata: {
        description: 'testing',
        source: 'http://mytest/',
        owner: '*****@*****.**'
      },
      payload: {
        image: 'taskcluster/test-ubuntu',
        command: cmd('echo "wooot custom!"'),
        features: {},
        artifacts: {},
        maxRunTime: 5 * 60
      }
    });

    var graph = {
      tasks: [{
        taskId: slugid.v4(),
        label: EXTENSION_LABEL,
        requires: [],
        reruns: 0,
        task: graphTask
      }]
    };

    var json = JSON.stringify(graph);
    var result = yield worker.postToScheduler(graphId, {
      metadata: {
        source: 'http://xfoobar.com'
      },
      scopes: [
        'queue:define-task:' + worker.provisionerId + '/' + worker.workerType
      ],
      tasks: [{
        taskId: primaryTaskId,
        label: 'primary',
        task: {
          metadata: {
            owner: '*****@*****.**'
          },
          payload: {
            image: 'taskcluster/test-ubuntu',
            command: cmd(
              'echo \'' + json + '\' > /graph.json'
            ),
            features: {},
            artifacts: {},
            graphs: ['/graph.json'],
            maxRunTime: 5 * 60
          }
        }
      }]
    });

    var log = result[0].log;
    assert.ok(
      log.includes("Graph server error while extending task graph"),
      'Task graph error not logged'
    );
    assert.ok(
      log.includes('You do not have sufficient scopes') && log.includes('this-is-a-bad-scope'),
      'Error message did not include authorization failed message'
    );
    assert.ok(
      result[0].run.state === 'failed',
      'Task should have been marked as failed'
    );
  }));
});
Beispiel #19
0
 it('should contain bucket usage', function(done) {
     co(function *() {
         var res = yield upyun.getUsage();
         res.should.have.property('data').not.be.empty;
     })(done)
 })
Beispiel #20
0
 r.tableCreate('user').run(conn, function(err, result) {
   if (err && !err.message.match(/Table `.*` already exists/)) {
     console.log("Could not create the table `users`");
     console.log(err);
     process.exit(1);
   }
   console.log('Table `users` created.');
   co(function * () {
     var p = new Promise((resolve, reject) => {
       r.tableCreate('restaurant').run(conn, function(err, result) {
         if (err && !err.message.match(/Table `.*` already exists/)) {
           console.log("Could not create the table `users`");
           console.log(err);
           process.exit(1);
         }
         console.log('Table restaurant created');
         //create location index on restaurant as well!
         r.table('restaurant').indexCreate('userID').run(conn, function(err, result) {
           if (err) {
             console.log(err);
             process.exit(1);
           }
           r.table('restaurant').indexCreate('location', {geo: true}).run(conn, (err, result) => {
             if (err) {
               console.log(err);
               process.exit(1);
             }
             resolve(result);
           });
         });
       });
     });
     var q = new Promise((resolve, reject) => {
       r.tableCreate('order').run(conn, function(err, result) {
         if (err && !err.message.match(/Table `.*` already exists/)) {
           console.log("Could not create the table `order`");
           console.log(err);
           process.exit(1);
         }
         console.log('Table order created');
         r.table('order').indexCreate('userID').run(conn, function(err, result) {
           if (err)
             console.log(err);
           r.table('order').indexCreate('restaurantID').run(conn, function(err, result) {
             if (err) {
               console.log(err);
               process.exit(1);
             }
             resolve(result);
           });
         });
       });
     });
     return yield[p,
       q];
   }).then((value) => {
     conn.close();
     server.listen(port, () => {
       console.log('server is listening on ' + port);
     });
   });
 });
Beispiel #21
0
 it('should response 200', function(done) {
     co(function *() {
         var res = yield upyun.removeDir('/createdirtest/');
         res.should.have.property('statusCode').be.exactly(200);
     })(done)
 })
Beispiel #22
0
function clone(src, dest) {
  return co(function*() {
    yield mkdirp(src);
    yield ncp(src, dest);
  });
}
Beispiel #23
0
 it('should response 200', function(done) {
     co(function *() {
         var res = yield upyun.uploadFile('/lorem/lorem_md5.txt', 'TESTTEST', true, true, null);
         res.should.have.property('statusCode').be.exactly(200);
     })(done)
 })
Beispiel #24
0
 function write(filepath, data) {
   return co(function*() {
     yield mkdirp(path.dirname(filepath));
     yield fs.writeFileAsync(filepath, data);
   });
 }
'use strict';
var EventEmitter = require('events').EventEmitter,
    co = require('co'),
    fs = require('co-fs');


var configEmitter = new EventEmitter();
var config = null;
exports.getConfig = function() {
	return function(next) {
		if (config) {
			next(null, config);
		} else {
			configEmitter.on('parse', next);
		}
	};
};

co(function* readConfig() {
	var file = yield fs.readFile('config.json', 'utf8');
	config = JSON.parse(file);
	configEmitter.emit('parse', null, config);
});
co(function*() {
  // yield any promise
  //PORT = yield getUsablePort();

  var config = {
    host: 'http://' + IPV4,
    _host_: IPV4,
  };

  if (argv[0] === '--production') {
    // 生产环境下
    webpackConfig.plugins = [
      new webpack.DefinePlugin({
        'process.env': {
          NODE_ENV: '"production"'
        }
      }),
      new webpack.optimize.DedupePlugin(),
      new webpack.optimize.UglifyJsPlugin({
        compress: {
          warnings: false
        },
        sourceMap: false
      }),
      new webpack.optimize.OccurenceOrderPlugin(),
      new webpack.optimize.AggressiveMergingPlugin(),
      new webpack.HotModuleReplacementPlugin()
    ]
  } else {
    // 开发环境下
    webpackConfig.devtool = '#source-map'
  }

  var server;

  function createServer(_port) {
    webpackConfig.entry.app.unshift("webpack-dev-server/client?" + config.host + ":" + _port);
    webpackConfig.entry.app.unshift("webpack/hot/dev-server");

    var compiler = webpack(webpackConfig);
    server = new webpackDevServer(compiler, {
      host: config.host,
      port: _port,
      contentBase: "src/", //指定访问目录
      hot: true,
      inline: true,
      quiet: false,
      watchOptions: {
        aggregateTimeout: 300,
        poll: 1000,
      },
      //publicPath: config_appName + "/static/", //这个应该是必须的,对应到页面引用js资源的目录,但是没有生成真实的js文件
      publicPath: config.host + ":" + _port + "/" + config_appName + "/static/", //这个应该是必须的,对应到页面引用js资源的目录,但是没有生成真实的js文件
      headers: {
        "X-Custom-Header": "yes"
      },
      stats: {
        colors: true
      },
    });

    server.listen(_port, config._host_, function() {
      console.log(config.host + ":" + _port + "/" + config_appName + "/");
      open(config.host + ":" + _port + "/" + config_appName + "/");
    });
  }

  serverDomain.run(function() {
    createServer(PORT);
  });

  serverDomain.on('error', function(err) {
    server.close();
    PORT = PORT + 1;
    createServer(PORT);
  });

}).catch(onerror);
Beispiel #27
0
co(function* (){
    yield db.sync({force: true})
    let adminObj = yield Admin.create({username: '******', email: '*****@*****.**', password: utils.encryptPassword('admin','admin')})
    let adminObj2 = yield Admin.create({username: '******', email: '*****@*****.**', password: utils.encryptPassword('demo','demo')})
    let roleObje = yield Role.create({rolename: '超级管理员', roledesc: '超级管理员描述',type:0})
    let roleObje2 = yield Role.create({rolename: '普通管理员', roledesc: '普通管理员'})
    yield adminObj.addRole([roleObje])
    yield adminObj2.addRole([roleObje2])

    let menu_sys =      yield Menu.create({name: '系统设置', pid: 0, url: '/admin/sys',restype:1,reskey:'sysSet',desc:'系统设置',order:3,icon:'cog'})
    let menu_user =     yield Menu.create({name: '用户管理', pid: menu_sys.id, url: '/admin/sys/user',restype:2,reskey:'sysUserSet',desc:'用户管理',order:1,icon:'users'})
    let menu_res =      yield Menu.create({name: '资源管理', pid: menu_sys.id, url: '/admin/sys/res',restype:2,reskey:'resManage',desc:'资源管理',order:2,icon:'file'})

    let menu_role =       yield Menu.create({name: '角色管理', pid: menu_sys.id, url: '/admin/sys/role',restype:2,reskey:'roleSet',desc:'角色管理',order:3,icon:'envira'})
    let menu_addRes =     yield Menu.create({name: '添加资源', pid: menu_res.id, url: '/admin/sys/res/add',restype:3,reskey:'resAdd',desc:'添加资源',order:1,icon:''})
    let menu_delRes =     yield Menu.create({name: '删除资源', pid: menu_res.id, url: '/admin/sys/res/del',restype:3,reskey:'resDel',desc:'删除资源',order:2,icon:''})
    let menu_editRes =    yield Menu.create({name: '修改资源', pid: menu_res.id, url: '/admin/sys/res/edit',restype:3,reskey:'editRes',desc:'修改资源',order:3,icon:''})
    let menu_addRole =    yield Menu.create({name: '添加角色', pid: menu_role.id, url: '/admin/sys/role/add',restype:3,reskey:'roleAdd',desc:'添加角色',order:1,icon:''})
    let menu_delRole =    yield Menu.create({name: '删除角色', pid: menu_role.id, url: '/admin/sys/role/del',restype:3,reskey:'roleDel',desc:'删除角色',order:2,icon:''})
    let menu_editRole =   yield Menu.create({name: '修改角色', pid: menu_role.id, url: '/admin/sys/role/edit',restype:3,reskey:'roleEdit',desc:'修改角色',order:3,icon:''})
    let menu_aclRole =    yield Menu.create({name: '查看权限列表', pid: menu_role.id, url: '/admin/sys/role/acl',restype:3,reskey:'roleList',desc:'查看权限列表',order:3,icon:''})
    let menu_aclSetRole = yield Menu.create({name: '权限配置', pid: menu_role.id, url: '/admin/sys/role/aclSet',restype:3,reskey:'roleSet',desc:'权限配置',order:3,icon:''})
    let menu_detailRole = yield Menu.create({name: '查看角色详细', pid: menu_role.id, url: '/admin/sys/role/roleDetail',restype:3,reskey:'roleDetail',desc:'查看角色详细',order:3,icon:''})
    let menu_detailRes = yield Menu.create({name: '查看资源详细', pid: menu_res.id, url: '/admin/sys/res/resDetail',restype:3,reskey:'resDetail',desc:'查看资源详细',order:3,icon:''})
    let menu_delUser = yield Menu.create({name: '删除用户', pid: menu_user.id, url: '/admin/sys/user/del',restype:3,reskey:'userDel',desc:'删除用户',order:3,icon:''})
    let menu_editUser = yield Menu.create({name: '修改用户信息', pid: menu_user.id, url: '/admin/sys/user/edit',restype:3,reskey:'userEdit',desc:'修改用户信息,角色',order:3,icon:''})
    let menu_createUser = yield Menu.create({name: '创建用户', pid: menu_user.id, url: '/admin/sys/user/create',restype:3,reskey:'userCreate',desc:'创建用户',order:3,icon:''})
    let menu_detailUser = yield Menu.create({name: '获取用户详细', pid: menu_user.id, url: '/admin/sys/user/detail',restype:3,reskey:'userDetail',desc:'获取用户详细信息',order:3,icon:''})

    /*********以下都是非网站基础功能,是业务和项目相关的*******/
    //监控管理
    let menu_monitor =   yield Menu.create({name: '监控管理', pid: 0, url: '/admin/monitor',restype:1,reskey:'monitor',desc:'监控管理',order:1,icon:'user-secret'})
    let menu_monitor_interface = yield Menu.create({name: '接口监控', pid: menu_monitor.id, url: '/admin/monitor/interface',restype:2,reskey:'monitor_interface',desc:'接口监控',order:4,icon:'binoculars'})
    let menu_monitor_server = yield Menu.create({name: '服务器监控', pid: menu_monitor.id, url: '/admin/monitor/server',restype:2,reskey:'monitor_server',desc:'服务器监控',order:4,icon:'binoculars'})
    /*********以上都是非网站基础功能,是业务和项目相关的*******/

    //给超级管理员预制权限
    yield roleObje.addMenu([
        menu_sys,
        menu_user,
        menu_res,
        menu_role,
        menu_addRes,
        menu_delRes,
        menu_editRes,
        menu_addRole,
        menu_delRole,
        menu_editRole,
        menu_aclRole,
        menu_aclSetRole,
        menu_detailRole,
        menu_detailRes,
        menu_delUser,
        menu_editUser,
        menu_createUser,
        menu_detailUser,
        /*********以下都是非网站基础功能,是业务和项目相关的*******/
        menu_monitor,
        menu_monitor_interface,
        menu_monitor_server])

    //普通管理员权限预制
    yield roleObje2.addMenu([
        menu_monitor,
        menu_monitor_interface,
        menu_monitor_server
    ])

    //yield  db.query("CALL menu_templst(0);")


    console.log('ok ... everything is nice for DB!')
}).catch(function(e){
Beispiel #28
0
//Shows entire HTTP response and its body

"use strict";

let co = require('co');
let request = require('../');

co(function* () {
    let response = yield request('http://google.com');
    let body = response.body;

    console.log('Response: ', response);
    console.log('Body: ', body);
}).catch(function (err) {
    console.err(err);
});
Beispiel #29
0
 objs.forEach(function (obj) {
   ch.push(co(this.getFile(repo, ref, obj, tmp)))
 }, this)
Beispiel #30
0
 this.writeRaw = (raw, type) => co(function *() {
   const parser = documentsMapping[type] && documentsMapping[type].parser;
   const obj = parser.syncWrite(raw);
   return yield that.singleWritePromise(obj);
 });