View | Details | Raw Unified | Return to bug 39161
Collapse All | Expand All

(-)modules/univention/s4connector/s4/dns.py (-7 / +39 lines)
 Lines 38-44    Link Here 
38
from univention.s4connector.s4.dc import _unixTimeInverval2seconds
38
from univention.s4connector.s4.dc import _unixTimeInverval2seconds
39
from univention.admin.mapping import unmapUNIX_TimeInterval
39
from univention.admin.mapping import unmapUNIX_TimeInterval
40
40
41
from samba.dcerpc import dnsp
41
from samba.dcerpc import dnsp, misc
42
from samba.ndr import ndr_pack, ndr_unpack, ndr_print
42
from samba.ndr import ndr_pack, ndr_unpack, ndr_print
43
import copy
43
import copy
44
import time
44
import time
 Lines 888-894    Link Here 
888
		superordinate=s4connector_get_superordinate('dns/host_record', s4connector.lo, searchResult[0][0])
888
		superordinate=s4connector_get_superordinate('dns/host_record', s4connector.lo, searchResult[0][0])
889
		newRecord= univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
889
		newRecord= univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
890
		newRecord.open()
890
		newRecord.open()
891
		newRecord.delete()
891
		newRecord.remove()
892
	else:
892
	else:
893
		ud.debug(ud.LDAP, ud.INFO, 'ucs_host_record_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
893
		ud.debug(ud.LDAP, ud.INFO, 'ucs_host_record_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
894
894
 Lines 954-960    Link Here 
954
		superordinate=s4connector_get_superordinate('dns/ptr_record', s4connector.lo, searchResult[0][0])
954
		superordinate=s4connector_get_superordinate('dns/ptr_record', s4connector.lo, searchResult[0][0])
955
		newRecord= univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
955
		newRecord= univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
956
		newRecord.open()
956
		newRecord.open()
957
		newRecord.delete()
957
		newRecord.remove()
958
	else:
958
	else:
959
		ud.debug(ud.LDAP, ud.INFO, 'ucs_ptr_record_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
959
		ud.debug(ud.LDAP, ud.INFO, 'ucs_ptr_record_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
960
960
 Lines 1008-1014    Link Here 
1008
		superordinate=s4connector_get_superordinate('dns/alias', s4connector.lo, searchResult[0][0])
1008
		superordinate=s4connector_get_superordinate('dns/alias', s4connector.lo, searchResult[0][0])
1009
		newRecord= univention.admin.handlers.dns.alias.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1009
		newRecord= univention.admin.handlers.dns.alias.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1010
		newRecord.open()
1010
		newRecord.open()
1011
		newRecord.delete()
1011
		newRecord.remove()
1012
	else:
1012
	else:
1013
		ud.debug(ud.LDAP, ud.INFO, 'ucs_cname_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
1013
		ud.debug(ud.LDAP, ud.INFO, 'ucs_cname_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
1014
1014
 Lines 1095-1101    Link Here 
1095
		superordinate=s4connector_get_superordinate('dns/srv_record', s4connector.lo, searchResult[0][0])
1095
		superordinate=s4connector_get_superordinate('dns/srv_record', s4connector.lo, searchResult[0][0])
1096
		newRecord= univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1096
		newRecord= univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1097
		newRecord.open()
1097
		newRecord.open()
1098
		newRecord.delete()
1098
		newRecord.remove()
1099
	else:
1099
	else:
1100
		ud.debug(ud.LDAP, ud.INFO, 'ucs_srv_record_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
1100
		ud.debug(ud.LDAP, ud.INFO, 'ucs_srv_record_delete: Object was not found, filter was: ((&(relativeDomainName=%s)(zoneName=%s))' % (relativeDomainName, zoneName))
1101
1101
 Lines 1253-1259    Link Here 
1253
		elif dns_type == 'reverse_zone':
1253
		elif dns_type == 'reverse_zone':
1254
			zone= univention.admin.handlers.dns.reverse_zone.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=None, attributes=[], update_zone=False)
1254
			zone= univention.admin.handlers.dns.reverse_zone.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=None, attributes=[], update_zone=False)
1255
		zone.open()
1255
		zone.open()
1256
		zone.delete()
1256
		zone.remove()
1257
1257
1258
	
1258
	
1259
1259
 Lines 1305-1310    Link Here 
1305
				for dnsRecord in dnsRecords:
1305
				for dnsRecord in dnsRecords:
1306
					dnsRecord=dnsRecord.encode('latin1')
1306
					dnsRecord=dnsRecord.encode('latin1')
1307
					dnsRecord_DnssrvRpcRecord=ndr_unpack(dnsp.DnssrvRpcRecord, dnsRecord)
1307
					dnsRecord_DnssrvRpcRecord=ndr_unpack(dnsp.DnssrvRpcRecord, dnsRecord)
1308
					ud.debug(ud.LDAP, ud.INFO, "_identify_dns_con_object: DEBUG: %s" % (ndr_print(dnsRecord_DnssrvRpcRecord),))
1308
					dns_types.add(dnsRecord_DnssrvRpcRecord.wType)
1309
					dns_types.add(dnsRecord_DnssrvRpcRecord.wType)
1309
1310
1310
				if dnsp.DNS_TYPE_PTR in dns_types:
1311
				if dnsp.DNS_TYPE_PTR in dns_types:
 Lines 1376-1381    Link Here 
1376
			s4_dns_node_base_delete(s4connector, object)
1377
			s4_dns_node_base_delete(s4connector, object)
1377
		# ignore move
1378
		# ignore move
1378
1379
1380
	if object['modtype'] in ['delete']:
1381
		## probably we should also do this (see s4/__init__.py):
1382
		entryUUID = object['attributes']['entryUUID'][0]
1383
		s4connector.update_deleted_cache_after_removal(entryUUID, guid)
1384
1379
	return True
1385
	return True
1380
1386
1381
def con2ucs (s4connector, key, object):
1387
def con2ucs (s4connector, key, object):
 Lines 1383-1391    Link Here 
1383
1389
1384
	ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: Object (%s): %s' % (object['dn'], object))
1390
	ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: Object (%s): %s' % (object['dn'], object))
1385
	
1391
	
1386
	dns_type=_identify_dns_con_object(s4connector, object)
1392
	guid_unicode = object.get('attributes').get('objectGUID')[0]
1393
	guid_blob = guid_unicode.encode('ISO-8859-1')   ## to compensate for __object_from_element
1394
	guid = str(ndr_unpack(misc.GUID, guid_blob))
1387
1395
1396
	ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: modtype %s' % (object['modtype'],))
1397
	dns_type = None
1398
	if object['modtype'] == 'modify':
1399
		if object['attributes'].get('dNSTombstoned', [None])[0] == 'TRUE':
1400
			ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: got tombstoned object')
1401
			object['modtype']='delete'
1402
			old_s4_object = s4connector.s4cache.get_entry(guid)
1403
			if old_s4_object:
1404
				ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: Got old_s4_object: %s' % old_s4_object)
1405
				dns_type=_identify_dns_con_object(s4connector, {'attributes': old_s4_object})
1406
			else:
1407
				ud.debug(ud.LDAP, ud.WARN, 'dns con2ucs: Can\'t figure out type of tombstoned object, old_s4_object not found in s4cache')
1408
1388
	if not dns_type:
1409
	if not dns_type:
1410
		dns_type=_identify_dns_con_object(s4connector, object)
1411
1412
	if not dns_type:
1389
		# unknown object -> ignore
1413
		# unknown object -> ignore
1390
		ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: Ignore unkown dns object: %s' % object['dn'])
1414
		ud.debug(ud.LDAP, ud.INFO, 'dns con2ucs: Ignore unkown dns object: %s' % object['dn'])
1391
		return True
1415
		return True
 Lines 1432-1437    Link Here 
1432
			ucs_zone_delete(s4connector, object, dns_type)
1456
			ucs_zone_delete(s4connector, object, dns_type)
1433
		# ignore move
1457
		# ignore move
1434
1458
1459
	if object['modtype'] in ['add', 'modify']:
1460
		s4connector.s4cache.add_entry(guid, object.get('attributes'))
1461
	elif object['modtype'] in ['delete']:
1462
		s4connector.s4cache.remove_entry(guid)
1463
		## probably we should also do this (see __init__.py):
1464
		entryUUID = self._get_entryUUID(object['dn'])
1465
		s4connector.update_deleted_cache_after_removal(entryUUID, guid)
1466
1435
	return True
1467
	return True
1436
1468
1437
'''
1469
'''

Return to bug 39161