~ubuntu-branches/ubuntu/utopic/gozerbot/utopic

« back to all changes in this revision

Viewing changes to debian/gozerbot/usr/lib/python2.5/site-packages/gozerplugs/plugs/pgp.py

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Malcolm
  • Date: 2009-09-14 09:00:29 UTC
  • mfrom: (1.1.4 upstream) (3.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090914090029-uval0ekt72kmklxw
Tags: 0.9.1.3-3
Changed dependency on python-setuptools to python-pkg-resources
(Closes: #546435) 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# gozerplugs/plugs/pgp.py
2
 
#
3
 
#
4
 
 
5
 
__author__ = "Wijnand 'tehmaze' Modderman - http://tehmaze.com"
6
 
__license__ = 'BSD'
7
 
 
8
 
from gozerbot.generic import rlog
9
 
from gozerbot.commands import cmnds
10
 
from gozerbot.examples import examples
11
 
from gozerbot.pgp import pgp, NoGPGException
12
 
from gozerbot.plughelp import plughelp
13
 
import re
14
 
 
15
 
plughelp.add('pgp', 'pgp utilities')
16
 
 
17
 
re_keyid = re.compile('^[0-9a-f]+$', re.I)
18
 
re_keyfinger = re.compile('.*Key fingerprint = ([0-9A-F\s]+)', re.I | re.M)
19
 
re_keypub = re.compile('pub\s+(\d+)(.)/([0-9A-F]+).+([-\d]{10})', re.M)
20
 
re_keyuid = re.compile('^uid\s+(.*)', re.M)
21
 
 
22
 
def handle_pgpfingerprint(bot, ievent):
23
 
    """ return fingerprint """
24
 
    if not ievent.args:
25
 
        return ievent.missing('<key id>')
26
 
    if not re_keyid.match(ievent.args[0]):
27
 
        return ievent.reply('invalid key id')
28
 
    try:
29
 
        (data, returncode) = pgp._gpg('--fingerprint', ievent.args[0])
30
 
    except NoGPGException:
31
 
        ievent.reply('no gnupg installed')
32
 
        return
33
 
    results = []
34
 
    test_keypub = re_keypub.search(data)
35
 
    if test_keypub:
36
 
        bits = int(test_keypub.group(1))
37
 
        keytype = test_keypub.group(2)
38
 
        if keytype == 'D':
39
 
            keytype = 'DSA'
40
 
        elif keytype == 'R':
41
 
            keytype = 'RSA'
42
 
        else:
43
 
            keytype = 'unknown'
44
 
        date = test_keypub.group(4).strip()
45
 
        results.append('%d bits %s key, created %s' % (bits, keytype, date))
46
 
    test_keyfinger = re_keyfinger.search(data)
47
 
    if test_keyfinger:
48
 
        results.append('fingerprint %s' % \
49
 
test_keyfinger.group(1).strip().replace(' ', ''))
50
 
    test_keyuid = re_keyuid.findall(data)
51
 
    if test_keyuid:
52
 
        results.append('user ids: %s' % ' .. '.join([x.strip() for x in \
53
 
test_keyuid]))
54
 
    if not results:
55
 
        return ievent.reply('no results')
56
 
    ievent.reply(', '.join(results))
57
 
 
58
 
cmnds.add('pgp-fingerprint', handle_pgpfingerprint, 'USER')
59
 
examples.add('pgp-fingerprint', 'shows the fingerprint information of a \
60
 
key id', 'pgp-fingerprint C5C9C2B2')
61
 
 
62
 
def handle_ppglist(bot, ievent):
63
 
    """ lists pgp keys """
64
 
    try:
65
 
        (data, returncode) = pgp._gpg('--fingerprint')
66
 
    except NoGPGException:
67
 
        ievent.reply('no gnupg installed')
68
 
        return
69
 
    pubkeys = re_keypub.findall(data)
70
 
    if pubkeys:
71
 
        pubkeys = [x[2] for x in pubkeys]
72
 
        pubkeys.sort()
73
 
        ievent.reply('installed public keys: %s' % ' .. '.join(pubkeys))
74
 
    else:
75
 
        ievent.reply('no public keys installed')
76
 
 
77
 
cmnds.add('pgp-list', handle_ppglist, 'OPER')
78
 
examples.add('pgp-list', 'show list of registered pgp keys', 'pgp-list')
79
 
 
80
 
def handle_pgpremove(bot, ievent):
81
 
    """ remove pgp key """
82
 
    if not ievent.args:
83
 
        return ievent.missing('<key id>')
84
 
    if len(ievent.args[0]) < 8 or not re_keyid.match(ievent.args[0]):
85
 
        return ievent.reply('invalid key id')
86
 
    if pgp.remove(ievent.args[0]):
87
 
        ievent.reply('ok')
88
 
    else:
89
 
        ievent.reply('failed')
90
 
 
91
 
cmnds.add('pgp-remove', handle_pgpremove, 'OPER')
92
 
examples.add('pgp-remove', 'remove a regitered pgp key', 'pgp-remove F9EBC3D8')