bind: Add validator

This commit is contained in:
mridulnagpal 2017-01-04 14:17:53 +05:30 committed by James Valleroy
parent 0312c41415
commit e0abdbd0e9
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
3 changed files with 38 additions and 12 deletions

View File

@ -30,7 +30,7 @@ CONFIG_FILE = '/etc/bind/named.conf.options'
value1 = 'acl goodclients { \n localnets;\n};\n'
value2 = ' recursion yes;\n allow-query { goodclients; };\n\n'
value3 = ' // 8.8.8.8 8.8.4.4;\n'
value3 = ' // 8.8.8.8; 8.8.4.4;\n'
value4 = ' //forward first;\n'
value5 = ' //dnssec-enable yes;\n'
@ -104,7 +104,7 @@ def set_forwarding(choice):
flag = 1
if flag == 1:
line = ' // '+line
if 'forward only' in line:
if 'forward first' in line:
flag = 0
if "0.0.0.0" not in line:
f.write(line+'\n')
@ -153,7 +153,9 @@ def set(DNS):
for line in data:
if 'forwarders {' in line :
f.write(line+'\n')
f.write(DNS+';\n')
for dns in DNS.split():
f.write(dns+'; ')
f.write('\n')
flag = 1
elif '};' and flag == 1:
flag = 0

View File

@ -19,8 +19,11 @@
Plinth module to configure BIND server
"""
import re
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.core.validators import validate_ipv46_address
from plinth import actions
from plinth import action_utils
@ -123,7 +126,7 @@ def get_default():
set_forwarding = False
else:
set_forwarding = True
if '//dnssec-enable yes;' in data:
if '// dnssec-enable yes;' in data or '//dnssec-enable yes;' in data:
enable_dnssec = False
else:
enable_dnssec = True
@ -132,7 +135,10 @@ def get_default():
for line in data:
if flag == 1:
dns_set = line[:len(line)-1]
if '//' in line:
dns_set = ''
else:
dns_set = re.sub('[;]', '', line)
flag = 0
if 'forwarders {' in line:
flag = 1
@ -143,3 +149,12 @@ def get_default():
'dns_set': dns_set
}
return conf
def validate(IP):
for ip in IP.split():
try :
validate_ipv46_address(ip)
except:
return False
return True

View File

@ -26,7 +26,7 @@ from plinth import actions
from plinth.views import ServiceView
from . import description, managed_services, get_default
from . import description, managed_services, get_default, validate
from .forms import BindForm
@ -65,11 +65,20 @@ class BindServiceView(ServiceView): # pylint: disable=too-many-ancestors
messages.success(self.request,
_('Enable DNSSEC configuration updated'))
if old_config['dns_set'] != data['dns_set']:
actions.superuser_run(
'bind',
['dns', '--set', data['dns_set']])
messages.success(self.request,
_('DNS server configuration updated'))
if old_config['dns_set'] != data['dns_set'] and old_config['dns_set'] is not '':
if validate(data['dns_set']) is True:
actions.superuser_run(
'bind',
['dns', '--set', data['dns_set']])
messages.success(self.request,
_('DNS server configuration updated'))
else:
messages.error(self.request,
_('Enter a valid IPv4 or IPv6 address.'))
elif old_config['dns_set'] is '' and old_config['dns_set'] != data['dns_set']:
messages.error(self.request,
_('Enable forwarding to set forwarding DNS servers'))
return super().form_valid(form)