Beispiel #1
0
        gnupg = GnuPG()
        keys = gnupg.list_keys()
        results = []
        vcards = {}
        for key_id, key in keys.iteritems():
            vcls = [VCardLine(name='KEY', value=self.VCL_KEY_FMT % key_id)]
            card = None
            emails = []
            for uid in key.get('uids', []):
                if uid.get('email'):
                    vcls.append(VCardLine(name='email', value=uid['email']))
                    card = card or vcards.get(uid['email'])
                    emails.append(uid['email'])
                if uid.get('name'):
                    name = uid['name']
                    vcls.append(VCardLine(name='fn', value=name))
            if card and emails:
                card.add(*vcls)
            elif emails:
                # This is us taking care to only create one card for each
                # set of e-mail addresses.
                card = MailpileVCard(*vcls)
                for email in emails:
                    vcards[email] = card
                results.append(card)

        return results


_plugins.register_vcard_importers(GnuPGImporter)
Beispiel #2
0
            if mailpile.util.QUITTING:
                return []

            vcard = MailpileVCard(VCardLine(name=self.VCARD_TS,
                                            value=int(time.time())))
            email, img, gcard, gjson = self.check_libravatar(contact, email)

            if gcard:
                # FIXME: Is this boring?
                # vcard.load(data=gcard)
                pass

            if gjson:
                # FIXME: This is less boring!
                pass

            if img:
                vcard.add(VCardLine(
                    name='photo',
                    value='data:image/jpeg;base64,%s' % _b64(img),
                    mediatype='image/jpeg'
                ))

            if gcard or gjson or img:
                vcard.add(VCardLine(name='email', value=email))
                results.append(vcard)
        return results


_plugins.register_vcard_importers(LibravatarImporter)
Beispiel #3
0
    HTTP_QUERY_VARS = {
        'q': 'selectors',
        'no_public': 'omit public keys',
        'no_secret': 'omit secret keys'
    }
    COMMAND_SECURITY = security.CC_CHANGE_CONTACTS

    def command(self):
        session, config = self.session, self.session.config

        selectors = [a for a in self.args if not a.startswith('-')]
        selectors.extend(self.data.get('q', []))

        public = not (int(self.data.get('no_public', [0])[0]) or
                      '-no_public' in self.args)
        secret = not (int(self.data.get('no_secret', [0])[0]) or
                      '-no_secret' in self.args)

        imported = 0
        for cfg in config.prefs.vcard.importers.gpg:
            gimp = GnuPGImporter(session, cfg)
            imported += gimp.import_vcards(session, config.vcards,
                                           selectors=selectors)

        return self._success(_('Imported %d vCards from GPG keychain'
                               ) % imported, {'vcards': imported})


_plugins.register_commands(PGPKeysAsVCards, PGPKeysImportAsVCards)
_plugins.register_vcard_importers(GnuPGImporter)
Beispiel #4
0
                                    self.config.rating))
                    if not json:
                        json = _get('%s/%s.json' % (self.config.url, digest))
                        email = vcl.value
                except IOError:
                    pass

            if json:
                pass  # FIXME: parse the JSON

            if (self.config.default != '404') and not img:
                try:
                    img = _get(('%s/avatar/%s.jpg?s=%s&d=%s') %
                               (self.config.url, md5_hex(email.lower()),
                                self.config.size, self.config.default))
                except IOError:
                    pass

            if img:
                vcls.append(
                    VCardLine(name='photo',
                              value='data:image/jpeg;base64,%s' % _b64(img),
                              mediatype='image/jpeg'))

            vcls.append(VCardLine(name='email', value=email))
            results.append(SimpleVCard(*vcls))
        return results


_plugins.register_vcard_importers(GravatarImporter)
Beispiel #5
0
            self.inputMork(data)

    def get_vcards(self):
        self.load()
        people = self.morkToHash()
        # print people

        results = []
        vcards = {}
        for person in people:
            card = MailpileVCard()
            if "name" in person:
                card.add(VCardLine(name="FN", value=person["name"]))
            if "email" in person:
                card.add(VCardLine(name="EMAIL", value=person["email"]))
            results.append(card)

        return results


if __name__ == "__main__":
    import json
    filename = sys.argv[1]

    m = MorkImporter(filename=filename)
    m.load()
    print m.get_contacts(data)
else:
    _plugins.register_vcard_importers(MorkImporter)
Beispiel #6
0
class CardDAVImporter(VCardImporter):
    REQUIRED_PARAMETERS = ["host", "url"]
    OPTIONAL_PARAMETERS = ["port", "username", "password", "protocol"]
    FORMAT_NAME = "CardDAV Server"
    FORMAT_DESCRIPTION = "CardDAV HTTP contact server."
    SHORT_NAME = "carddav"
    CONFIG_RULES = {
        'host': ('Host name', 'hostname', None),
        'port': ('Port number', int, None),
        'url': ('CardDAV URL', 'url', None),
        'protcol': ('Connection protocol', 'string', 'https'),
        'password': ('CardDAV URL', 'url', None),
        'username': ('CardDAV URL', 'url', None)
    }

    def get_contacts(self):
        self.carddav = CardDAV(host, url, port, username, password, protocol)
        results = []
        cards = self.carddav.list_vcards()
        for card in cards:
            results.append(self.carddav.get_vcard(card))

        return results

    def filter_contacts(self, terms):
        pass


_plugins.register_vcard_importers(CardDAVImporter)
Beispiel #7
0
            self.inputMork(data)

    def get_vcards(self):
        self.load()
        people = self.morkToHash()
        # print people

        results = []
        vcards = {}
        for person in people:
            card = MailpileVCard()
            if "name" in person:
                card.add(VCardLine(name="FN", value=person["name"]))
            if "email" in person:
                card.add(VCardLine(name="EMAIL", value=person["email"]))
            results.append(card)

        return results


if __name__ == "__main__":
    import json
    filename = sys.argv[1]

    m = MorkImporter(filename=filename)
    m.load()
    print m.get_contacts(data)
else:
    _plugins.register_vcard_importers(MorkImporter)
Beispiel #8
0
class CardDAVImporter(VCardImporter):
    REQUIRED_PARAMETERS = ["host", "url"]
    OPTIONAL_PARAMETERS = ["port", "username", "password", "protocol"]
    FORMAT_NAME = "CardDAV Server"
    FORMAT_DESCRIPTION = "CardDAV HTTP contact server."
    SHORT_NAME = "carddav"
    CONFIG_RULES = {
        'host': ('Host name', 'hostname', None),
        'port': ('Port number', int, None),
        'url': ('CardDAV URL', 'url', None),
        'protcol': ('Connection protocol', 'string', 'https'),
        'password': ('CardDAV URL', 'url', None),
        'username': ('CardDAV URL', 'url', None)
    }

    def get_contacts(self):
        self.carddav = CardDAV(host, url, port, username, password, protocol)
        results = []
        cards = self.carddav.list_vcards()
        for card in cards:
            results.append(self.carddav.get_vcard(card))

        return results

    def filter_contacts(self, terms):
        pass


_plugins.register_vcard_importers(CardDAVImporter)