From 87afc3aee1ea593069322a49355dd8780d99e123 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 28 Dec 2012 15:37:14 +0100 Subject: Move python modules from source4/scripting/python/ to python/. Reviewed-by: Andrew Bartlett Autobuild-User(master): Andrew Bartlett Autobuild-Date(master): Sat Mar 2 03:57:34 CET 2013 on sn-devel-104 --- python/samba/web_server/__init__.py | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 python/samba/web_server/__init__.py (limited to 'python/samba/web_server') diff --git a/python/samba/web_server/__init__.py b/python/samba/web_server/__init__.py new file mode 100644 index 0000000000..78ce953c61 --- /dev/null +++ b/python/samba/web_server/__init__.py @@ -0,0 +1,79 @@ +# -*- 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 render_placeholder(environ, start_response): + """Send the user a simple placeholder about missing SWAT.""" + status = '200 OK' + response_headers = [('Content-type', 'text/html')] + start_response(status, response_headers) + + yield "\n" + yield "\n" + yield " The Samba web service\n" + yield "\n" + + yield "\n" + yield "

Welcome to this Samba web server.

\n" + yield "

This page is a simple placeholder. You probably want to install " + yield "SWAT. More information can be found " + yield "on the wiki.

" + yield "

\n" + yield "\n" + yield "\n" + + +def __call__(environ, start_response): + """Handle a HTTP request.""" + from wsgiref.util import application_uri, shift_path_info + from urlparse import urljoin + + try: + import swat + except ImportError, e: + print "NO SWAT: %r" % e + have_swat = False + else: + have_swat = True + + orig_path = environ['PATH_INFO'] + name = shift_path_info(environ) + + if name == "": + if have_swat: + start_response('301 Redirect', + [('Location', urljoin(application_uri(environ), 'swat')),]) + return [] + else: + return render_placeholder(environ, start_response) + elif have_swat and name == "swat": + return swat.__call__(environ, start_response) + else: + status = '404 Not found' + response_headers = [('Content-type', 'text/html')] + start_response(status, response_headers) + return ["The path %s (%s) was not found" % (orig_path, name)] + + +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() -- cgit