mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
py3: ipa-dnskeysyncd: fix bytes issues
LDAP client returns values as bytes, thus ipa-dnskeysyncd must work with bytes properly. https://pagure.io/freeipa/issue/4985 Reviewed-By: Stanislav Laznicka <slaznick@redhat.com>
This commit is contained in:
committed by
Christian Heimes
parent
d945583cc7
commit
84a10ee372
@@ -46,7 +46,7 @@ class KeySyncer(SyncReplConsumer):
|
|||||||
|
|
||||||
Given set of attributes has to have exactly one supported object class.
|
Given set of attributes has to have exactly one supported object class.
|
||||||
"""
|
"""
|
||||||
supported_objclasses = set(['idnszone', 'idnsseckey', 'ipk11publickey'])
|
supported_objclasses = {b'idnszone', b'idnsseckey', b'ipk11publickey'}
|
||||||
present_objclasses = set([o.lower() for o in attrs[OBJCLASS_ATTR]]).intersection(supported_objclasses)
|
present_objclasses = set([o.lower() for o in attrs[OBJCLASS_ATTR]]).intersection(supported_objclasses)
|
||||||
assert len(present_objclasses) == 1, attrs[OBJCLASS_ATTR]
|
assert len(present_objclasses) == 1, attrs[OBJCLASS_ATTR]
|
||||||
return present_objclasses.pop()
|
return present_objclasses.pop()
|
||||||
@@ -55,44 +55,44 @@ class KeySyncer(SyncReplConsumer):
|
|||||||
"""Get SIGNING_ATTR from dictionary with LDAP zone attributes.
|
"""Get SIGNING_ATTR from dictionary with LDAP zone attributes.
|
||||||
|
|
||||||
Returned value is normalized to TRUE or FALSE, defaults to FALSE."""
|
Returned value is normalized to TRUE or FALSE, defaults to FALSE."""
|
||||||
values = attrs.get(SIGNING_ATTR, ['FALSE'])
|
values = attrs.get(SIGNING_ATTR, [b'FALSE'])
|
||||||
assert len(values) == 1, '%s is expected to be single-valued' \
|
assert len(values) == 1, '%s is expected to be single-valued' \
|
||||||
% SIGNING_ATTR
|
% SIGNING_ATTR
|
||||||
return values[0].upper()
|
return values[0].upper()
|
||||||
|
|
||||||
def __is_dnssec_enabled(self, attrs):
|
def __is_dnssec_enabled(self, attrs):
|
||||||
"""Test if LDAP DNS zone with given attributes is DNSSEC enabled."""
|
"""Test if LDAP DNS zone with given attributes is DNSSEC enabled."""
|
||||||
return self.__get_signing_attr(attrs) == 'TRUE'
|
return self.__get_signing_attr(attrs) == b'TRUE'
|
||||||
|
|
||||||
def __is_replica_pubkey(self, attrs):
|
def __is_replica_pubkey(self, attrs):
|
||||||
vals = attrs.get('ipk11label', [])
|
vals = attrs.get('ipk11label', [])
|
||||||
if len(vals) != 1:
|
if len(vals) != 1:
|
||||||
return False
|
return False
|
||||||
return vals[0].startswith('dnssec-replica:')
|
return vals[0].startswith(b'dnssec-replica:')
|
||||||
|
|
||||||
def application_add(self, uuid, dn, newattrs):
|
def application_add(self, uuid, dn, newattrs):
|
||||||
objclass = self._get_objclass(newattrs)
|
objclass = self._get_objclass(newattrs)
|
||||||
if objclass == 'idnszone':
|
if objclass == b'idnszone':
|
||||||
self.zone_add(uuid, dn, newattrs)
|
self.zone_add(uuid, dn, newattrs)
|
||||||
elif objclass == 'idnsseckey':
|
elif objclass == b'idnsseckey':
|
||||||
self.key_meta_add(uuid, dn, newattrs)
|
self.key_meta_add(uuid, dn, newattrs)
|
||||||
elif objclass == 'ipk11publickey' and \
|
elif objclass == b'ipk11publickey' and \
|
||||||
self.__is_replica_pubkey(newattrs):
|
self.__is_replica_pubkey(newattrs):
|
||||||
self.hsm_master_sync()
|
self.hsm_master_sync()
|
||||||
|
|
||||||
def application_del(self, uuid, dn, oldattrs):
|
def application_del(self, uuid, dn, oldattrs):
|
||||||
objclass = self._get_objclass(oldattrs)
|
objclass = self._get_objclass(oldattrs)
|
||||||
if objclass == 'idnszone':
|
if objclass == b'idnszone':
|
||||||
self.zone_del(uuid, dn, oldattrs)
|
self.zone_del(uuid, dn, oldattrs)
|
||||||
elif objclass == 'idnsseckey':
|
elif objclass == b'idnsseckey':
|
||||||
self.key_meta_del(uuid, dn, oldattrs)
|
self.key_meta_del(uuid, dn, oldattrs)
|
||||||
elif objclass == 'ipk11publickey' and \
|
elif objclass == b'ipk11publickey' and \
|
||||||
self.__is_replica_pubkey(oldattrs):
|
self.__is_replica_pubkey(oldattrs):
|
||||||
self.hsm_master_sync()
|
self.hsm_master_sync()
|
||||||
|
|
||||||
def application_sync(self, uuid, dn, newattrs, oldattrs):
|
def application_sync(self, uuid, dn, newattrs, oldattrs):
|
||||||
objclass = self._get_objclass(oldattrs)
|
objclass = self._get_objclass(oldattrs)
|
||||||
if objclass == 'idnszone':
|
if objclass == b'idnszone':
|
||||||
olddn = ldap.dn.str2dn(oldattrs['dn'])
|
olddn = ldap.dn.str2dn(oldattrs['dn'])
|
||||||
newdn = ldap.dn.str2dn(newattrs['dn'])
|
newdn = ldap.dn.str2dn(newattrs['dn'])
|
||||||
assert olddn == newdn, 'modrdn operation is not supported'
|
assert olddn == newdn, 'modrdn operation is not supported'
|
||||||
@@ -105,10 +105,10 @@ class KeySyncer(SyncReplConsumer):
|
|||||||
else:
|
else:
|
||||||
self.zone_del(uuid, olddn, oldattrs)
|
self.zone_del(uuid, olddn, oldattrs)
|
||||||
|
|
||||||
elif objclass == 'idnsseckey':
|
elif objclass == b'idnsseckey':
|
||||||
self.key_metadata_sync(uuid, dn, oldattrs, newattrs)
|
self.key_metadata_sync(uuid, dn, oldattrs, newattrs)
|
||||||
|
|
||||||
elif objclass == 'ipk11publickey' and \
|
elif objclass == b'ipk11publickey' and \
|
||||||
self.__is_replica_pubkey(newattrs):
|
self.__is_replica_pubkey(newattrs):
|
||||||
self.hsm_master_sync()
|
self.hsm_master_sync()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user