diff --git a/binder/templates/bcommon/list_server_zones.html b/binder/templates/bcommon/list_server_zones.html
index 0d06a73..9b7ad21 100644
--- a/binder/templates/bcommon/list_server_zones.html
+++ b/binder/templates/bcommon/list_server_zones.html
@@ -9,8 +9,8 @@
View |
Serial Number |
-{% for current_zone, cz_data in zone_array.stats.zone_stats.iteritems %}
- {% for current_view, cv_data in cz_data.iteritems %}
+{% for current_zone, cz_data in zone_array.stats.zone_stats.items %}
+ {% for current_view, cv_data in cz_data.items %}
{{ current_zone }}
diff --git a/binder/templates/bcommon/list_servers.html b/binder/templates/bcommon/list_servers.html
index ca195ca..7eb1320 100644
--- a/binder/templates/bcommon/list_servers.html
+++ b/binder/templates/bcommon/list_servers.html
@@ -7,6 +7,7 @@
|
Hostname |
IP Address |
+ Server Type |
{% for current_server in server_info %}
@@ -15,6 +16,7 @@
{{type}}: {{data}}
{% endfor %}
+ {{ current_server.server_type}} |
{% endfor %}
diff --git a/binder/templates/bcommon/list_zone.html b/binder/templates/bcommon/list_zone.html
index a229ee8..513985a 100644
--- a/binder/templates/bcommon/list_zone.html
+++ b/binder/templates/bcommon/list_zone.html
@@ -27,6 +27,7 @@
{{ current_record.rr_data }} |
|
diff --git a/binder/views.py b/binder/views.py
index 62494d2..1b3e057 100644
--- a/binder/views.py
+++ b/binder/views.py
@@ -1,12 +1,15 @@
-# Binder VIews
+# Binder Views
+
+import subprocess
# 3rd Party
+import dns.query
from django.contrib import messages
from django.shortcuts import get_object_or_404, redirect, render
# App Imports
from binder import forms, helpers, models
-from binder.exceptions import KeyringException, RecordException, TransferException, ZoneException
+from binder import exceptions
def home_index(request):
"""List the main index page for Binder."""
@@ -19,7 +22,8 @@ def view_server_list(request):
server_info = []
for current in server_list:
server_info.append({"host_name": current,
- "ip_address": helpers.ip_info(current.hostname)})
+ "ip_address": helpers.ip_info(current.hostname),
+ "server_type": current.server_type})
return render(request, "bcommon/list_servers.html",
{"server_info": server_info})
@@ -33,8 +37,10 @@ def view_server_zones(request, dns_server):
try:
zone_array = this_server.list_zones()
- except ZoneException as exc:
+ except exceptions.ZoneException as exc:
messages.error(request, "Unable to list server zones. Error: %s" % exc)
+ except subprocess.CalledProcessError as err:
+ messages.error(request, "Error in retrieving zones: %s." % str(err.output))
return render(request, "bcommon/list_server_zones.html",
{"dns_server": this_server,
@@ -49,22 +55,31 @@ def view_zone_records(request, dns_server, zone_name):
try:
zone_array = this_server.list_zone_records(zone_name)
- except TransferException as exc:
+ except exceptions.TransferException as exc:
+ messages.error(request, "TransferException: %s." % exc)
return render(request, "bcommon/list_zone.html",
{"zone_name": zone_name,
"dns_server": this_server})
- except KeyringException:
+ except exceptions.KeyringException:
messages.error(request, "Unable to get zone list. A problem was encountered "
"decrypting your TSIG key. Ensure the key is correctly "
"specified in the Binder Database.")
return render(request, "bcommon/list_zone.html",
{ "dns_server": this_server,
"zone_name" :zone_name })
+ except dns.query.TransferError as err:
+ messages.error(request, "TransferError: %s." % err)
+ return render(request, "bcommon/list_zone.html",
+ {"zone_name": zone_name,
+ "dns_server": this_server})
return render(request, "bcommon/list_zone.html",
{"zone_array": zone_array,
"dns_server": this_server,
- "zone_name": zone_name})
+ "zone_name": zone_name,
+ # NOTE: A hack because NSD doesn't support dynamic updates
+ # so merely display the zone.
+ "dynamic_dns_available": this_server.server_type in ['BIND']})
def view_add_record(request, dns_server, zone_name):
@@ -86,7 +101,8 @@ def view_add_record(request, dns_server, zone_name):
form_cleaned["ttl"],
form_cleaned["key_name"],
form_cleaned["create_reverse"])
- except (KeyringException, RecordException) as exc:
+ except (exceptions.KeyringException,
+ exceptions.RecordException) as exc:
messages.error(request, "Adding %s.%s failed: %s" %
(form_cleaned["record_name"], zone_name, exc))
else:
@@ -130,7 +146,8 @@ def view_edit_record(request, dns_server, zone_name, record_name=None,
form_cleaned["ttl"],
form_cleaned["key_name"],
form_cleaned["create_reverse"])
- except (KeyringException, RecordException) as exc:
+ except (exceptions.KeyringException,
+ exceptions.RecordException) as exc:
messages.error(request, "Modifying %s.%s failed: %s" %
(form_cleaned["record_name"], zone_name, exc))
else:
@@ -173,7 +190,8 @@ def view_add_cname_record(request, dns_server, zone_name, record_name):
str(form_cleaned["zone_name"])),
form_cleaned["ttl"],
form_cleaned["key_name"])
- except (KeyringException, RecordException) as exc:
+ except (exceptions.KeyringException,
+ exceptions.RecordException) as exc:
messages.error(request, "Adding %s.%s failed: %s" %
(form_cleaned["cname"], zone_name, exc))
else:
@@ -215,7 +233,7 @@ def view_delete_record(request, dns_server, zone_name):
response = helpers.delete_record(form_cleaned["dns_server"],
rr_list,
form_cleaned["key_name"])
- except KeyringException as exc:
+ except exceptions.KeyringException as exc:
for record in rr_list:
messages.error(request, "Deleting %s.%s failed: %s" %
(record, zone_name, exc))