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