ressl
=====

A simple `importd`_ based SSL redirector. It accepts requests and redirects
to the SSL version of the same page.

Why?
----

I needed something like this for a couple of sites that were hosted on a
shared hosting provider but I wanted to only have one process doing the
SSL redirects.

Usage
-----

Simply run::

    ressl

This launches ``ressl`` on port 8000 using Django's runserver management
command.

For production use it's **strongly** recommended to instead use a real
WSGI server like gunicorn_ or uWSGI_ , e.g.::

    gunicorn ressl

To use a different port, use the server's options, e.g.::

    gunicorn -b 127.0.0.1:12345 ressl

You must set at least one envrionment variable for ressl to work:
``RESSL_ALLOWED_HOSTS``. It's a comma separated list of host names
ressl is allowed to redirect, e.g.::

    RESSL_ALLOWED_HOSTS=mycompany.com,myblog.me,myphotos.com gunicorn -b 127.0.0.1:12345 ressl

Debugging is done by setting the environment variable ``RESSL_DEBUG``
to any value::

    RESSL_DEBUG=yep gunicorn -b 127.0.0.1:12345 ressl

If your site runs behind a proxy, you may have to tell ``ressl`` how to
figure out if a request is SSL or not. Use the ``RESSL_PROXY_PROTOCOL``
environment variable to define it (defaults to
``'HTTP_X_FORWARDED_PROTOCOL'``)::

    RESSL_PROXY_PROTOCOL=HTTP_X_FORWARDED_PROTO gunicorn ressl

Feedback
--------

Feel free to open tickets at https://github.com/jezdez/ressl/issues.
Say thanks at https://www.gittip.com/jezdez/.

.. _gunicorn: http://gunicorn.org/
.. _uWSGI: https://github.com/unbit/uwsgi
.. _importd: http://pythonhosted.org/importd/
