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