@@ -110,6 +110,23 @@ Server.prototype.start = function (done) {
110110
111111 controller ( router )
112112
113+ var redirectInstance
114+ var redirectServer
115+ var redirectPort = config . get ( 'server.redirectPort' )
116+ if ( redirectPort > 0 ) {
117+ redirectInstance = http . createServer ( ( req , res ) => {
118+ var port = config . get ( 'server.port' )
119+ var hostname = req . headers . host . split ( ':' ) [ 0 ]
120+ var location = 'https://' + hostname + ':' + port + req . url
121+
122+ res . setHeader ( 'Location' , location )
123+ res . statusCode = 301
124+ res . end ( )
125+ } )
126+ redirectServer = this . redirectServer = redirectInstance . listen ( redirectPort )
127+ redirectServer . on ( 'listening' , function ( ) { onRedirectListening ( this ) } )
128+ }
129+
113130 var app = createServer ( ( req , res ) => {
114131 config . updateConfigDataForDomain ( req . headers . host )
115132
@@ -153,9 +170,11 @@ Server.prototype.start = function (done) {
153170}
154171
155172function createServer ( listener ) {
156- var protocol = config . get ( 'server.protocol' ) || 'http'
173+ var protocol = config . get ( 'server.protocol' )
157174
158- if ( protocol === 'https' ) {
175+ if ( protocol === 'http' ) {
176+ return http . createServer ( listener )
177+ } else if ( protocol === 'https' ) {
159178 var readFileSyncSafe = ( path ) => {
160179 try {
161180 return fs . readFileSync ( path )
@@ -203,9 +222,6 @@ function createServer (listener) {
203222 throw new Error ( exPrefix + ex . message )
204223 }
205224 }
206- } else {
207- // default to http
208- return http . createServer ( listener )
209225 }
210226}
211227
@@ -229,6 +245,21 @@ function onListening (server) {
229245 }
230246}
231247
248+ function onRedirectListening ( server ) {
249+ var env = config . get ( 'env' )
250+ var address = server . address ( )
251+
252+ if ( env !== 'test' ) {
253+ var startText = '\n ----------------------------\n'
254+ startText += " Started HTTP -> HTTPS Redirect\n"
255+ startText += ' ----------------------------\n'
256+ startText += ' Server: ' . green + address . address + ':' + address . port + '\n'
257+ startText += ' ----------------------------\n'
258+
259+ console . log ( startText )
260+ }
261+ }
262+
232263function onStatusListening ( server ) {
233264 var env = config . get ( 'env' )
234265 var address = server . address ( )
0 commit comments