def save_key(self, user, priv=None, pub=None, temp=False): if not (priv or pub): warning('keymanagement: Could not save a key: pub and priv are None\n') return False if temp: key_path = self.key_path(user, temp=True) else: key_id = self.key_hash(priv, pub) key_fname = 'key_' + key_id key_path = os.path.join(self.community.get_user_dir(user), key_fname) try: f = open(key_path, 'w') except IOError: warning('keymanagement: Could not save a key: Could not open %s for writing\n' %(key_path)) try: if priv: f.write(priv) if pub: f.write(pub) except IOError: warning('keymanagement: Could not save key: IOError while writing to %s\n' %(key_path)) return False finally: f.close() if not temp: key_path = self.key_path(user) if key_path != None: xremove(key_path) user.set('key_fname', key_fname) return True
def config_read(self): global myself uid = None linkpath = '%s/myself' % proximatedir try: linkvalue = os.readlink(linkpath) except OSError: linkvalue = None if self.options.identity != None: # Look for an uid ident = self.options.identity myself = get_user(ident) if myself == None: myself = create_user(ident) else: if linkvalue != None: # first see if the old 'myself' symlink is good uid = parse_user_dentry(linkvalue) if uid != None: myself = get_user(uid) if myself == None: create_myself() userdir = 'u_%s' % myself.get('uid') if userdir != linkvalue: xremove(linkpath) try: os.symlink(userdir, linkpath) except OSError, (errno, strerror): die('Can not create a symlink: %s -> %s (%s)\n' % (userdir, linkpath, strerror))
def compress_jpeg(pixbuf, fname, maxsize): quality = 95 while quality > 0: pixbuf.save(fname, 'jpeg', {'quality': str(quality)}) if os.path.getsize(fname) <= maxsize: return True quality -= 10 xremove(fname) return False
def delete_community_icon(com): xremove(get_community_icon_name(com, legacyname=False)) xremove(get_community_icon_name(com, legacyname=True))
def delete_face(user): xremove(get_face_name(user, legacyname=False)) xremove(get_face_name(user, legacyname=True))
def save_image(fname, image): if fname == None: return False basename = os.path.basename(fname) tmpname = fname + '.tmp' try: f = open(tmpname, 'w') except IOError, (errno, strerror): warning('Can not save face to %s: %s\n' %(tmpname, strerror)) return False f.write(image) f.close() if not check_image(tmpname): xremove(tmpname) return False if not xrename(tmpname, fname): xremove(tmpname) warning('Can not rename: %s -> %s\n' %(tmpname, fname)) return False return True def save_community_icon(com, icon): # personal communities can have arbitary large icons because the picture # is not sent over network if com.get('peer') and len(icon) > TP_MAX_FACE_SIZE: warning('Community %s has too large icon picture: %d\n' %(com.get('name'), len(icon))) return False
def remove_temp(self): if self.tempfile != None: if not xremove(self.tempfile): warning("Unable to remove a scaled picture\n") self.tempfile = None