# Copyright (C) 2005 PreludeIDS Technologies. All Rights Reserved. # Author: Yoann Vandoorselaere # # This file is part of the Prewikka program. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. from prewikka import Core, Request, localization from mod_python import apache, util, Cookie class ModPythonRequest(Request.Request): def init(self, req): self._req = req Request.Request.init(self) fs = util.FieldStorage(req) for key in fs.keys(): self.arguments[key] = fs[key] def write(self, data): self._req.write(data) def sendHeader(self, name, value): self._req.headers_out[name] = value def endHeaders(self): if self._req.headers_out.has_key("Content-type"): self._req.content_type = self._req.headers_out["Content-type"] self._req.send_http_header() def addCookie(self, param, value, expires): c = Cookie.Cookie(param, value) Cookie.add_cookie(self._req, c, expires) def getRemoteUser(self): self._req.get_basic_auth_pw() user = self._req.user if user: user.strip() return user def getQueryString(self): return self._req.unparsed_uri def getCookieString(self): return self._req.headers_in.get('cookie', '') def getReferer(self): return self._req.headers_in.get('Referer', '') def getClientAddr(self): return self._req.get_remote_host(apache.REMOTE_NOLOOKUP) def handler(req): options = req.get_options() request = ModPythonRequest() if "PrewikkaConfig" in options: config = options["PrewikkaConfig"] else: config = None core = Core.get_core_from_config(config, threaded=True) request.init(req) core.process(request) return apache.OK