forked from coolaj86/walnut.js
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
var escapeRe = require('escape-string-regexp');
 | 
						|
 | 
						|
function redirect(host, url) {
 | 
						|
  var insecureRedirects;
 | 
						|
  // because I have domains for which I don't want to pay for SSL certs
 | 
						|
  insecureRedirects = [
 | 
						|
    { "from": { "hostname": "coolaj86.org" , "path": "" }
 | 
						|
    , "to": { "hostname": "coolaj86.com", "path": "" }
 | 
						|
    }
 | 
						|
  , { "from": { "hostname": "blog.coolaj86.org" , "path": "" }
 | 
						|
    , "to": { "hostname": "coolaj86.com", "path": "" }
 | 
						|
    }
 | 
						|
  , { "from": { "hostname": "coolaj86.info" , "path": "" }
 | 
						|
    , "to": { "hostname": "coolaj86.com", "path": "" }
 | 
						|
    }
 | 
						|
  , { "from": { "hostname": "blog.coolaj86.info" , "path": "" }
 | 
						|
    , "to": { "hostname": "coolaj86.com", "path": "" }
 | 
						|
    }
 | 
						|
  , { "from": { "hostname": "blog.coolaj86.com" , "path": "" }
 | 
						|
    , "to": { "hostname": "coolaj86.com", "path": "" }
 | 
						|
    }
 | 
						|
  , { "from": { "hostname": "example.org" , "path": "/blog" }
 | 
						|
    , "to": { "hostname": "blog.example.com", "path": "" }
 | 
						|
    }
 | 
						|
  ].sort(function (a, b) {
 | 
						|
    var hlen = b.from.hostname.length - a.from.hostname.length;
 | 
						|
    var plen;
 | 
						|
    if (!hlen) {
 | 
						|
      plen = b.from.path.length - a.from.path.length;
 | 
						|
      return plen;
 | 
						|
    }
 | 
						|
    return hlen;
 | 
						|
  }).forEach(function (redirect) {
 | 
						|
    // TODO if '*' === hostname[0], omit '^'
 | 
						|
    host = host.replace(
 | 
						|
      new RegExp('^' + escapeRe(redirect.from.hostname))
 | 
						|
    , redirect.to.hostname
 | 
						|
    );
 | 
						|
    url = url.replace(
 | 
						|
      new RegExp('^' + escapeRe(redirect.from.path))
 | 
						|
    , redirect.to.path
 | 
						|
    );
 | 
						|
  });
 | 
						|
 | 
						|
  return [host, url];
 | 
						|
}
 | 
						|
 | 
						|
[
 | 
						|
  [ "blog.coolaj86.info", "/articles/awesome.html" ]
 | 
						|
, [ "example.org", "/blog" ]
 | 
						|
].forEach(function (pair) {
 | 
						|
  var host = pair[0];
 | 
						|
  var url = pair[1];
 | 
						|
 | 
						|
  console.log(host, url);
 | 
						|
  console.log(redirect(host, url));
 | 
						|
});
 |