2015-08-22 12:52:32 +00:00
|
|
|
require 'rubygems'
|
|
|
|
require 'bundler/setup'
|
|
|
|
require 'sinatra'
|
|
|
|
require 'yaml'
|
|
|
|
|
2015-08-22 19:47:36 +00:00
|
|
|
def get_url(domain_object, rel_route)
|
|
|
|
if domain_object.is_a? Hash
|
2015-08-22 19:50:10 +00:00
|
|
|
return domain_object['root'] + "/" + rel_route
|
2015-08-22 19:47:36 +00:00
|
|
|
elsif domain_object.is_a? String
|
|
|
|
return domain_object
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
get '/*' do
|
2015-08-22 12:52:32 +00:00
|
|
|
hostname = request.host
|
2015-08-22 19:47:36 +00:00
|
|
|
route = params[:splat][0]
|
|
|
|
|
2015-08-22 12:52:32 +00:00
|
|
|
YAML::load_file('redirects.yml').each do |code, zone|
|
|
|
|
if zone.has_key? hostname
|
2015-08-22 19:47:36 +00:00
|
|
|
url = get_url(zone[hostname], route)
|
|
|
|
if url
|
|
|
|
redirect url, code
|
|
|
|
else
|
|
|
|
halt 400, "Invalid configuration for #{hostname}"
|
|
|
|
end
|
2015-08-22 12:52:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
halt 404, "#{hostname} hasn't been setup yet."
|
|
|
|
end
|