forked from coolaj86/goldilocks.js
merge
This commit is contained in:
commit
b3baa626aa
52
app.js
52
app.js
|
@ -8,6 +8,26 @@ module.exports = function (opts) {
|
||||||
var index = serveIndex(opts.public);
|
var index = serveIndex(opts.public);
|
||||||
var content = opts.content;
|
var content = opts.content;
|
||||||
|
|
||||||
|
function _reloadWrite(data, enc, cb) {
|
||||||
|
/*jshint validthis: true */
|
||||||
|
if (this.headersSent) {
|
||||||
|
this.__write(data, enc, cb);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/html/i.test(this.getHeader('Content-Type'))) {
|
||||||
|
this.__write(data, enc, cb);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.getHeader('Content-Length')) {
|
||||||
|
this.setHeader('Content-Length', this.getHeader('Content-Length') + this.__my_addLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.__write(this.__my_livereload);
|
||||||
|
this.__write(data, enc, cb);
|
||||||
|
}
|
||||||
|
|
||||||
return function (req, res) {
|
return function (req, res) {
|
||||||
if (content && '/' === req.url) {
|
if (content && '/' === req.url) {
|
||||||
// res.setHeader('Content-Type', 'application/octet-stream');
|
// res.setHeader('Content-Type', 'application/octet-stream');
|
||||||
|
@ -15,36 +35,18 @@ module.exports = function (opts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var done = finalhandler(req, res);
|
var done = finalhandler(req, res);
|
||||||
var livereload = '';
|
|
||||||
var addLen = 0;
|
|
||||||
|
|
||||||
if (opts.livereload) {
|
if (opts.livereload) {
|
||||||
livereload = '<script src="//'
|
res.__my_livereload = '<script src="//'
|
||||||
+ (res.getHeader('Host') || opts.servername).split(':')[0]
|
+ (res.getHeader('Host') || opts.servername).split(':')[0]
|
||||||
+ ':' + opts.lrPort + '/livereload.js?snipver=1"></script>';
|
+ ':35729/livereload.js?snipver=1"></script>';
|
||||||
addLen = livereload.length;
|
res.__my_addLen = res.__my_livereload.length;
|
||||||
|
|
||||||
|
// TODO modify prototype instead of each instance?
|
||||||
|
res.__write = res.write;
|
||||||
|
res.write = _reloadWrite;
|
||||||
}
|
}
|
||||||
|
|
||||||
res.__write = res.write;
|
|
||||||
res.write = function (data, enc, cb) {
|
|
||||||
if (this.headersSent) {
|
|
||||||
this.__write(data, enc, cb);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!/html/i.test(this.getHeader('Content-Type'))) {
|
|
||||||
this.__write(data, enc, cb);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.getHeader('Content-Length')) {
|
|
||||||
this.setHeader('Content-Length', this.getHeader('Content-Length') + addLen);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.__write(livereload);
|
|
||||||
this.__write(data, enc, cb);
|
|
||||||
};
|
|
||||||
|
|
||||||
function serveStatic() {
|
function serveStatic() {
|
||||||
serve(req, res, function (err) {
|
serve(req, res, function (err) {
|
||||||
if (err) { return done(err); }
|
if (err) { return done(err); }
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
"le-challenge-dns": "^2.0.1",
|
"le-challenge-dns": "^2.0.1",
|
||||||
"le-challenge-fs": "^2.0.5",
|
"le-challenge-fs": "^2.0.5",
|
||||||
"letsencrypt-express": "^2.0.2",
|
"letsencrypt-express": "^2.0.2",
|
||||||
"livereload": "^0.4.0",
|
"livereload": "^0.5.0",
|
||||||
"localhost.daplie.com-certificates": "^1.2.0",
|
"localhost.daplie.com-certificates": "^1.2.0",
|
||||||
"minimist": "^1.1.1",
|
"minimist": "^1.1.1",
|
||||||
"redirect-https": "^1.1.0",
|
"redirect-https": "^1.1.0",
|
||||||
|
|
23
serve.js
23
serve.js
|
@ -10,6 +10,7 @@ var path = require('path');
|
||||||
var DDNS = require('ddns-cli');
|
var DDNS = require('ddns-cli');
|
||||||
var httpPort = 80;
|
var httpPort = 80;
|
||||||
var httpsPort = 443;
|
var httpsPort = 443;
|
||||||
|
var lrPort = 35729;
|
||||||
var portFallback = 8443;
|
var portFallback = 8443;
|
||||||
var insecurePortFallback = 4080;
|
var insecurePortFallback = 4080;
|
||||||
|
|
||||||
|
@ -139,11 +140,19 @@ function createServer(port, pubdir, content, opts) {
|
||||||
server.listen(port, function () {
|
server.listen(port, function () {
|
||||||
opts.port = port;
|
opts.port = port;
|
||||||
|
|
||||||
opts.lrPort = 35729;
|
if (opts.livereload) {
|
||||||
var livereload = require('livereload');
|
opts.lrPort = opts.lrPort || lrPort;
|
||||||
var server2 = livereload.createServer({ https: opts.httpsOptions, port: opts.lrPort });
|
var livereload = require('livereload');
|
||||||
|
var server2 = livereload.createServer({
|
||||||
|
https: opts.httpsOptions
|
||||||
|
, port: opts.lrPort
|
||||||
|
, exclusions: [ '.hg', '.git', '.svn', 'node_modules' ]
|
||||||
|
});
|
||||||
|
|
||||||
server2.watch(pubdir);
|
console.info("[livereload] watching " + pubdir);
|
||||||
|
console.warn("WARNING: If CPU usage spikes to 100% it's because too many files are being watched");
|
||||||
|
server2.watch(pubdir);
|
||||||
|
}
|
||||||
|
|
||||||
if ('false' !== opts.insecurePort && httpPort !== opts.insecurePort) {
|
if ('false' !== opts.insecurePort && httpPort !== opts.insecurePort) {
|
||||||
return createInsecureServer(opts.insecurePort, pubdir, opts).then(resolve);
|
return createInsecureServer(opts.insecurePort, pubdir, opts).then(resolve);
|
||||||
|
@ -195,6 +204,7 @@ function run() {
|
||||||
|
|
||||||
// letsencrypt
|
// letsencrypt
|
||||||
var cert = require('localhost.daplie.com-certificates').merge({});
|
var cert = require('localhost.daplie.com-certificates').merge({});
|
||||||
|
var secureContext;
|
||||||
|
|
||||||
var opts = {
|
var opts = {
|
||||||
agreeTos: argv.agreeTos || argv['agree-tos']
|
agreeTos: argv.agreeTos || argv['agree-tos']
|
||||||
|
@ -211,7 +221,10 @@ function run() {
|
||||||
var p;
|
var p;
|
||||||
|
|
||||||
opts.httpsOptions.SNICallback = function (servername, cb) {
|
opts.httpsOptions.SNICallback = function (servername, cb) {
|
||||||
cb(null, tls.createSecureContext(opts.httpsOptions));
|
if (!secureContext) {
|
||||||
|
secureContext = tls.createSecureContext(opts.httpsOptions);
|
||||||
|
}
|
||||||
|
cb(null, secureContext);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue