Modular rewriting reverse proxy
This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Jérôme Schneider e0ea574b04 Fixes #710: manage storage backends and implement sql one
WARNING: this commit brake sql migrations
2013-05-21 11:59:19 +02:00
init.d use sync worker for gunicorn 2011-10-24 10:15:08 +02:00
mandaye Fixes #710: manage storage backends and implement sql one 2013-05-21 11:59:19 +02:00
twill Add testing script using twill for biblio and duonet 2011-10-17 15:44:15 +02:00
.gitignore Add gitignore file 2012-02-17 09:50:59 +01:00
COPYING Begin Mandaye true project based on poc1.py 2011-08-04 19:28:16 +02:00
README.rst Fixes #710: manage storage backends and implement sql one 2013-05-21 11:59:19 +02:00
gunicorn.conf.py-sample Fix #1154: replace gevent by gunicorn, improve README.txt and 2011-12-21 18:28:36 +01:00
mandaye_admin.py Fixes #710: manage storage backends and implement sql one 2013-05-21 11:59:19 +02:00
mandaye_migrate.py Add database migrations 2012-02-17 09:55:39 +01:00
requirements.txt Fixes #710: manage storage backends and implement sql one 2013-05-21 11:59:19 +02:00
server.py.default Fixes #710: manage storage backends and implement sql one 2013-05-21 11:59:19 +02:00
setup.py Fixes #710: manage storage backends and implement sql one 2013-05-21 11:59:19 +02:00

README.rst

===============================================
Mandaye - modular reverse proxy to authenticate
===============================================

Mandaye is a modular rewriting reverse proxy. Its main use is to add external
authentication systems to legacy application, i.e. SSO.
It dispatches HTTP requests to your applications and allow you to transform and
filter the request and the response.
Mandaye allows to couple your authentication provider with incompatible web
applications.

Copying
-------

This software copyrighted by Entr'ouvert and is licensed under the GNU AGPL
version 3 for distribution.

Features
--------

 * Mapping / dispatching::
   With Mandaye you can define your own mapping files. This allows you to call your own filters
   on the right HTTP requests. See the config part for more details.
 * Filters::
   You can define your own filters with Mandaye. This filter have access to the WSGI environment and
   could modify the HTTP requests and / or responses.
 * Local authentification::
   Mandaye provide a sql local authentification but you can also implement your own
   local authentification.
 * Distant authentification::
   At the moment Mandaye only support form replay for a distant authentification but we will provide
   SAML 2.0, OpenID and CAS support.


Installation
============

Dependencies
------------

You must install the following packages to use Mandaye

 * Python >= 2.5:: http://python.org/
 * Setuptools >= 0.6:: http://pypi.python.org/pypi/setuptools
 * Gunicorn >= 0.13:: http://pypi.python.org/pypi/gunicorn
 * Poster >= 0.8:: http://pypi.python.org/pypi/poster/
 * SQLAlchemy >= 0.7:: http://pypi.python.org/pypi/SQLAlchemy
 * Beaker >= 1.6:: http://pypi.python.org/pypi/Beaker
 * Mako >= 0.4:: http://pypi.python.org/pypi/Mako
 * lxml >= 2.3:: http://pypi.python.org/pypi/lxml
 * xtraceback >= 0.3:: http://pypi.python.org/pypi/xtraceback
 * sqlalchemy-migrate:: http://pypi.python.org/pypi/sqlalchemy-migrate


Quick installation
------------------

Install at least Python >=2.5 and pip in your system.
For example with Debian or a Debian based distribution::

    sudo apt-get install python python-pip

Then install virtualenv ::

   pip install virtualenv

Create your virtualenv activate it::

    virtualenv mandaye
    source mandaye/bin/activate
    pip install -U pip

Install mandaye::

    $ tar xfvz mandaye-VERSION.tar.gz
    $ cd mandaye-VERSION
    $ pip install -r requirements.txt
    $ python setup.py install

If you want to develop use this command line::

    $ python setup.py develop


Quick Start
-----------

First step is to create a mandaye project::

  $ mandaye_admin.py --newproject

Launch mandaye server::

  $ mandaye_server.py

mandaye_server.py use gunicorn and gunicorn options (please read http://gunicorn.org/configure.html)

You could also use gunicorn.conf.py-sample (in the mandaye files)::

 $ mandaye_server.py -c PATH_TO_THE_FILE/gunicorn.conf.py

or::

 $ mandaye_server.py -c PATH_TO_THE_FILE/gunicorn.conf.py -b 0.0.0.0:4242

Upgrade Mandaye
---------------

You need to upgrade the update the repository and upgrade database::

 ~/mandaye $ git pull
 ~/mandaye $ ./mandaye_migrate.py upgrade

Configuration
=============
TODO