|
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 |
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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: |
|
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): |
|
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 |
|
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 |
''' |