Created
July 1, 2013 16:42
-
-
Save smugen/5902471 to your computer and use it in GitHub Desktop.
Python WSGI WebDAV server on Gevent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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