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