def _runPaste(app, config, mode): """Run WsgiDAV using paste.httpserver, if Paste is installed. See http://pythonpaste.org/modules/httpserver.html for more options """ _logger = util.getModuleLogger(__name__, True) try: from paste import httpserver version = "WsgiDAV/%s %s" % (__version__, httpserver.WSGIHandler.server_version) if config["verbose"] >= 1: print "Running %s..." % version # See http://pythonpaste.org/modules/httpserver.html for more options server = httpserver.serve(app, host=config["host"], port=config["port"], server_version=version, # This option enables handling of keep-alive # and expect-100: protocol_version="HTTP/1.1", start_loop=False ) if config["verbose"] >=3: __handle_one_request = server.RequestHandlerClass.handle_one_request def handle_one_request(self): __handle_one_request(self) if self.close_connection == 1: _logger.debug("HTTP Connection : close") else: _logger.debug("HTTP Connection : continue") server.RequestHandlerClass.handle_one_request = handle_one_request __handle = server.RequestHandlerClass.handle def handle(self): _logger.debug("open HTTP connection") __handle(self) server.RequestHandlerClass.handle_one_request = handle_one_request host, port = server.server_address if host == '0.0.0.0': print 'serving on 0.0.0.0:%s view at %s://127.0.0.1:%s' % \ (port, 'http', port) else: print "serving on %s://%s:%s" % ('http', host, port) try: server.serve_forever() except KeyboardInterrupt: # allow CTRL+C to shutdown pass except ImportError, e: if config["verbose"] >= 1: print "Could not import paste.httpserver." return False
import wsgidav.util as util import os #import mimetypes import tempfile import seaserv from seaserv import seafile_api, CALC_SHARE_USAGE from seaserv import check_quota as check_repo_quota from pysearpc import SearpcError from seafobj import commit_mgr, fs_mgr from seafobj.fs import SeafFile, SeafDir from wsgidav.addons.seafile.seaf_utils import SEAFILE_CONF_DIR, UTF8Dict, utf8_path_join, utf8_wrap __docformat__ = "reStructuredText" _logger = util.getModuleLogger(__name__) NEED_PROGRESS = 0 SYNCHRONOUS = 1 INFINITE_QUOTA = -2 def sort_repo_list(repos): return sorted(repos, lambda r1, r2: cmp(r1.id, r2.id)) #=============================================================================== # SeafileResource #=============================================================================== class SeafileResource(DAVNonCollection): def __init__(self, path, repo, rel_path, obj, environ): super(SeafileResource, self).__init__(path, environ)
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import posixpath import ConfigParser import wsgidav.util as util _logger = util.getModuleLogger(__name__) def _load_path_from_env(key, check=True): v = os.environ.get(key, '') if not v: if check: raise ImportError( "seaf_util cannot be imported, because environment variable %s is undefined." % key) else: return None return os.path.normpath(os.path.expanduser(v)) CCNET_CONF_DIR = _load_path_from_env('CCNET_CONF_DIR') SEAFILE_CONF_DIR = _load_path_from_env('SEAFILE_CONF_DIR') SEAFILE_CENTRAL_CONF_DIR = _load_path_from_env('SEAFILE_CENTRAL_CONF_DIR', check=False) def utf8_wrap(s): if isinstance(s, unicode):