Esempio n. 1
0
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)
Esempio n. 3
0
#!/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):