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 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) { | ||||
|     if (content && '/' === req.url) { | ||||
|       // res.setHeader('Content-Type', 'application/octet-stream');
 | ||||
| @ -15,36 +35,18 @@ module.exports = function (opts) { | ||||
|       return; | ||||
|     } | ||||
|     var done = finalhandler(req, res); | ||||
|     var livereload = ''; | ||||
|     var addLen = 0; | ||||
| 
 | ||||
|     if (opts.livereload) { | ||||
|       livereload = '<script src="//' | ||||
|       res.__my_livereload = '<script src="//' | ||||
|         + (res.getHeader('Host') || opts.servername).split(':')[0] | ||||
|         + ':' + opts.lrPort + '/livereload.js?snipver=1"></script>'; | ||||
|       addLen = livereload.length; | ||||
|         + ':35729/livereload.js?snipver=1"></script>'; | ||||
|       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() { | ||||
|       serve(req, res, function (err) { | ||||
|         if (err) { return done(err); } | ||||
|  | ||||
| @ -45,7 +45,7 @@ | ||||
|     "le-challenge-dns": "^2.0.1", | ||||
|     "le-challenge-fs": "^2.0.5", | ||||
|     "letsencrypt-express": "^2.0.2", | ||||
|     "livereload": "^0.4.0", | ||||
|     "livereload": "^0.5.0", | ||||
|     "localhost.daplie.com-certificates": "^1.2.0", | ||||
|     "minimist": "^1.1.1", | ||||
|     "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 httpPort = 80; | ||||
| var httpsPort = 443; | ||||
| var lrPort = 35729; | ||||
| var portFallback = 8443; | ||||
| var insecurePortFallback = 4080; | ||||
| 
 | ||||
| @ -139,11 +140,19 @@ function createServer(port, pubdir, content, opts) { | ||||
|     server.listen(port, function () { | ||||
|       opts.port = port; | ||||
| 
 | ||||
|       opts.lrPort = 35729; | ||||
|       var livereload = require('livereload'); | ||||
|       var server2 = livereload.createServer({ https: opts.httpsOptions, port: opts.lrPort }); | ||||
|       if (opts.livereload) { | ||||
|         opts.lrPort = opts.lrPort || 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) { | ||||
|         return createInsecureServer(opts.insecurePort, pubdir, opts).then(resolve); | ||||
| @ -195,6 +204,7 @@ function run() { | ||||
| 
 | ||||
|   // letsencrypt
 | ||||
|   var cert = require('localhost.daplie.com-certificates').merge({}); | ||||
|   var secureContext; | ||||
| 
 | ||||
|   var opts = { | ||||
|     agreeTos: argv.agreeTos || argv['agree-tos'] | ||||
| @ -211,7 +221,10 @@ function run() { | ||||
|   var p; | ||||
| 
 | ||||
|   opts.httpsOptions.SNICallback = function (servername, cb) { | ||||
|     cb(null, tls.createSecureContext(opts.httpsOptions)); | ||||
|     if (!secureContext) { | ||||
|       secureContext = tls.createSecureContext(opts.httpsOptions); | ||||
|     } | ||||
|     cb(null, secureContext); | ||||
|     return; | ||||
|   }; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user