Beispiel #1
0
    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
Beispiel #2
0
    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))
Beispiel #3
0
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
Beispiel #4
0
def delete_community_icon(com):
    xremove(get_community_icon_name(com, legacyname=False))
    xremove(get_community_icon_name(com, legacyname=True))
Beispiel #5
0
def delete_face(user):
    xremove(get_face_name(user, legacyname=False))
    xremove(get_face_name(user, legacyname=True))
Beispiel #6
0
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
Beispiel #7
0
 def remove_temp(self):
     if self.tempfile != None:
         if not xremove(self.tempfile):
             warning("Unable to remove a scaled picture\n")
         self.tempfile = None