mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-23 11:12:47 +01:00
GPG: Fix previous commit.
This commit is contained in:
parent
c6697350b3
commit
db09100772
@ -53,5 +53,15 @@ GPG = conf.registerPlugin('GPG')
|
|||||||
# conf.registerGlobalValue(GPG, 'someConfigVariableName',
|
# conf.registerGlobalValue(GPG, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
|
|
||||||
|
conf.registerGroup(GPG, 'auth')
|
||||||
|
conf.registerGroup(GPG.auth, 'sign')
|
||||||
|
|
||||||
|
conf.registerGlobalValue(GPG.auth.sign, 'enable',
|
||||||
|
registry.Boolean(True, """Determines whether or not users are
|
||||||
|
allowed to use GPG signing for authentication."""))
|
||||||
|
conf.registerGlobalValue(GPG.auth.sign, 'TokenTimeout',
|
||||||
|
registry.PositiveInteger(60*10, """Determines the lifetime of a GPG
|
||||||
|
signature authentication token (in seconds)."""))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
|
||||||
|
@ -29,8 +29,14 @@
|
|||||||
###
|
###
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import supybot.gpg as gpg
|
||||||
|
import supybot.conf as conf
|
||||||
import supybot.utils as utils
|
import supybot.utils as utils
|
||||||
|
import supybot.ircdb as ircdb
|
||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
import supybot.plugins as plugins
|
import supybot.plugins as plugins
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
@ -103,9 +109,9 @@ class GPG(callbacks.Plugin):
|
|||||||
irc.reply(format('%L', keyids))
|
irc.reply(format('%L', keyids))
|
||||||
list = wrap(list, ['user'])
|
list = wrap(list, ['user'])
|
||||||
|
|
||||||
class sign(callbacks.Commands):
|
class signing(callbacks.Commands):
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
super(User.gpg, self).__init__(*args)
|
super(GPG.signing, self).__init__(*args)
|
||||||
self._tokens = {}
|
self._tokens = {}
|
||||||
|
|
||||||
def _expire_tokens(self):
|
def _expire_tokens(self):
|
||||||
@ -119,7 +125,7 @@ class GPG(callbacks.Plugin):
|
|||||||
Send you a token that you'll have to sign with your key."""
|
Send you a token that you'll have to sign with your key."""
|
||||||
self._expire_tokens()
|
self._expire_tokens()
|
||||||
token = '{%s}' % str(uuid.uuid4())
|
token = '{%s}' % str(uuid.uuid4())
|
||||||
lifetime = conf.supybot.plugins.User.gpg.TokenTimeout()
|
lifetime = conf.supybot.plugins.GPG.auth.sign.TokenTimeout()
|
||||||
self._tokens.update({token: (msg.prefix, time.time()+lifetime)})
|
self._tokens.update({token: (msg.prefix, time.time()+lifetime)})
|
||||||
irc.reply(_('Your token is: %s. Please sign it with your '
|
irc.reply(_('Your token is: %s. Please sign it with your '
|
||||||
'GPG key, paste it somewhere, and call the \'auth\' '
|
'GPG key, paste it somewhere, and call the \'auth\' '
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
|
from cStringIO import StringIO
|
||||||
|
|
||||||
from supybot.test import *
|
from supybot.test import *
|
||||||
|
|
||||||
import supybot.gpg as gpg
|
import supybot.gpg as gpg
|
||||||
@ -75,7 +77,7 @@ FINGERPRINT = '2CF3E41500218D30F0B654F5C9D3323C20AF012B'
|
|||||||
|
|
||||||
|
|
||||||
class GPGTestCase(PluginTestCase):
|
class GPGTestCase(PluginTestCase):
|
||||||
plugins = ('GPG',)
|
plugins = ('GPG', 'User')
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(GPGTestCase, self).setUp()
|
super(GPGTestCase, self).setUp()
|
||||||
@ -100,7 +102,7 @@ class GPGTestCase(PluginTestCase):
|
|||||||
gpg.keyring.import_keys(PRIVATE_KEY).__dict__
|
gpg.keyring.import_keys(PRIVATE_KEY).__dict__
|
||||||
(id, user) = ircdb.users.items()[0]
|
(id, user) = ircdb.users.items()[0]
|
||||||
user.gpgkeys.append(FINGERPRINT)
|
user.gpgkeys.append(FINGERPRINT)
|
||||||
msg = self.getMsg('gpg gettoken').args[-1]
|
msg = self.getMsg('gpg signing gettoken').args[-1]
|
||||||
match = re.search('is: ({.*}).', msg)
|
match = re.search('is: ({.*}).', msg)
|
||||||
assert match, repr(msg)
|
assert match, repr(msg)
|
||||||
token = match.group(1)
|
token = match.group(1)
|
||||||
@ -112,25 +114,25 @@ class GPGTestCase(PluginTestCase):
|
|||||||
fd = StringIO()
|
fd = StringIO()
|
||||||
fd.write('foo')
|
fd.write('foo')
|
||||||
fd.seek(0)
|
fd.seek(0)
|
||||||
self.assertResponse('gpg sign auth http://foo.bar/baz.gpg',
|
self.assertResponse('gpg signing auth http://foo.bar/baz.gpg',
|
||||||
'Error: Signature or token not found.')
|
'Error: Signature or token not found.')
|
||||||
|
|
||||||
fd = StringIO()
|
fd = StringIO()
|
||||||
fd.write(token)
|
fd.write(token)
|
||||||
fd.seek(0)
|
fd.seek(0)
|
||||||
self.assertResponse('gpg sign auth http://foo.bar/baz.gpg',
|
self.assertResponse('gpg signing auth http://foo.bar/baz.gpg',
|
||||||
'Error: Signature or token not found.')
|
'Error: Signature or token not found.')
|
||||||
|
|
||||||
fd = StringIO()
|
fd = StringIO()
|
||||||
fd.write(WRONG_TOKEN_SIGNATURE)
|
fd.write(WRONG_TOKEN_SIGNATURE)
|
||||||
fd.seek(0)
|
fd.seek(0)
|
||||||
self.assertRegexp('gpg sign auth http://foo.bar/baz.gpg',
|
self.assertRegexp('gpg signing auth http://foo.bar/baz.gpg',
|
||||||
'Error: Unknown token.*')
|
'Error: Unknown token.*')
|
||||||
|
|
||||||
fd = StringIO()
|
fd = StringIO()
|
||||||
fd.write(str(gpg.keyring.sign(token)))
|
fd.write(str(gpg.keyring.sign(token)))
|
||||||
fd.seek(0)
|
fd.seek(0)
|
||||||
self.assertResponse('gpg sign auth http://foo.bar/baz.gpg',
|
self.assertResponse('gpg signing auth http://foo.bar/baz.gpg',
|
||||||
'You are now authenticated as spam.')
|
'You are now authenticated as spam.')
|
||||||
|
|
||||||
utils.web.getUrlFd = realGetUrlFd
|
utils.web.getUrlFd = realGetUrlFd
|
||||||
|
@ -47,13 +47,4 @@ User = conf.registerPlugin('User')
|
|||||||
# conf.registerGlobalValue(User, 'someConfigVariableName',
|
# conf.registerGlobalValue(User, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
||||||
|
|
||||||
conf.registerGroup(User, 'gpg')
|
|
||||||
|
|
||||||
conf.registerGlobalValue(User.gpg, 'enable',
|
|
||||||
registry.Boolean(True, """Determines whether or not users are
|
|
||||||
allowed to use GPG for authentication."""))
|
|
||||||
conf.registerGlobalValue(User.gpg, 'TokenTimeout',
|
|
||||||
registry.PositiveInteger(60*10, """Determines the lifetime of a GPG
|
|
||||||
authentication token (in seconds)."""))
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
@ -29,8 +29,6 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import uuid
|
|
||||||
import time
|
|
||||||
import fnmatch
|
import fnmatch
|
||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
###
|
###
|
||||||
|
|
||||||
import re
|
import re
|
||||||
from cStringIO import StringIO
|
|
||||||
|
|
||||||
from supybot.test import PluginTestCase, network
|
from supybot.test import PluginTestCase, network
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user