You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2006/05/07 02:33:21 UTC

[jira] Work stopped: (MODPYTHON-63) Handle wildcard in Directory to sys.path transfer

     [ http://issues.apache.org/jira/browse/MODPYTHON-63?page=all ]

Work on MODPYTHON-63 stopped 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
>         Type: Improvement

>   Components: core
>     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
>     Assignee: 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