diff --git a/server/server.js b/server/server.js index d588f79794..e950611d24 100755 --- a/server/server.js +++ b/server/server.js @@ -2,32 +2,34 @@ require('dotenv').load(); require('pmx').init(); // handle uncaught exceptions. Forever will restart process on shutdown -var R = require('ramda'), - assign = require('lodash').assign, - loopback = require('loopback'), - boot = require('loopback-boot'), - accepts = require('accepts'), - cookieParser = require('cookie-parser'), - compress = require('compression'), - session = require('express-session'), - logger = require('morgan'), - errorHandler = require('errorhandler'), - methodOverride = require('method-override'), - bodyParser = require('body-parser'), - helmet = require('helmet'), - MongoStore = require('connect-mongo')(session), - flash = require('express-flash'), - path = require('path'), - expressValidator = require('express-validator'), - forceDomain = require('forcedomain'), - lessMiddleware = require('less-middleware'), - pmx = require('pmx'), +var https = require('https'), + sslConfig = require('./ssl-config'), + R = require('ramda'), + assign = require('lodash').assign, + loopback = require('loopback'), + boot = require('loopback-boot'), + accepts = require('accepts'), + cookieParser = require('cookie-parser'), + compress = require('compression'), + session = require('express-session'), + logger = require('morgan'), + errorHandler = require('errorhandler'), + methodOverride = require('method-override'), + bodyParser = require('body-parser'), + helmet = require('helmet'), + MongoStore = require('connect-mongo')(session), + flash = require('express-flash'), + path = require('path'), + expressValidator = require('express-validator'), + forceDomain = require('forcedomain'), + lessMiddleware = require('less-middleware'), + pmx = require('pmx'), - passportProviders = require('./passport-providers'), - /** - * API keys and Passport configuration. - */ - secrets = require('./../config/secrets'); + passportProviders = require('./passport-providers'), + /** + * API keys and Passport configuration. + */ + secrets = require('./../config/secrets'); var generateKey = require('loopback-component-passport/lib/models/utils').generateKey; @@ -218,8 +220,8 @@ var passportOptions = { // NOTE(berks): get email or set to null. // MongoDB indexs email but can be sparse(blank) var email = emails && emails[0] && emails[0].value ? - emails[0].value : - null; + emails[0].value : + null; var username = (profile.username || profile.id); username = typeof username === 'string' ? username.toLowerCase() : username; @@ -295,16 +297,34 @@ if (process.env.NODE_ENV === 'development') { * Start Express server. */ -app.start = function() { - app.listen(app.get('port'), function () { - console.log( - 'FreeCodeCamp server listening on port %d in %s mode', - app.get('port'), - app.get('env') - ); - }); +var options = { + key: sslConfig.privateKey, + cert: sslConfig.certificate }; +if (process.env.NODE_ENV === 'production') { + app.start = function() { + var server = https.createServer(options, app); + server.listen('https://' + process.env.HOST + ':' + app.get('port'), function () { + console.log( + 'FreeCodeCamp server listening on port %d in %s mode', + app.get('port'), + app.get('env') + ); + }); + }; +} else { + app.start = function () { + app.listen(app.get('port'), function () { + console.log( + 'FreeCodeCamp server listening on port %d in %s mode', + app.get('port'), + app.get('env') + ); + }); + }; +} + // start the server if `$ node server.js` if (require.main === module) { app.start(); diff --git a/server/ssl-config.js b/server/ssl-config.js new file mode 100644 index 0000000000..7ac90dc7cf --- /dev/null +++ b/server/ssl-config.js @@ -0,0 +1,16 @@ +/** + * Created by nathanleniz on 6/16/15. + */ + +var path = require('path'); +var fs = require('fs'); + +if (process.env.NODE_ENV === 'production') { + exports.privateKey = + fs.readFileSync(path.join(__dirname, + '../../private/privatekey.pem')).toString(); + exports.certificate = + fs.readFileSync(path.join(__dirname, + '../../private/certificate.pem')).toString(); + +} diff --git a/server/views/coursewares/showBonfire.jade b/server/views/coursewares/showBonfire.jade index 005ed1f1b7..d18abe290e 100644 --- a/server/views/coursewares/showBonfire.jade +++ b/server/views/coursewares/showBonfire.jade @@ -11,7 +11,7 @@ block content link(rel='stylesheet', href='/js/lib/codemirror/lib/codemirror.css') link(rel='stylesheet', href='/js/lib/codemirror/addon/lint/lint.css') link(rel='stylesheet', href='/js/lib/codemirror/theme/monokai.css') - link(rel="stylesheet", href="http://fonts.googleapis.com/css?family=Ubuntu+Mono") + link(rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono") script(type='text/javascript', src='/js/lib/codemirror/mode/javascript/javascript.js') script(type='text/javascript', src='/js/lib/jailed/jailed.js') script(type='text/javascript', src='/js/lib/coursewares/sandbox.js') diff --git a/server/views/coursewares/showJS.jade b/server/views/coursewares/showJS.jade index 25bb25cd3f..58737351ac 100644 --- a/server/views/coursewares/showJS.jade +++ b/server/views/coursewares/showJS.jade @@ -10,7 +10,7 @@ block content link(rel='stylesheet', href='/js/lib/codemirror/lib/codemirror.css') link(rel='stylesheet', href='/js/lib/codemirror/addon/lint/lint.css') link(rel='stylesheet', href='/js/lib/codemirror/theme/monokai.css') - link(rel="stylesheet", href="http://fonts.googleapis.com/css?family=Ubuntu+Mono") + link(rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono") script(src='/js/lib/codemirror/mode/javascript/javascript.js') script(src='/js/lib/jailed/jailed.js') script(src='/js/lib/coursewares/sandbox.js')