mirror of
https://github.com/arnaucube/socketioMEANseed.git
synced 2026-02-07 11:46:48 +01:00
init
This commit is contained in:
139
www/node_modules/http-server/lib/http-server.js
generated
vendored
Normal file
139
www/node_modules/http-server/lib/http-server.js
generated
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
'use strict';
|
||||
|
||||
var fs = require('fs'),
|
||||
union = require('union'),
|
||||
ecstatic = require('ecstatic'),
|
||||
httpProxy = require('http-proxy'),
|
||||
corser = require('corser');
|
||||
|
||||
//
|
||||
// Remark: backwards compatibility for previous
|
||||
// case convention of HTTP
|
||||
//
|
||||
exports.HttpServer = exports.HTTPServer = HttpServer;
|
||||
|
||||
/**
|
||||
* Returns a new instance of HttpServer with the
|
||||
* specified `options`.
|
||||
*/
|
||||
exports.createServer = function (options) {
|
||||
return new HttpServer(options);
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor function for the HttpServer object
|
||||
* which is responsible for serving static files along
|
||||
* with other HTTP-related features.
|
||||
*/
|
||||
function HttpServer(options) {
|
||||
options = options || {};
|
||||
|
||||
if (options.root) {
|
||||
this.root = options.root;
|
||||
}
|
||||
else {
|
||||
try {
|
||||
fs.lstatSync('./public');
|
||||
this.root = './public';
|
||||
}
|
||||
catch (err) {
|
||||
this.root = './';
|
||||
}
|
||||
}
|
||||
|
||||
this.headers = options.headers || {};
|
||||
|
||||
this.cache = options.cache === undefined ? 3600 : options.cache; // in seconds.
|
||||
this.showDir = options.showDir !== 'false';
|
||||
this.autoIndex = options.autoIndex !== 'false';
|
||||
this.contentType = options.contentType || 'application/octet-stream';
|
||||
|
||||
if (options.ext) {
|
||||
this.ext = options.ext === true
|
||||
? 'html'
|
||||
: options.ext;
|
||||
}
|
||||
|
||||
var before = options.before ? options.before.slice() : [];
|
||||
|
||||
before.push(function (req, res) {
|
||||
if (options.logFn) {
|
||||
options.logFn(req, res);
|
||||
}
|
||||
|
||||
res.emit('next');
|
||||
});
|
||||
|
||||
if (options.cors) {
|
||||
this.headers['Access-Control-Allow-Origin'] = '*';
|
||||
this.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Range';
|
||||
if (options.corsHeaders) {
|
||||
options.corsHeaders.split(/\s*,\s*/)
|
||||
.forEach(function (h) { this.headers['Access-Control-Allow-Headers'] += ', ' + h; }, this);
|
||||
}
|
||||
before.push(corser.create(options.corsHeaders ? {
|
||||
requestHeaders: this.headers['Access-Control-Allow-Headers'].split(/\s*,\s*/)
|
||||
} : null));
|
||||
}
|
||||
|
||||
if (options.robots) {
|
||||
before.push(function (req, res) {
|
||||
if (req.url === '/robots.txt') {
|
||||
res.setHeader('Content-Type', 'text/plain');
|
||||
var robots = options.robots === true
|
||||
? 'User-agent: *\nDisallow: /'
|
||||
: options.robots.replace(/\\n/, '\n');
|
||||
|
||||
return res.end(robots);
|
||||
}
|
||||
|
||||
res.emit('next');
|
||||
});
|
||||
}
|
||||
|
||||
before.push(ecstatic({
|
||||
root: this.root,
|
||||
cache: this.cache,
|
||||
showDir: this.showDir,
|
||||
autoIndex: this.autoIndex,
|
||||
defaultExt: this.ext,
|
||||
contentType: this.contentType,
|
||||
handleError: typeof options.proxy !== 'string'
|
||||
}));
|
||||
|
||||
if (typeof options.proxy === 'string') {
|
||||
var proxy = httpProxy.createProxyServer({});
|
||||
before.push(function (req, res) {
|
||||
proxy.web(req, res, {
|
||||
target: options.proxy,
|
||||
changeOrigin: true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var serverOptions = {
|
||||
before: before,
|
||||
headers: this.headers,
|
||||
onError: function (err, req, res) {
|
||||
if (options.logFn) {
|
||||
options.logFn(req, res, err);
|
||||
}
|
||||
|
||||
res.end();
|
||||
}
|
||||
};
|
||||
|
||||
if (options.https) {
|
||||
serverOptions.https = options.https;
|
||||
}
|
||||
|
||||
this.server = union.createServer(serverOptions);
|
||||
}
|
||||
|
||||
HttpServer.prototype.listen = function () {
|
||||
this.server.listen.apply(this.server, arguments);
|
||||
};
|
||||
|
||||
HttpServer.prototype.close = function () {
|
||||
return this.server.close();
|
||||
};
|
||||
Reference in New Issue
Block a user