Apache Traffic Server MySQL-based remap plugin
==============================================

== Description ==
  This is a basic plugin for doing dynamic "remaps" from a database. It essentially rewrites the incoming request's Host header / origin server connection
to one retrieved from a database.

The generic proxying setup is the following: 

UA ----> Traffic Server ----> Origin Server

Without the plugin a request like:

GET /path/to/something HTTP/1.1
Host: original.host.com

Ends up requesting http://original.host.com/path/to/something

With this plugin enabled, you can easily change that to anywhere you desire. Imagine the many possibilities....

I have benchmarked this at about 9200 requests/sec (1.7k object) on a junky imac with mysql, ab & trafficserver local. Real performance
is likely substantially higher up to your mysql's max queries / second. 

== Build ==
  A simple

% make install

should do it, assuming that you have the tsxs script in your search path. 
This script is installed with your installation of Apache Traffic Server. 

NOTE: you may need to open the Makefile and adjust the paths to MySQL client includes & libraries

== Configuration ==
Import the default schema to a database you create:

mysql -u root -p -e "CREATE DATABASE mysql_remap;"   # create a new database
mysql -u root -p mysql_remap < schema/import.sql     # import the provided schema

insert some interesting values in mysql_remap.hostname & mysql_remap.map

Traffic Server plugin configuration is done inside a global configuration file: /path/to/etc/trafficserver/plugin.config:

  mysql_remap.so /path/to/sample.ini

The INI file should contain the following values:

[mysql_remap]
mysql_host     = localhost   #default
mysql_port     = 3306        #default
mysql_username = root
mysql_password = 
mysql_database = mysql_remap #default

To debug errors, start trafficserver manually using:

/path/to/traffic_server -T "mysql_remap"

And resolve any errors or warnings displayed.

== Credits ==
  * Eric Balsa
  * ericb@apache.org / eric@ericbalsa.com
  * http://www.ericbalsa.com

== TODO == 
  * some stupid bug in the ini parsing requiring a blank trailing \n
  * make db backend pluggable
  * handle mysql connections a bit more intelligently
  * define a fallback host for missing remaps (instead of blindly issuing a 404)
  * handle rewriting paths
  * handle regexp in paths & hosts
  * verify scheme switching
  * ... many more ideas ...
