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

Allow handlers to trigger proxying of requests.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.3.x
    • 3.3.1
    • core
    • 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.

      Attachments

        Activity

          People

            grahamd Graham Phillip Dumpleton
            grahamd Graham Phillip Dumpleton
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: