# -*- 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 . # from __future__ import print_function 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 b"\n" yield b"\n" yield b" The Samba web service\n" yield b"\n" yield b"\n" yield b"

Welcome to this Samba web server.

\n" yield b"

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

" yield b"

\n" yield b"\n" yield b"\n" def __call__(environ, start_response): """Handle a HTTP request.""" from wsgiref.util import application_uri, shift_path_info from samba.compat import urllib_join try: import swat except ImportError as 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', urllib_join(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)).encode('iso-8859-1')] 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()