Hunter Matthews
thm at duke.edu
Fri Aug 16 17:05:28 EST 2002
On Fri, 2002-08-16 at 16:40, Hunter Matthews wrote: > On Fri, 2002-08-16 at 16:27, Ian Clelland wrote: > > > Because of the <Location> directive, Apache will hand all requests for > > /XMLRPC and any URL below that to your python module. If you don't want > > mod_python to handle the GET requests underneath /XMLRPC, then your > > handler should return apache.DECLINED if req.uri != '/XMLRPC'. > > I switched to <Location ~ "/XMLRPC$"> > > So right now my apache config looks like: > > Alias /XMLRPC/$RHN/ /local/linux/current/www/ > > <Directory /local/linux> > # I realize that the default config is to have symlinks on, but the > # current part should stand on its own. > Options FollowSymLinks > AllowOverride None > </Directory> > > <Location ~ "/XMLRPC$"> > PythonPath "sys.path+['/usr/share/current']" > SetHandler python-program > PythonHandler current_apache > </Location> > > <Location /XMLRPC/$RHN> > PythonPath "sys.path+['/usr/share/current']" > PythonAuthzHandler current_apache > </Location> > > > > > > > Also, as far as I understand it, the SetHandler directive shouldn't be > > required in order to invoke a PythonAuthzHandler, but I could be wrong. > > (Not that it will make a difference in your case; the SetHandler for > > /XMLRPC will also affect the /XMLRPC/$RHN subdirectory anyway) > > That would be ideal. However, with the following code in > /usr/share/current/current_apache.py: > > def authzhandler(req): > """ temp function for testing""" > > apache.log_error("Inside the authzhandler!") > apache.log_error("method = %s" % req.method) > apache.log_error("headers = %s" % pprint.pprint(req.headers_in)) > > return apache.OK > > > After an apache restart (to make sure all the updated modules get > reloaded) I'm not seeing any of those log_errors in the error file. > Once I see something (anything) I'll replace that code with the real > thing. > > I appreciate the help from the list. Sorry to spam the list so hard today, but I've figured one piece of it out: def authzhandler(req): """ temp function for testing""" apache.log_error("Inside the authzhandler!") apache.log_error("method = %s" % req.method) apache.log_error("headers = %s" % pprint.pprint(req.headers_in)) return apache.OK This code still results in nothing in my logs. On the theory that perhaps it was undocumented for a reason, I tried a different (nearly random) handler: def headerparserhandler(req): """ temp function for testing""" apache.log_error("Inside the headerparserhandler!") apache.log_error("method = %s" % req.method) # apache.log_error("headers = %s" % pprint.pprint(req.headers_in)) for key in req.headers_in.keys(): apache.log_error("hdr[%s] = %s" % (key, req.headers_in[key])) return apache.HTTP_UNAUTHORIZED AND THIS WORKS JUST FINE! If anyone on the list has any ideas why the authz handler, which _looked_ like the handler I should use (using HTTP request headers to determine if a client was authorized to make this request), isn't working, I'd still appreciate knowing. However, I should be able to use this handler or maybe even PythonAuthenHandler, so its not a critical issue for me now. THanks everyone. -- Hunter Matthews Unix / Network Administrator Office: BioScience 145/244 Duke Univ. Biology Department Key: F0F88438 / FFB5 34C0 B350 99A4 BB02 9779 A5DB 8B09 F0F8 8438 Never take candy from strangers. Especially on the internet.
|