Exemplo n.º 1
0
 def login(self):
     import binascii
     meta = self.getConfig(self.server)
     auth = binascii.b2a_base64(meta['username'] + ':' + meta['password'])
     self.dav = davlib.DAV(meta['host'], meta['port'], protocol='http')
     self.davdir = (meta['remotedir'])
     logindir = self.davdir + '/'  ## N.B. "Magic" extra '/' needed in some cases, or we get a 302
     #        self.dav.set_debuglevel(1) # for testing
     self.dav.connect()
     response = self.dav.get(logindir,
                             {'Authorization': 'Basic %s' % auth.strip()})
     self.session_cookies = response.getheader('Set-Cookie')
     self.logger.debug('Status = %s, Reason = %s, Version = %s' %
                       (response.status, response.reason, response.version))
     if not (response.version >= 10):
         raise Exception('Unknown protocol version:' +
                         str(response.version))
     if not (response.status == 200 and response.reason == 'OK'):
         ##              or response.status == 302 and response.reason == 'Moved Temporarily'):
         self.logger.error(
             'Got unrecognised answer with Status = %s, Reason = %s' %
             (response.status, response.reason))
         raise Exception(
             'Problem logging in to WebDAV default repository: ' +
             meta['host'] + ':' + str(meta['port']) + self.davdir)
     response.close()
     self.dav.close()
Exemplo n.º 2
0
def main():

    optlist, args = getopt.getopt(sys.argv[1:], 'sd:')

    shared = 0
    depth = 'infinity'
    for opt, value in optlist:
        if opt == '-d':
            if value not in ['0', '1', 'infinity']:
                print 'ERROR: "%s" is not a valid depth' % value
                sys.exit(1)
            depth = value
        elif opt == '-s':
            shared = 1

    if len(args) < 2 or len(args) > 3:
        usage()

    command = args[0]
    if not commands.has_key(command):
        usage()

    url = args[1]
    extra = args[2:]

    scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
    host, port = urllib.splitnport(netloc, 80)
    conn = davlib.DAV(host, port)

    commands[command](conn, path, shared, depth, extra)
Exemplo n.º 3
0
def Upload(File, path=None, makepath=False):
    if makepath:
        #setup connection and make directory
        MakeDirectory(path)
    #grab file
    try:
        A = File.read()
    except AttributeError:
        hfile = open(File, "r")
        filepath = File
        A = hfile.read()
        hfile.close()
    else:
        filepath = File.name
        File.close()
    #reopen connection to upload file content
    dav = davlib.DAV(urlwebdav, protocol="http")
    filename = os.path.basename(filepath)
    resp = dav.put("/openacces/" + path + "/" + filename, A)
    url = resp.getheader("location")
    if not (200 <= resp.status < 300):
        raise Exception(resp.read())
    dav.close()
    return url
Exemplo n.º 4
0
def MakeDirectory(foldername):
    dav = davlib.DAV(urlwebdav, protocol="http")
    resp = dav.mkcol("/openacces/" + foldername)
    if not (200 <= resp.status < 302):
        raise Exception(resp.read())
    dav.close()