Skip to content

Instantly share code, notes, and snippets.

@smugen
Created July 1, 2013 16:42
Show Gist options
  • Save smugen/5902471 to your computer and use it in GitHub Desktop.
Save smugen/5902471 to your computer and use it in GitHub Desktop.
Python WSGI WebDAV server on Gevent
from gevent.monkey import patch_all
patch_all()
import argparse
from wsgidav.fs_dav_provider import FilesystemProvider
from wsgidav.version import __version__
from wsgidav.wsgidav_app import DEFAULT_CONFIG, WsgiDAVApp
from gevent.pywsgi import WSGIServer
def main():
parser = argparse.ArgumentParser()
parser.add_argument("path", metavar='ROOT_PATH',
help='Path to a file system folder'
' to publish as share "/"')
parser.add_argument("-p", default=8080, type=int, dest='port',
help='port to serve on (default: 8080)')
parser.add_argument("-H", default='localhost', dest='host',
help='''host to serve from (default: localhost).
'localhost' is only accessible from the local computer.
Use 0.0.0.0 to make your application public''')
parser.add_argument("-v", default=1, type=int, choices=[1, 2, 3],
dest='verbose', help='Set verbosity')
args = parser.parse_args()
print('{} {}'.format('using', args))
provider = FilesystemProvider(args.path)
config = DEFAULT_CONFIG.copy()
config.update({
"provider_mapping": {"/": provider},
"port": args.port,
"host": args.host,
"verbose": args.verbose,
"propsmanager": True,
"locksmanager": True,
})
print('config:')
print(config)
app = WsgiDAVApp(config)
server = WSGIServer((args.host, args.port), application=app)
server.set_environ({"SERVER_SOFTWARE": "WsgiDAV/{} ".format(__version__) +
server.base_env["SERVER_SOFTWARE"]})
print('Running {} on http://{}:{}'
.format(server.get_environ()["SERVER_SOFTWARE"],
args.host, args.port))
server.serve_forever()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment