From 04abf2cc8dfda2a969cd2c1257d5d5a41979a0d2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 17 Jan 2011 00:25:42 +0100 Subject: web_server: Avoid references to swat. Load samba.web_server instead. --- .../scripting/python/samba/web_server/__init__.py | 39 ++++++++++++++++++++++ source4/web_server/swat/__init__.py | 39 ---------------------- source4/web_server/wsgi.c | 13 +++++--- 3 files changed, 47 insertions(+), 44 deletions(-) create mode 100644 source4/scripting/python/samba/web_server/__init__.py delete mode 100644 source4/web_server/swat/__init__.py diff --git a/source4/scripting/python/samba/web_server/__init__.py b/source4/scripting/python/samba/web_server/__init__.py new file mode 100644 index 0000000000..b5ac69c96a --- /dev/null +++ b/source4/scripting/python/samba/web_server/__init__.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Unix SMB/CIFS implementation. +# Copyright © Jelmer Vernooij 2008 +# +# Implementation of SWAT that uses WSGI +# +# 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 3 of the License, 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. If not, see . +# + +def __call__(environ, start_response): + status = '200 OK' + response_headers = [('Content-type','text/html')] + start_response(status, response_headers) + yield '\n' + + for key, value in environ.items(): + if isinstance(value, str): + yield '\t\n' % (key, value) + + yield '
%s%s
\n' + +if __name__ == '__main__': + from wsgiref import simple_server + httpd = simple_server.make_server('localhost', 8090, __call__) + print "Serving HTTP on port 8090..." + httpd.serve_forever() diff --git a/source4/web_server/swat/__init__.py b/source4/web_server/swat/__init__.py deleted file mode 100644 index ea28e9422a..0000000000 --- a/source4/web_server/swat/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Unix SMB/CIFS implementation. -# Copyright © Jelmer Vernooij 2008 -# -# Implementation of SWAT that uses WSGI -# -# 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 3 of the License, 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. If not, see . -# - -def __call__(environ, start_response): - status = '200 OK' - response_headers = [('Content-type','text/html')] - start_response(status, response_headers) - yield '\n' - - for key, value in environ.items(): - if isinstance(value, str): - yield '\t\n' % (key, value) - - yield '
%s%s
\n' - -if __name__ == '__main__': - from wsgiref import simple_server - httpd = simple_server.make_server('localhost', 8090, __call__) - print "Serving HTTP on port 8090..." - httpd.serve_forever() diff --git a/source4/web_server/wsgi.c b/source4/web_server/wsgi.c index 1c105d0337..2f47af2d25 100644 --- a/source4/web_server/wsgi.c +++ b/source4/web_server/wsgi.c @@ -26,6 +26,7 @@ #include "../lib/util/dlinklist.h" #include "lib/tls/tls.h" #include "lib/tsocket/tsocket.h" +#include "scripting/python/modules.h" /* There's no Py_ssize_t in 2.4, apparently */ #if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5 @@ -380,10 +381,12 @@ static void wsgi_process_http_input(struct web_server_data *wdata, bool wsgi_initialize(struct web_server_data *wdata) { - PyObject *py_swat; + PyObject *py_web_server; Py_Initialize(); + py_update_path("bin"); /* FIXME: Can't assume this is always the case */ + if (PyType_Ready(&web_request_Type) < 0) return false; @@ -394,11 +397,11 @@ bool wsgi_initialize(struct web_server_data *wdata) return false; wdata->http_process_input = wsgi_process_http_input; - py_swat = PyImport_Import(PyString_FromString("swat")); - if (py_swat == NULL) { - DEBUG(0, ("Unable to find SWAT\n")); + py_web_server = PyImport_ImportModule("samba.web_server"); + if (py_web_server == NULL) { + DEBUG(0, ("Unable to find web server\n")); return false; } - wdata->private_data = py_swat; + wdata->private_data = py_web_server; return true; } -- cgit