2015-03-23 20:51:31 +00:00
|
|
|
import binascii
|
|
|
|
import dns.tsigkeyring
|
2019-02-14 01:17:05 +00:00
|
|
|
from binder.models import BindServer, Key
|
2011-04-11 02:23:17 +00:00
|
|
|
from django.contrib import admin
|
2015-03-23 20:51:31 +00:00
|
|
|
from django.forms import ModelForm, ValidationError
|
|
|
|
|
2015-06-13 10:05:42 +00:00
|
|
|
|
2012-11-09 04:00:06 +00:00
|
|
|
class BindServerAdmin(admin.ModelAdmin):
|
2019-03-18 00:36:28 +00:00
|
|
|
list_display = ['hostname', 'server_type', 'control_port', 'default_transfer_key']
|
2015-03-23 20:51:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
class KeyAdminForm(ModelForm):
|
|
|
|
def clean_data(self):
|
|
|
|
try:
|
2015-06-13 10:05:42 +00:00
|
|
|
dns.tsigkeyring.from_text({'': self.cleaned_data["data"]})
|
2015-03-23 20:51:31 +00:00
|
|
|
except binascii.Error as err:
|
|
|
|
raise ValidationError("Invalid key data: %(error)s",
|
|
|
|
params={'error': err})
|
|
|
|
return self.cleaned_data["data"]
|
|
|
|
|
2011-04-13 23:17:48 +00:00
|
|
|
|
|
|
|
class KeyAdmin(admin.ModelAdmin):
|
2015-03-23 20:51:31 +00:00
|
|
|
form = KeyAdminForm
|
|
|
|
list_display = ['name', 'data', 'algorithm']
|
|
|
|
|
2011-04-13 23:17:48 +00:00
|
|
|
|
2012-11-09 04:00:06 +00:00
|
|
|
admin.site.register(BindServer, BindServerAdmin)
|
2011-04-13 23:17:48 +00:00
|
|
|
admin.site.register(Key, KeyAdmin)
|