1#!/usr/bin/python 2 3import sys 4import MySQLdb 5import webdavlib 6 7import HordeSignatureConverter 8 9from config import webdavConfig, dbConfig 10 11xmlns_inversedav = "urn:inverse:params:xml:ns:inverse-dav" 12 13def UploadSignature(client, user, signature): 14 collection = '/SOGo/dav/%s/' % user 15 proppatch \ 16 = webdavlib.WebDAVPROPPATCH(collection, 17 { "{%s}signature" % xmlns_inversedav: \ 18 signature.encode("utf-8") }) 19 client.execute(proppatch) 20 if (proppatch.response["status"] < 200 21 or proppatch.response["status"] > 399): 22 print "Failure uploading signature for user '%s': %d" \ 23 % (user, proppatch.response["status"]) 24 25if __name__ == "__main__": 26 if len(sys.argv) > 1: 27 user = sys.argv[1] 28 else: 29 raise Exception, "<user> argument must be specified" \ 30 " (use 'ALL' for everyone)" 31 32 conn = MySQLdb.connect(host = dbConfig["hostname"], 33 user = dbConfig["username"], 34 passwd = dbConfig["password"], 35 db = dbConfig["database"], 36 use_unicode = True) 37 38 cnv = HordeSignatureConverter.HordeSignatureConverter(user, "DOMAIN.COM") 39 signatures = cnv.fetchSignatures(conn) 40 conn.close() 41 42 client = webdavlib.WebDAVClient(webdavConfig["hostname"], 43 webdavConfig["port"], 44 webdavConfig["username"], 45 webdavConfig["password"]) 46 for user in signatures: 47 signature = signatures[user] 48 UploadSignature(client, user, signature) 49