summaryrefslogtreecommitdiff
path: root/src/leap/mx/check_recipient_access.py
diff options
context:
space:
mode:
authordrebs <drebs@leap.se>2015-04-09 17:18:37 -0300
committerdrebs <drebs@leap.se>2015-04-09 18:20:00 -0300
commitb0ef529cc882a96903597fb5279919969fa286c3 (patch)
tree2243cd550e3e0769880b350184b5f5a3653c362a /src/leap/mx/check_recipient_access.py
parent45adb4d6cfdb8b9ed11e3efc398d00ec6dbdc0b0 (diff)
[refactor] use couch reduced views for lookups
The way uuid and pgp key were being queried by means of couch views was not efficient because they weren't using the reduce function and were filtering the views results in the python code. Also, the uuid is not actually needed to find out either if the address exists or if there's a pgp public key for that address. This commit refactors the couch helper to make use of the reduce functions in queried views and to get rid of the intermediate uuid querying.
Diffstat (limited to 'src/leap/mx/check_recipient_access.py')
-rw-r--r--src/leap/mx/check_recipient_access.py25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/leap/mx/check_recipient_access.py b/src/leap/mx/check_recipient_access.py
index 0977564..3b61fe8 100644
--- a/src/leap/mx/check_recipient_access.py
+++ b/src/leap/mx/check_recipient_access.py
@@ -50,8 +50,8 @@ class LEAPPostFixTCPMapAccessServer(postfix.PostfixTCPMapServer):
:param value: The uuid and public key.
:type value: list
"""
- uuid, pubkey = value
- if uuid is None:
+ address, pubkey = value
+ if address is None:
self.sendCode(
TCP_MAP_CODE_PERMANENT_FAILURE,
postfix.quote("REJECT"))
@@ -75,25 +75,22 @@ class CheckRecipientAccessFactory(LEAPPostfixTCPMapServerFactory):
protocol = LEAPPostFixTCPMapAccessServer
- def _getPubKey(self, uuid):
+ def _getPubKey(self, address):
"""
- Look up PGP public key based on user uid.
+ Look up PGP public key based on email address.
- :param uuid: The user uid.
- :type uuid: str
+ :param address: The email address.
+ :type address: str
- :return: A deferred that is fired with the uuid and the public key, if
- available.
+ :return: A deferred that is fired with the address and the public key, if
+ each of them exists.
:rtype: DeferredList
"""
- if uuid is None:
+ if not address:
return defer.succeed([None, None])
- # properly encode uuid, otherwise twisted complains when replying
- if isinstance(uuid, unicode):
- uuid = uuid.encode("utf8")
return defer.gatherResults([
- defer.succeed(uuid),
- self._cdb.getPubKey(uuid),
+ defer.succeed(address),
+ self._cdb.getPubKey(address),
])
def get(self, key):