Beispiel #1
0
var loadSockets = function() {
    config.servers.forEach(function(server) {
        var socket = require('socket.io-client')(server);
        sockets.push(socket);
        socket.on('connect', function(data){
            console.log('connect', data);
        });
    });
};
Beispiel #2
0
app.use(async (ctx, next) => {

  var hostname = ctx.hostname
  var serverConfig

  config.servers.some(item => !!(serverConfig = item.name == hostname ? item : false))

  if (!serverConfig) {
    ctx.status = 404
    return ctx.body = 'no server:' + hostname
  }

  if (ctx.method === 'POST') {
    return proxyTo(serverConfig, ctx)
  }

  var path = ctx.path
  if (typeof serverConfig.rewrite === 'function') {
    path = serverConfig.rewrite(path)
  }

  var extname = PATH.extname(path).toLowerCase()

  //ctx.type = mime[extname]
  mime[extname] && ctx.set('Content-Type', mime[extname])

  var filePath = PATH.join(serverConfig.root, path)
  var originFilePath = PATH.join(serverConfig.root, ctx.path)

  var reg = new RegExp('^' + serverConfig.root)

  if (!reg.test(filePath) || !reg.test(originFilePath)) {
    ctx.status = 403
    return ctx.body = 'path is unavailable'
  }

  var files = filePath === originFilePath ? [filePath] : [filePath, originFilePath]

  var respond = ['.js'].indexOf(extname) != -1 ? responseWithCharset : responseAsStream

  var responsed = false
  for (var file of files) {
    if (responsed = await respond(file, ctx)) break
  }

  if (!responsed) {
    return proxyTo(serverConfig, ctx)
  }
})
Beispiel #3
0
function parseDomain(conf) {
  var rootDomain = conf.site_root.replace(/https?:\/\//i, '').split(':')[0] || 'localhost';
  conf.rootDomain = rootDomain = rootDomain.split('.').slice(1).join('.') || rootDomain;

  // analyse how many serves do we get
  if (conf.servers && conf.servers.length) {
    conf.servers.forEach(function(arg, i) {
      var obj = {}; // config object
      if (arg instanceof Array) {
        obj.hostname = arg[0];
        obj.port = arg[1];
        obj.isProxied = arg[2] || false;
      } else {
        obj.hostname = arg;
      }
      var port_suffix = conf.isProxied ? '' : (':' + (obj.port || conf.port));
      obj.root = 'http://' + obj.hostname + '.' + rootDomain + port_suffix;
      conf.servers[i] = obj;
    });
  }
}
Beispiel #4
0
function intervalLoop() {

	var	workArray = config.servers.map(function(server, index) {
		return function(requestion) {
			fetchDataForServer(requestion, server, lastResultArray[index]);
		};
	});

	RQ.parallel(workArray)(function(success, failure) {
		if (failure) {
			console.log('Error:', failure);
		}
		else {
			lastResultArray = success;
			console.log('ServerStatus fetched and set to graphite');
		}
	});

	var clusters = _.values(_.groupBy(config.servers, 'cluster'));
	var work = clusters.map(function(servers) {

		var	replicaWork = servers.map(function(server, index) {
			return function(requestion) {
				fetchReplicaStatus(requestion, server);
			};
		});

		return RQ.fallback(replicaWork);
	});

	RQ.parallel(work)(function(success, failure) {
		if (failure) {
			console.log('Error:', failure);
		}
		else {
			console.log('ReplicaSetStatus fetched and set to graphite');
		}
	});
}