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
|
|
|
};
|