summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/scripting/python/samba/netcmd/dns.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/source4/scripting/python/samba/netcmd/dns.py b/source4/scripting/python/samba/netcmd/dns.py
index 9607cd92fd..b566a34159 100644
--- a/source4/scripting/python/samba/netcmd/dns.py
+++ b/source4/scripting/python/samba/netcmd/dns.py
@@ -471,6 +471,54 @@ class SRVRecord(dnsserver.DNS_RPC_RECORD):
srv.nameTarget.len = len(target)
self.data = srv
+
+# Convert data into a dns record
+def data_to_dns_record(record_type, data):
+ if record_type == dnsp.DNS_TYPE_A:
+ 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:
+ rec = NSRecord(data)
+ elif record_type == dnsp.DNS_TYPE_MX:
+ tmp = data.split(' ')
+ if len(tmp) != 2:
+ raise CommandError('Data requires 2 elements - mail_server, preference')
+ mail_server = tmp[0]
+ preference = int(tmp[1])
+ rec = MXRecord(mail_server, preference)
+ elif record_type == dnsp.DNS_TYPE_SRV:
+ tmp = data.split(' ')
+ if len(tmp) != 4:
+ raise CommandError('Data requires 4 elements - server, port, priority, weight')
+ server = tmp[0]
+ port = int(tmp[1])
+ priority = int(tmp[2])
+ weight = int(tmp[3])
+ rec = SRVRecord(server, port, priority=priority, weight=weight)
+ elif record_type == dnsp.DNS_TYPE_SOA:
+ tmp = data.split(' ')
+ if len(tmp) != 7:
+ raise CommandError('Data requires 7 elements - nameserver, email, serial, '
+ 'refresh, retry, expire, minimumttl')
+ nameserver = tmp[0]
+ email = tmp[1]
+ serial = int(tmp[2])
+ refresh = int(tmp[3])
+ retry = int(tmp[4])
+ expire = int(tmp[5])
+ minimum = int(tmp[6])
+ rec = SOARecord(nameserver, email, serial=serial, refresh=refresh,
+ retry=retry, expire=expire, minimum=minimum)
+ else:
+ raise CommandError('Unsupported record type')
+ return rec
+
+
# Match a dns record with specified data
def dns_record_match(dns_conn, server, zone, name, record_type, data):
select_flags = dnsserver.DNS_RPC_VIEW_AUTHORITY_DATA