Beispiel #1
0
 def dropPrivkey(self):
     try:
         os.remove(self.keyFilePath + '.key3')
     except IOError, e:
         if e.errno != 2:
             log.exception('IOError occurred when removing key file for %s',
                     self.name)
Beispiel #2
0
 def savePrivkey(self):
     try:
         with open(self.keyFilePath + '.key3', 'wb') as keyFile:
             keyFile.write(self.getPrivkey().serializePrivateKey())
     except IOError, e:
         log.exception('IOError occurred when loading key file for %s',
                       self.name)
Beispiel #3
0
 def savePrivkey(self):
     try:
         with open(self.keyFilePath + '.key3', 'wb') as keyFile:
             keyFile.write(self.getPrivkey().serializePrivateKey())
     except IOError, e:
         log.exception('IOError occurred when loading key file for %s',
                 self.name)
Beispiel #4
0
 def loadPrivkey(self):
     try:
         with open(self.keyFilePath + ".key3", "rb") as keyFile:
             return potr.crypt.PK.parsePrivateKey(keyFile.read())[0]
     except IOError, e:
         if e.errno != 2:
             log.exception("IOError occurred when loading key file for %s", self.name)
Beispiel #5
0
    def download_plugin(self):
        gobject.idle_add(self.progressbar.show)
        self.pulse = gobject.timeout_add(150, self.progressbar_pulse)
        gobject.idle_add(self.progressbar.set_text, _('Creating a list of files'))
        for remote_dir in self.remote_dirs:
            filename = remote_dir + '.zip'
            base_dir, user_dir = gajim.PLUGINS_DIRS
            if not os.path.isdir(user_dir):
                os.mkdir(user_dir)
            local_dir = os.path.join(user_dir, remote_dir)
            if not os.path.isdir(local_dir):
                os.mkdir(local_dir)
            local_dir = os.path.split(user_dir)[0]

            # downloading zip file
            gobject.idle_add(self.progressbar.set_text,
                             _('Downloading "%s"') % filename)
            try:
                buf = self.plugin.retrieve_path(self.plugin.server_folder,
                                                filename)
            except:
                log.exception("Error downloading plugin %s" % filename)
                continue
            with zipfile.ZipFile(buf) as zip_file:
                zip_file.extractall(os.path.join(local_dir, 'plugins'))

        gobject.idle_add(self.window.emit, 'plugin_downloaded',
                         self.remote_dirs)
        gobject.source_remove(self.pulse)
Beispiel #6
0
 def dropPrivkey(self):
     try:
         os.remove(self.keyFilePath + '.key3')
     except IOError, e:
         if e.errno != 2:
             log.exception('IOError occurred when removing key file for %s',
                     self.name)
Beispiel #7
0
 def savePrivkey(self):
     try:
         with open(self.keyFilePath + '.key2', 'w') as keyFile:
             pickle.dump(self.getPrivkey(), keyFile)
     except IOError, e:
         log.exception('IOError occurred when loading key file for %s',
                 self.name)
Beispiel #8
0
 def loadPrivkey(self):
     try:
         with open(self.keyFilePath + '.key3', 'rb') as keyFile:
             return potr.crypt.PK.parsePrivateKey(keyFile.read())[0]
     except IOError, e:
         if e.errno != 2:
             log.exception('IOError occurred when loading key file for %s',
                     self.name)
Beispiel #9
0
 def loadPrivkey(self):
     try:
         with open(self.keyFilePath + '.key2', 'r') as keyFile:
             return pickle.load(keyFile)
     except IOError, e:
         if e.errno != 2:
             log.exception('IOError occurred when loading key file for %s',
                     self.name)
Beispiel #10
0
 def saveTrusts(self):
     try:
         with open(self.keyFilePath + ".fpr", "w") as fprFile:
             for uid, trusts in self.trusts.iteritems():
                 for fpr, trustVal in trusts.iteritems():
                     fprFile.write("\t".join((uid, self.name, PROTOCOL, fpr, trustVal)))
                     fprFile.write("\n")
     except IOError, e:
         log.exception("IOError occurred when loading fpr file for %s", self.name)
Beispiel #11
0
 def saveTrusts(self):
     try:
         with open(self.keyFilePath + '.fpr', 'w') as fprFile:
             for uid, trusts in self.trusts.iteritems():
                 for fpr, trustVal in trusts.iteritems():
                     fprFile.write('\t'.join(
                         (uid, self.name, PROTOCOL, fpr, trustVal)))
                     fprFile.write('\n')
     except IOError, e:
         log.exception('IOError occurred when loading fpr file for %s',
                       self.name)
Beispiel #12
0
 def saveTrusts(self):
     try:
         with open(self.keyFilePath + '.fpr', 'w') as fprFile:
             for uid, trusts in self.trusts.iteritems():
                 for fpr, trustVal in trusts.iteritems():
                     fprFile.write('\t'.join(
                             (uid, self.name, PROTOCOL, fpr, trustVal)))
                     fprFile.write('\n')
     except IOError, e:
         log.exception('IOError occurred when loading fpr file for %s',
                 self.name)
Beispiel #13
0
    def loadTrusts(self, newCtxCb=None):
        """ load the fingerprint trustdb """
        # it has the same format as libotr, therefore the
        # redundant account / proto field
        try:
            with open(self.keyFilePath + ".fpr", "r") as fprFile:
                for line in fprFile:
                    ctx, acc, proto, fpr, trust = line[:-1].split("\t")

                    if acc != self.name or proto != PROTOCOL:
                        continue

                    jid = get_jid_from_fjid(ctx)
                    self.setTrust(jid, fpr, trust)
        except IOError, e:
            if e.errno != 2:
                log.exception("IOError occurred when loading fpr file for %s", self.name)
Beispiel #14
0
    def loadTrusts(self, newCtxCb=None):
        ''' load the fingerprint trustdb '''
        # it has the same format as libotr, therefore the
        # redundant account / proto field
        try:
            with open(self.keyFilePath + '.fpr', 'r') as fprFile:
                for line in fprFile:
                    ctx, acc, proto, fpr, trust = line[:-1].split('\t')

                    if acc != self.name or proto != PROTOCOL:
                        continue

                    self.getContext(ctx, newCtxCb).setTrust(fpr, trust)
        except IOError, e:
            if e.errno != 2:
                log.exception('IOError occurred when loading fpr file for %s',
                        self.name)
Beispiel #15
0
        def loadTrusts(self, newCtxCb=None):
            ''' load the fingerprint trustdb '''
            # it has the same format as libotr, therefore the
            # redundant account / proto field
            try:
                with open(self.keyFilePath + '.fpr', 'r') as fprFile:
                    for line in fprFile:
                        ctx, acc, proto, fpr, trust = line[:-1].split('\t')

                        if acc != self.name or proto != PROTOCOL:
                            continue

                        jid = get_jid_from_fjid(ctx)
                        self.setTrust(jid, fpr, trust)
            except IOError, e:
                if e.errno != 2:
                    log.exception('IOError occurred when loading fpr file for %s',
                            self.name)
Beispiel #16
0
 def _run():
     try:
         to_update = []
         zipbuf = self.retrieve_manifest()
         plugin_manifests = self.parse_manifest(zipbuf)
         for config in plugin_manifests:
             opts = config.options('info')
             if 'name' not in opts or 'version' not in opts or \
                'description' not in opts or 'authors' not in opts or \
                'homepage' not in opts:
                 continue
             local_version = ftp.get_plugin_version(config.get(
                 'info', 'name'))
             if local_version:
                 local = convert_version_to_list(local_version)
                 remote = convert_version_to_list(config.get('info',
                                                             'version'))
                 if remote > local:
                     to_update.append(config.get('info', 'name'))
         gobject.idle_add(self.warn_update, to_update)
     except Exception as e:
         log.exception('Ftp error when check for updates: ')
Beispiel #17
0
 def download(self, url, filepath):
     """
     Download a file. This function should
     be launched in a separated thread.
     """
     log.debug('Getting map thumbnail ..')
     try:
         req = urllib2.Request(url)
         req.add_header('User-Agent', 'Gajim')
         f = urllib2.urlopen(req)
     except Exception as ex:
         log.debug('Error loading file %s ' % str(ex))
     else:
         try:
             temp = f.read()
             with open(filepath, "wb") as local_file:
                 local_file.write(temp)
                 local_file.closed
             log.debug('Saved map thumbnail ..')
         except Exception as ex:
             log.exception('Error: ')
         if temp:
             return temp
Beispiel #18
0
 def download(self, url, filepath):
     """
     Download a file. This function should
     be launched in a separated thread.
     """
     log.debug('Getting map thumbnail ..')
     try:
         req = urllib2.Request(url)
         req.add_header('User-Agent', 'Gajim')
         f = urllib2.urlopen(req)
     except Exception as ex:
         log.debug('Error loading file %s '
                   % str(ex))
     else:
         try:
             temp = f.read()
             with open(filepath, "wb") as local_file:
                 local_file.write(temp)
                 local_file.closed
             log.debug('Saved map thumbnail ..')
         except Exception as ex:
             log.exception('Error: ')
         if temp:
             return temp
Beispiel #19
0
    def run(self):
        try:
            gobject.idle_add(self.progressbar.set_text,
                _('Connecting to server'))
            if not self.remote_dirs:
                gobject.idle_add(self.progressbar.set_text,
                                 _('Scan files on the server'))
                try:
                    buf = self.plugin.retrieve_path(self.plugin.server_folder, 'manifests_images.zip')
                except:
                    log.exception("Error fetching plugin list")
                    return
                zip_file = zipfile.ZipFile(buf)
                manifest_list = zip_file.namelist()
                progress_step = 1.0 / len(manifest_list)
                for filename in manifest_list:
                    if not filename.endswith('manifest.ini'):
                        continue
                    dir_ = filename.split('/')[0]
                    fract = self.progressbar.get_fraction() + progress_step
                    gobject.idle_add(self.progressbar.set_fraction, fract)
                    gobject.idle_add(self.progressbar.set_text,
                        _('Reading "%s"') % dir_)

                    config = ConfigParser.ConfigParser()
                    config.readfp(zip_file.open(filename))
                    if not config.has_section('info'):
                        continue
                    opts = config.options('info')
                    if 'name' not in opts or 'version' not in opts or \
                    'description' not in opts or 'authors' not in opts or \
                    'homepage' not in opts:
                        continue

                    local_version = self.get_plugin_version(
                        config.get('info', 'name'))
                    upgrade = False
                    if self.upgrading and local_version:
                        local = convert_version_to_list(local_version)
                        remote = convert_version_to_list(config.get('info',
                            'version'))
                        if remote > local:
                            upgrade = True
                            gobject.idle_add(
                                self.plugin.inslall_upgrade_button.set_property,
                                'sensitive', True)
                    png_filename = dir_ + '/' + dir_ + '.png'
                    if png_filename in manifest_list:
                        data = zip_file.open(png_filename).read()
                        pbl = gtk.gdk.PixbufLoader()
                        pbl.set_size(16, 16)
                        pbl.write(data)
                        pbl.close()
                        def_icon = pbl.get_pixbuf()
                    else:
                        def_icon = self.def_icon
                    if local_version:
                        base_dir, user_dir = gajim.PLUGINS_DIRS
                        local_dir = os.path.join(user_dir, dir_)

                    gobject.idle_add(self.model_append, [def_icon, dir_,
                        config.get('info', 'name'), local_version,
                        config.get('info', 'version'), upgrade,
                        config.get('info', 'description'),
                        config.get('info', 'authors'),
                        config.get('info', 'homepage'), ])
            gobject.idle_add(self.progressbar.set_fraction, 0)
            if self.remote_dirs:
                self.download_plugin()
            gobject.idle_add(self.progressbar.hide)
            gobject.idle_add(self.plugin.select_root_iter)
        except Exception, e:
            self.window.emit('error_signal', str(e))