| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports.scrubTheDub = function (req, res, redirectives) { | 
					
						
							| 
									
										
										
										
											2015-11-14 04:25:12 +00:00
										 |  |  |   // hack for bricked app-cache
 | 
					
						
							|  |  |  |   // Also 301 redirects will not work for appcache (must issue html)
 | 
					
						
							|  |  |  |   if (require('./unbrick-appcache').unbrick(req, res)) { | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  |     return true; | 
					
						
							| 
									
										
										
										
											2015-11-14 04:25:12 +00:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // TODO port number for non-443
 | 
					
						
							|  |  |  |   var escapeHtml = require('escape-html'); | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  |   var newLocation; | 
					
						
							|  |  |  |   var safeLocation; | 
					
						
							| 
									
										
										
										
											2015-11-21 12:36:22 +00:00
										 |  |  |   // TODO req.hostname
 | 
					
						
							|  |  |  |   var hostname = (req.headers.host||'').split(':')[0]; | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   if (redirectives) { | 
					
						
							| 
									
										
										
										
											2015-11-21 12:36:22 +00:00
										 |  |  |     newLocation = require('./hostname-redirects').redirectTo(hostname, redirectives); | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  |     if (!newLocation) { | 
					
						
							|  |  |  |       return false; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-11-23 13:47:47 +00:00
										 |  |  |     newLocation = 'http://' + newLocation; | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  |   } else { | 
					
						
							| 
									
										
										
										
											2015-11-23 09:31:54 +00:00
										 |  |  |     newLocation = 'https://' + hostname.replace(/^www\./, ''); | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2015-11-23 09:31:54 +00:00
										 |  |  |   newLocation += req.url; | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  |   safeLocation = escapeHtml(newLocation); | 
					
						
							| 
									
										
										
										
											2015-11-14 04:25:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   var metaRedirect = '' | 
					
						
							|  |  |  |     + '<html>\n' | 
					
						
							|  |  |  |     + '<head>\n' | 
					
						
							|  |  |  |     + '  <style>* { background-color: white; color: white; text-decoration: none; }</style>\n' | 
					
						
							|  |  |  |     + '  <META http-equiv="refresh" content="0;URL=' + safeLocation + '">\n' | 
					
						
							|  |  |  |     + '</head>\n' | 
					
						
							|  |  |  |     + '<body style="display: none;">\n' | 
					
						
							|  |  |  |     + '  <p>You requested an old resource. Please use this instead: \n' | 
					
						
							|  |  |  |     + '    <a href="' + safeLocation + '">' + safeLocation + '</a></p>\n' | 
					
						
							|  |  |  |     + '</body>\n' | 
					
						
							|  |  |  |     + '</html>\n' | 
					
						
							|  |  |  |     ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   res.end(metaRedirect); | 
					
						
							| 
									
										
										
										
											2015-11-21 06:42:23 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   return true; | 
					
						
							| 
									
										
										
										
											2015-11-14 04:25:12 +00:00
										 |  |  | }; |