record_type = dnsp.DNS_TYPE_A
elif rtype == 'AAAA':
record_type = dnsp.DNS_TYPE_AAAA
+ elif rtype == 'PTR':
+ record_type = dnsp.DNS_TYPE_PTR
elif rtype == 'NS':
record_type = dnsp.DNS_TYPE_NS
elif rtype == 'CNAME':
mesg = 'Unknown: '
if rec.wType == dnsp.DNS_TYPE_A:
mesg = 'A: %s' % (rec.data)
+ elif rec.wType == dnsp.DNS_TYPE_AAAA:
+ mesg = 'AAAA: %s' % (rec.data)
+ elif rec.wType == dnsp.DNS_TYPE_PTR:
+ mesg = 'PTR: %s' % (rec.data.str)
elif rec.wType == dnsp.DNS_TYPE_NS:
mesg = 'NS: %s' % (rec.data.str)
elif rec.wType == dnsp.DNS_TYPE_CNAME:
self.dwTtlSeconds = ttl
self.data = ip6_addr
+class PTRRecord(dnsserver.DNS_RPC_RECORD):
+ def __init__(self, ptr, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
+ node_flag=0):
+ super(PTRRecord, self).__init__()
+ self.wType = dnsp.DNS_TYPE_PTR
+ self.dwFlags = rank | node_flag
+ self.dwSerial = serial
+ self.dwTtleSeconds = ttl
+ ptr_name = dnsserver.DNS_RPC_NAME()
+ ptr_name.str = ptr
+ ptr_name.len = len(ptr)
+ self.data = ptr_name
+
class CNameRecord(dnsserver.DNS_RPC_RECORD):
def __init__(self, cname, serial=1, ttl=900, rank=dnsp.DNS_RANK_ZONE,
node_flag=0):
elif record_type == dnsp.DNS_TYPE_AAAA:
if rec_match.data == data:
found = True
+ elif record_type == dnsp.DNS_TYPE_PTR:
+ if rec_match.data.str.rstrip('.') == data.rstrip('.'):
+ found = True
elif record_type == dnsp.DNS_TYPE_CNAME:
- if rec_match.data == data:
+ if rec_match.data.str.rstrip('.') == data.rstrip('.'):
found = True
elif record_type == dnsp.DNS_TYPE_NS:
- if rec_match.data == data:
+ if rec_match.data.str.rstrip('.') == data.rstrip('.'):
found = True
if found:
class cmd_add_record(Command):
"""Add a DNS record"""
- synopsis = '%prog <server> <zone> <name> <A|AAAA|CNAME|NS> <data>'
+ synopsis = '%prog <server> <zone> <name> <A|AAAA|PTR|CNAME|NS> <data>'
takes_args = [ 'server', 'zone', 'name', 'rtype', 'data' ]
rec = ARecord(data)
elif record_type == dnsp.DNS_TYPE_AAAA:
rec = AAAARecord(data)
+ elif record_type == dnsp.DNS_TYPE_PTR:
+ rec = PTRRecord(data)
elif record_type == dnsp.DNS_TYPE_CNAME:
rec = CNameRecord(data)
elif record_type == dnsp.DNS_TYPE_NS:
class cmd_update_record(Command):
"""Update a DNS record"""
- synopsis = '%prog <server> <zone> <name> <A|AAAA|CNAME|NS> <olddata> <newdata>'
+ synopsis = '%prog <server> <zone> <name> <A|AAAA|PTR|CNAME|NS> <olddata> <newdata>'
takes_args = [ 'server', 'zone', 'name', 'rtype', 'olddata', 'newdata' ]
rec = ARecord(newdata)
elif record_type == dnsp.DNS_TYPE_AAAA:
rec = AAAARecord(newdata)
+ elif record_type == dnsp.DNS_TYPE_PTR:
+ rec = PTRRecord(newdata)
elif record_type == dnsp.DNS_TYPE_CNAME:
rec = CNameRecord(newdata)
elif record_type == dnsp.DNS_TYPE_NS:
class cmd_delete_record(Command):
"""Delete a DNS record"""
- synopsis = '%prog <server> <zone> <name> <A|AAAA|CNAME|NS> <data>'
+ synopsis = '%prog <server> <zone> <name> <A|AAAA|PTR|CNAME|NS> <data>'
takes_args = [ 'server', 'zone', 'name', 'rtype', 'data' ]
rec = ARecord(data)
elif record_type == dnsp.DNS_TYPE_AAAA:
rec = AAAARecord(data)
+ elif record_type == dnsp.DNS_TYPE_PTR:
+ rec = PTRRecord(data)
elif record_type == dnsp.DNS_TYPE_CNAME:
rec = CNameRecord(data)
elif record_type == dnsp.DNS_TYPE_NS: