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()
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)
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
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()