Package web2py :: Package gluon :: Module main |
[hide private]
[frames] | no frames]

# Module main

source code

    This file is part of the web2py Web Framework
    Copyrighted by Massimo Di Pierro <mdipierro@cs.depaul.edu>
    License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)

    Contains:

    - wsgibase: the gluon wsgi application

Classes | [hide private]
| HttpServer the web2py web server (Rocket)

Functions | [hide private]
get_client(env) guess the client address from the environment variables | source code
copystream_progress(request, chunk_size=100000) copies request.env.wsgi_input into request.body and stores progress upload status in cache.ram X-Progress-ID:length and X-Progress-ID:uploaded | source code
serve_controller(request, response, session) this function is used to generate a dynamic page. | source code
start_response_aux(status, headers, exc_info, response=1) in controller you can use::... | source code
middleware_aux(request, response, *middleware_apps) In you controller use: | source code
environ_aux(environ, request) | source code
parse_get_post_vars(request, environ) | source code
wsgibase(environ, responder) this is the gluon wsgi application. | source code
save_password(password, port) used by main() to save the password in the parameters_port.py file. | source code
appfactory(wsgiapp=<function wsgibase at 0x13d0410>, logfilename=`'``httpserver.log``'`, profilerfilename=`'``profiler.log``'`) generates a wsgi application that does logging and profiling and calls wsgibase .. | source code

Variables | [hide private]
| web2py_path = `1` PyMySQL: A pure-Python drop-in replacement for MySQLdb.
| logpath = ``'``/home/mdipierro/web2py/logging.conf``'``
| logger = `logging.getLogger("web2py")`
| requests = `0`
| regex_client = `re.compile(r'`[`\w-:`]``+``(`\.`[`\w-`]``+``)``*`\.`?`')`
| version_info = `<closed file '/home/mdipierro/web2py/VERSION', `...``
| web2py_version = ``'``Version 1.98.2 (2011-08-03 18:44:38)\n``'``

Function Details | [hide private]

### get_client(env) | source code
guess the client address from the environment variables first tries 'http_x_forwarded_for', secondly 'remote_addr' if all fails assume '127.0.0.1' (running locally)

### serve_controller(request, response, session) | source code
this function is used to generate a dynamic page. It first runs all models, then runs the function in the controller, and then tries to render the output using a view/template. this function must run from the [application] folder. A typical example would be the call to the url /[application]/[controller]/[function] that would result in a call to [function]() in applications/[application]/[controller].py rendered by applications/[application]/views/[controller]/[function].html

### start_response_aux(status, headers, exc_info, response=1) | source code
    in controller you can use::

    - request.wsgi.environ
    - request.wsgi.start_response

    to call third party WSGI applications

### middleware_aux(request, response, *middleware_apps) | source code
In you controller use:
       @request.wsgi.middleware(middleware1, middleware2, ...)
to decorate actions with WSGI middleware. actions must return strings. uses a simulated environment so it may have weird behavior in some cases

### wsgibase(environ, responder) | source code
    this is the gluon wsgi application. the first function called when a page
    is requested (static or dynamic). it can be called by paste.httpserver
    or by apache mod_wsgi.

      - fills request with info
      - the environment variables, replacing '.' with '_'
      - adds web2py path and version info
      - compensates for fcgi missing path_info and query_string
      - validates the path in url

    The url path must be either:

    1. for static pages:

      - /<application>/static/<file>

    2. for dynamic pages:

      - /<application>[/<controller>[/<function>[/<sub>]]][.<extension>]
      - (sub may go several levels deep, currently 3 levels are supported:
         sub1/sub2/sub3)

    The naming conventions are:

      - application, controller, function and extension may only contain
        [a-zA-Z0-9_]
      - file and sub may also contain '-', '=', '.' and '/'

### appfactory(wsgiapp=<function wsgibase at 0x13d0410>, logfilename=`'``httpserver.log``'`, profilerfilename=`'``profiler.log``'`) | source code
    generates a wsgi application that does logging and profiling and calls
    wsgibase

    .. function:: gluon.main.appfactory(
            [wsgiapp=wsgibase
            [, logfilename='httpserver.log'
            [, profilerfilename='profiler.log']]])

Variables Details | [hide private]

  ### version_info Value:
      open(abspath('VERSION', gluon= True), 'r')