in cartography/intel/aws/route53.py [0:0]
def parse_record_set(record_set, zone_id):
# process CNAME, ALIAS and A records
if record_set['Type'] == 'CNAME':
if 'AliasTarget' in record_set:
# this is a weighted CNAME record
value = record_set['AliasTarget']['DNSName']
if value.endswith('.'):
value = value[:-1]
return {
"name": record_set['Name'][:-1],
"type": 'CNAME',
"zoneid": zone_id,
"value": value,
"id": record_set['Name'][:-1] + '+WEIGHTED_CNAME'
}
else:
# This is a normal CNAME record
value = record_set['ResourceRecords'][0]['Value']
if value.endswith('.'):
value = value[:-1]
return {
"name": record_set['Name'][:-1],
"type": 'CNAME',
"zoneid": zone_id,
"value": value,
"id": record_set['Name'][:-1] + '+CNAME'
}
elif record_set['Type'] == 'A':
if 'AliasTarget' in record_set:
# this is an ALIAS record
# ALIAS records are a special AWS-only type of A record
return {
"name": record_set['Name'][:-1],
"type": 'ALIAS',
"zoneid": zone_id,
"value": record_set['AliasTarget']['DNSName'][:-1],
"id": record_set['Name'][:-1] + '+ALIAS'
}
else:
# this is a real A record
# loop and add each value (IP address) to a comma separated string
# don't forget to trim that trailing comma!
# TODO can this be replaced with a string join?
value = ''
for a_value in record_set['ResourceRecords']:
value = value + a_value['Value'] + ','
return {
"name": record_set['Name'][:-1],
"type": 'A',
"zoneid": zone_id,
"value": value[:-1],
"id": record_set['Name'][:-1] + '+A'
}