|
Alexander Neumann
modpython at lists.bumpern.de
Thu Oct 16 23:19:52 EST 2003
Hi,
I just started having a look at mod_python, it looks really great, but
there are a few strange exceptions thrown at points where (IMHO) no
exception should be raised.
For example if I'm using this file (test.py):
=======
from mod_python import apache
def test(req):
return "just a test\n"
=======
Calling the test-function directly works as expected:
$ dog --no-header http://localhost/~fd0/test/test
just a test
Calling only the file fails and throws a 404:
$ dog --no-header http://localhost/~fd0/tlis/test
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /~fd0/tlis/test was not found on this server.<P>
<HR>
<ADDRESS>Apache/1.3.28 Server at localhost Port 80</ADDRESS>
</BODY></HTML>
But if the URL ends with a slash ("/"), an exception is thrown and I
don't know if that's the normal behaviour (I would expect a 404, just
like the example above):
$ dog --no-header http://localhost/~fd0/tlis/test/
Mod_python error: "PythonHandler mod_python.publisher"
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line 193, in Dispatch
result = object(req)
File "/usr/lib/python2.3/site-packages/mod_python/publisher.py", line 88, in handler
if func_path[-1] == ".":
IndexError: string index out of range
Another problem is using the file (example.py):
======
__auth_realm__ = "Members only"
def hello(req):
def __auth__(req, user, passwd):
if user == "eggs" and passwd == "spam" or \
user == "joe" and passwd == "eoj":
return 1
else:
return 0
def __access__(req, user):
if user == "joe":
return 1
else:
return 0
return 'hello<br><a href="logout?username=%s"> logout </a>' % req.connection.user
def logout(req, username=""):
def __auth__(req, user, passwd):
if not username == "":
return 0
else:
return 1
return '<a href="hello"> test it! </a>'
======
Calling the logout function throws an exception, too:
$ dog --no-header http://localhost/~fd0/tlis/example/logout
Mod_python error: "PythonHandler mod_python.publisher"
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line 193, in Dispatch
result = object(req)
File "/usr/lib/python2.3/site-packages/mod_python/publisher.py", line 135, in handler
object = resolve_object(req, module, func_path, realm, user, passwd)
File "/usr/lib/python2.3/site-packages/mod_python/publisher.py", line 296, in resolve_object
user, passwd)
File "/usr/lib/python2.3/site-packages/mod_python/publisher.py", line 224, in process_auth
__auth__ = new.function(__auth__, globals())
TypeError: arg 5 (closure) must be tuple
Is this a bug or a feature?
- Alexander
--
"Good luck... The only good thing about being compromised is that it
makes you more paranoid about being on the net."
- Jamie Lawrence on debian-security
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mailman.modpython.org/pipermail/mod_python/attachments/20031016/22b82c8e/attachment-0003.bin
|