mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
161 lines
4.6 KiB
JavaScript
161 lines
4.6 KiB
JavaScript
(function() {
|
|
'use strict';
|
|
|
|
var DIR = __dirname + '/../',
|
|
DIR_LIB = DIR + 'lib/',
|
|
DIR_SERVER = DIR_LIB + 'server/',
|
|
|
|
WIN = process.platform === 'WIN32',
|
|
|
|
http = require('http'),
|
|
|
|
Util = require(DIR_LIB + 'util'),
|
|
CloudFunc = require(DIR_LIB + 'cloudfunc'),
|
|
|
|
minify = require(DIR_SERVER + 'minify'),
|
|
|
|
terminal = !WIN ? require(DIR_SERVER + 'terminal') : function() {},
|
|
|
|
rest = require(DIR_SERVER + 'rest'),
|
|
route = require(DIR_SERVER + 'route'),
|
|
|
|
config = require(DIR_SERVER + 'config'),
|
|
|
|
join = require(DIR_SERVER + 'join'),
|
|
ponse = require(DIR_SERVER + 'ponse'),
|
|
express = require(DIR_SERVER + 'express'),
|
|
tryRequire = require(DIR_SERVER + 'tryRequire'),
|
|
|
|
io = tryRequire('socket.io'),
|
|
emptyFunc = function(req, res, next) {
|
|
Util.exec(next);
|
|
},
|
|
|
|
webconsole, expressApp;
|
|
|
|
emptyFunc.middle = function() {
|
|
return emptyFunc;
|
|
};
|
|
|
|
webconsole = tryRequire('console-io', function(error) {
|
|
if (error)
|
|
Util.log(error.message);
|
|
}) || emptyFunc;
|
|
|
|
/**
|
|
* start server function
|
|
*
|
|
*/
|
|
module.exports = function() {
|
|
var port, ip,
|
|
HTTP = 'http://';
|
|
|
|
port = process.env.PORT || /* c9 */
|
|
process.env.VCAP_APP_PORT || /* cloudfoundry */
|
|
config('port'),
|
|
|
|
ip = process.env.IP || /* c9 */
|
|
config('ip') ||
|
|
'0.0.0.0';
|
|
|
|
if (config('server'))
|
|
createServer(port, ip, HTTP);
|
|
};
|
|
|
|
function createServer(port, ip, protocol, callback) {
|
|
var server, app, respondApp,
|
|
|
|
isOption = function(name) {
|
|
return config(name);
|
|
},
|
|
|
|
isMinify = isOption.bind(null, 'minify'),
|
|
isOnline = isOption.bind(null, 'online'),
|
|
isCache = isOption.bind(null, 'cache'),
|
|
|
|
ponseStatic = ponse.static(DIR, {
|
|
cache: isCache
|
|
}),
|
|
|
|
funcs = [
|
|
rest,
|
|
route,
|
|
|
|
join({
|
|
minify: isMinify
|
|
}),
|
|
|
|
webconsole.middle('/console', isMinify, isOnline),
|
|
|
|
minify({
|
|
dir : DIR,
|
|
log : true,
|
|
is : isMinify
|
|
})
|
|
];
|
|
|
|
expressApp = express.getApp(funcs, {
|
|
auth : config.auth,
|
|
username: config.username,
|
|
password: config.password
|
|
});
|
|
|
|
if (expressApp) {
|
|
app = expressApp;
|
|
app.use(ponseStatic);
|
|
} else {
|
|
funcs.push(ponseStatic);
|
|
|
|
respondApp = Util.exec.with(respond, funcs);
|
|
app = respondApp;
|
|
}
|
|
|
|
server = http.createServer(app);
|
|
|
|
server.on('error', function(error) {
|
|
Util.log(error);
|
|
Util.exec(callback, error);
|
|
});
|
|
|
|
server.listen(port, ip);
|
|
|
|
logServer(port, ip, protocol);
|
|
addSockets(server);
|
|
}
|
|
|
|
function logServer(port, ip, http) {
|
|
Util.log('url:', http + ip + ':' + port);
|
|
}
|
|
|
|
function addSockets(server) {
|
|
var socket, msg,
|
|
status = 'off';
|
|
|
|
if (io && config('socket')) {
|
|
socket = io.listen(server);
|
|
|
|
if (socket) {
|
|
status = 'on';
|
|
|
|
webconsole({
|
|
socket: socket
|
|
});
|
|
|
|
terminal(socket);
|
|
}
|
|
}
|
|
|
|
msg = CloudFunc.formatMsg('sockets', '', status);
|
|
|
|
Util.log(msg);
|
|
}
|
|
|
|
function respond(funcs, req, res) {
|
|
funcs = funcs.map(function(func) {
|
|
return Util.exec.with(func, req, res);
|
|
});
|
|
|
|
Util.exec.series(funcs);
|
|
}
|
|
|
|
})();
|