Metadata-Version: 2.1
Name: outpost
Version: 0.5.1
Summary: Application level proxy server
Home-page: https://niveapps.com
Author: Arndt Droullier, Nive GmbH
Author-email: info@nive.co
License: BSD 3
Keywords: server proxy development cors web pyramid
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Framework :: Pyramid
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development :: Testing
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: License :: OSI Approved :: BSD License
Requires-Dist: pyramid
Requires-Dist: pyramid-debugtoolbar
Requires-Dist: pyramid-chameleon
Requires-Dist: zope.interface
Requires-Dist: waitress
Requires-Dist: requests

Outpost 
=======

**Application level proxy server**

Outpost combines proxy, static file serving and application
framework functionality in a single server application.

Advanced options include request debugging and stream filter.

Implemented in pure python; with the pyramid web framework.

Please refer to Github for source codes: https://github.com/nive/outpost

Features
--------

- Serves static files from a directory
- Routes webservice requests through the proxy
- Session and cookie support for proxied requests
- Custom filter support
- Single and multiple concurrent connections
- Interactive request hacking and tracing
- Easy installation, runs on any os


Configuration - Basic setup
---------------------------

All configuration options are set in `server.ini` in projects' home folder.

The directory to be served. Either a python module asset path, relative path 
or absolute path ::

    server.directory = /home/me/myfiles
    server.defaultfile = index.html

The domain to connect to. Ajax calls and urls can use a domain
placeholder to be inserted by outpost before proxying the request.
By default the placeholder is '__domain'. The string will
replaced with the following configuration setting. ::

    proxy.domain = mydomain.nive.io

The url prefix used to route request through the proxy. By default
urls starting with `http://127.0.0.1:5556/__proxy/` will be handled by the 
proxy ::

    proxy.route = __proxy


Installation
------------

Short installation description:

- Install Python 
- Install Python setuptools and virtualenv
- Create a virtual environment (virtualenv) directory named ‘outpost’ (or use your projects name)
  ``virtualenv outpost``
- Install outpost from pypi.python.org ``bin/pip install outpost``
- Create a new project by using the scaffold ``bin/pcreate -t outpost myApp``
- change into myApp directory ``cd myApp``
- Start the web server ``../bin/pserve server.ini`` (the served directory path is relative)

If you are using a relative directory please make sure you start the webserver from the right
working directory.


Debug Toolbar
-------------

You can also use the pyramid debug toolbar to get a request log in the browser. 
To enable the toolbar open the ini file and set ``debugtoolbar.enabled = true``


Setting a breakpoint
--------------------

Change the line in your ini file to match proxied urls you would like to halt and inspect. ::

    proxy.trace = signin

Each proxied url containing `signin` will be interrupted and can be inspected in the python debugger
on the commandline. 

Basic commands (Take a look at python debugger for all commands):

- n : next step
- c : continue execution

Once you are in the debugger you can print the current requests values and change them (e.g. headers):

- method : http method
- url : the url to send the request to
- **parameter : a dictionary including headers and form values

after receiving the response

- response
- response.headers

