diff --git a/examples/http.js b/examples/http.js index c915028a..47630fae 100644 --- a/examples/http.js +++ b/examples/http.js @@ -1,22 +1,20 @@ -var port = process.env.OPENSHIFT_NODEJS_PORT || process.env.VCAP_APP_PORT || process.env.PORT || process.argv[2] || 8765; +var fs = require('fs'); +var config = { + port: process.env.OPENSHIFT_NODEJS_PORT || process.env.VCAP_APP_PORT || process.env.PORT || process.argv[2] || 8765 +}; +var Gun = require('../'); // require('gun') -var Gun = require('../'); - -var server = require('http').createServer(function(req, res){ - if(Gun.serve(req, res)){ return } // filters gun requests! - require('fs').createReadStream(require('path').join(__dirname, req.url)).on('error',function(){ // static files! - res.writeHead(200, {'Content-Type': 'text/html'}); - res.end(require('fs') - .readFileSync(require('path') - .join(__dirname, 'index.html') // or default to index - )); - }).pipe(res); // stream -}); +if(process.env.HTTPS_KEY){ + config.key = fs.readFileSync(process.env.HTTPS_KEY); + config.cert = fs.readFileSync(process.env.HTTPS_CERT); + config.server = require('https').createServer(config, Gun.serve(__dirname)); +} else { + config.server = require('http').createServer(Gun.serve(__dirname)); +} var gun = Gun({ - web: server + web: config.server }); -server.listen(port); - -console.log('Server started on port ' + port + ' with /gun'); \ No newline at end of file +config.server.listen(config.port); +console.log('Server started on port ' + config.port + ' with /gun'); \ No newline at end of file diff --git a/lib/serve.js b/lib/serve.js index 190261cd..1e9cfc39 100644 --- a/lib/serve.js +++ b/lib/serve.js @@ -1,4 +1,18 @@ -module.exports = function serve(req, res, next){ +var fs = require('fs'); +var path = require('path'); + +function CDN(dir){ + return function(req, res){ + if(serve(req, res)){ return } // filters GUN requests! + fs.createReadStream(path.join(dir, req.url)).on('error',function(){ // static files! + res.writeHead(200, {'Content-Type': 'text/html'}); + res.end(fs.readFileSync(path.join(dir, 'index.html'))); // or default to index + }).pipe(res); // stream + } +} + +function serve(req, res, next){ + if(typeof req === 'string'){ return CDN(req) } if(!req || !res){ return false } next = next || serve; if(!req.url){ return next() } @@ -17,4 +31,6 @@ module.exports = function serve(req, res, next){ } } return next(); -} \ No newline at end of file +} + +module.exports = serve; \ No newline at end of file