Uploaded image for project: 'mod_python'
  1. mod_python
  2. MODPYTHON-141

Allow handlers to trigger proxying of requests.

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.3.x
    • Fix Version/s: 3.3.1
    • Component/s: core
    • Labels:
      None

      Description

      The req.proxyreq and req.uri attributes are not currently modifiable. If they were modifable, it would be possible for a mod_python handler to trigger proxying of a request to some remote site. For example:

      import posixpath

      from mod_python import apache

      def fixuphandler(req):

      if req.proxyreq:
      return apache.DECLINED

      normalised_uri = posixpath.normpath(req.uri)

      if normalised_uri:
      if normalised_uri != '/' and req.uri[-1] == '/':
      normalised_uri += '/'

      length = len(req.filename)
      length -= len(req.hlist.directory) - 1
      length += len(req.path_info or '')

      baseurl = normalised_uri[:-length]
      path = normalised_uri[len(baseurl):]

      req.proxyreq = apache.PROXYREQ_REVERSE
      req.uri = 'http://www.dscpl.com.au' + path
      req.filename = 'proxy:%s' % req.uri
      req.handler = 'proxy-server'

      return apache.OK

      See further discussion on mailing list:

      http://www.modpython.org/pipermail/mod_python/2006-March/020500.html
      http://www.modpython.org/pipermail/mod_python/2006-March/020502.html
      http://www.modpython.org/pipermail/mod_python/2006-March/020503.html
      http://www.modpython.org/pipermail/mod_python/2006-March/020507.html

      Patches are include in the last of these emails rather than being attached here.

        Activity

        There are no comments yet on this issue.

          People

          • Assignee:
            grahamd Graham Dumpleton
            Reporter:
            grahamd Graham Dumpleton
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development