quetz-mod_python-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Graham Dumpleton (JIRA)" <j...@apache.org>
Subject [jira] Work started: (MODPYTHON-63) Handle wildcard in Directory to sys.path transfer
Date Sun, 30 Jul 2006 10:56:14 GMT
     [ http://issues.apache.org/jira/browse/MODPYTHON-63?page=all ]

Work on MODPYTHON-63 started by Graham Dumpleton.

> Handle wildcard in Directory to sys.path transfer
> -------------------------------------------------
>
>                 Key: MODPYTHON-63
>                 URL: http://issues.apache.org/jira/browse/MODPYTHON-63
>             Project: mod_python
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 3.1.3
>         Environment: gentoo Linux 2.4.20-gentoo-r8 apache-2.0.54-r8 mod_python-3.1.3-r1
>            Reporter: Kevin Quick
>         Assigned To: Graham Dumpleton
>            Priority: Minor
>
> Below is a patch that does two things:
> 1) On module import failures, logfile contains additional information showing
>    system paths as well as module name.
> 2) Support of Python*Handler found in a wildcard-based directory.  For example,
> <IfModule mod_python.c> 
>     <Directory /home/*/public_html/python> 
>         AddHandler mod_python .py 
>         PythonHandler helloworld 
>         PythonDebug on 
>     </Directory> 
> </IfModule> 
> which mirrors a corresponding perl setting and would allow the user to
> place a mod_python handler in their $HOME/public_html/python directory.
> In the current code, the wildcard is not translated, the sys.path update
> will be invalid, and the user's module will not be accessible.  The attached
> patch provides a fix for this.
> N.B. There are obvious security issues in using this type of configuration,
> but this is very useful for dev environments, and security would implemented
> via explicit alternatives anyhow.
> Index: apache.py
> ===================================================================
> RCS file: /home/cvspublic/httpd-python/lib/python/mod_python/apache.py,v
> retrieving revision 1.83
> diff -r1.83 apache.py
> 33a34,40
> > def add_handler_path(hpath):
> >     import glob
> >     if hpath:
> >         for D in glob.glob(hpath):
> >             if os.path.isdir(D) and D not in sys.path:
> >                 sys.path.insert(0, D)
> > 
> 170,171c177
> <                 if filter.dir and (filter.dir not in sys.path):
> <                     sys.path[:0] = [filter.dir]
> ---
> >                 add_handler_path(filter.dir)
> 280,282c286
> <                     dir = hlist.directory
> <                     if dir and (dir not in sys.path):
> <                         sys.path[:0] = [dir]
> ---
> >                     add_handler_path(hlist.directory)
> 454c458,462
> <             f, p, d = imp.find_module(parts[i], path)
> ---
> >             try:
> >                 f, p, d = imp.find_module(parts[i], path)
> >             except:
> >                 _apache.log_error("mod_python: import error for module %s with path:
%s and sys.path: %s"%(parts[i],path,sys.path))
> >                 raise

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message