mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-21 07:55:00 +00:00
bind: Add basic config
This commit is contained in:
parent
4439831922
commit
da408d3381
103
actions/bind
Executable file
103
actions/bind
Executable file
@ -0,0 +1,103 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- mode: python -*-
|
||||
#
|
||||
# This file is part of Plinth.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
"""
|
||||
Configuration helper for BIND server.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
|
||||
from plinth import action_utils
|
||||
|
||||
|
||||
CONFIG_FILE = '/etc/bind/named.conf.options'
|
||||
CONFIG_FILE_2 = '/etc/bind/named_temp.conf.options'
|
||||
|
||||
def parse_arguments():
|
||||
"""Return parsed command line arguments as dictionary"""
|
||||
parser = argparse.ArgumentParser()
|
||||
subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')
|
||||
|
||||
configure = subparsers.add_parser('configure', help='Configure Minetest')
|
||||
configure.add_argument('--set-forwarding', choices=['true', 'false'],
|
||||
help='Set forwarding true/false')
|
||||
configure.add_argument('--dnssec', choices=['true', 'false'],
|
||||
help='Set DNSSEC true/false')
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def subcommand_configure(arguments):
|
||||
"""Configure BIND."""
|
||||
|
||||
if arguments.set_forwarding:
|
||||
set_forwarding(arguments.set_forwarding)
|
||||
|
||||
action_utils.service_restart('bind9')
|
||||
|
||||
|
||||
def set_forwarding(choice):
|
||||
"""Sets forwarding true/false"""
|
||||
if choice == False:
|
||||
flag = 0
|
||||
f = open(CONFIG_FILE, 'r')
|
||||
w = open(CONFIG_FILE_2, 'w+')
|
||||
for line in f:
|
||||
if 'forwarders {' in line and not '// forwarders {' in line:
|
||||
flag = 1
|
||||
if flag == 1:
|
||||
line = ' //'+line
|
||||
print(line)
|
||||
if 'forward only' in line:
|
||||
flag = 0
|
||||
w.write(line)
|
||||
f.close()
|
||||
w.close()
|
||||
os.rename('named.conf_temp.options', 'named.conf.options')
|
||||
|
||||
if choice == True:
|
||||
flag = 0
|
||||
f = open(CONFIG_FILE, 'r')
|
||||
w = open(CONFIG_FILE_2, 'w+')
|
||||
for line in f:
|
||||
if '// forwarders {' in line:
|
||||
print("yesy")
|
||||
flag = 1
|
||||
if flag == 1:
|
||||
line = line[3:]
|
||||
print(line)
|
||||
if 'forward only' in line:
|
||||
flag = 0
|
||||
w.write(line)
|
||||
f.close()
|
||||
w.close()
|
||||
os.rename('named.conf_temp.options', 'named.conf.options')
|
||||
|
||||
|
||||
def main():
|
||||
"""Parse arguments and perform all duties"""
|
||||
arguments = parse_arguments()
|
||||
|
||||
subcommand = arguments.subcommand.replace('-', '_')
|
||||
subcommand_method = globals()['subcommand_' + subcommand]
|
||||
subcommand_method(arguments)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@ -53,10 +53,16 @@ description = [
|
||||
'systems are fully compliant with published DNS standards.')
|
||||
]
|
||||
|
||||
CONFIG_FILE = '/etc/bind/named.conf.options'
|
||||
|
||||
value1 = 'acl goodclients { \n localhost;\n};\n'
|
||||
value2 = ' recursion yes;\n allow-query { goodclients; };\n\n'
|
||||
value3 = ' // 8.8.8.8;\n // 8.8.4.4;\n'
|
||||
|
||||
|
||||
def init():
|
||||
"""Intialize the BIND module."""
|
||||
menu = cfg.main_menu.get('apps:index')
|
||||
menu = cfg.main_menu.get('system:index')
|
||||
menu.add_urlname(title, 'glyphicon-globe', 'bind:index')
|
||||
|
||||
global service
|
||||
@ -65,10 +71,7 @@ def init():
|
||||
service = service_module.Service(
|
||||
managed_services[0], title, ports=['bind-plinth'],
|
||||
is_external=True,
|
||||
enable=enable, disable=disable)
|
||||
|
||||
if service.is_enabled():
|
||||
add_shortcut()
|
||||
)
|
||||
|
||||
|
||||
class BindServiceView(ServiceView):
|
||||
@ -87,14 +90,7 @@ def setup(helper, old_version=None):
|
||||
is_external=True,
|
||||
enable=enable, disable=disable)
|
||||
helper.call('post', service.notify_enabled, None, True)
|
||||
helper.call('post', add_shortcut)
|
||||
|
||||
|
||||
def add_shortcut():
|
||||
frontpage.add_shortcut('bind', title,
|
||||
details=description,
|
||||
configure_url=reverse_lazy('bind:index'),
|
||||
login_required=False)
|
||||
helper.call('post', default_config)
|
||||
|
||||
|
||||
def enable():
|
||||
@ -117,3 +113,29 @@ def diagnose():
|
||||
results.append(action_utils.diagnose_port_listening(53, 'udp6'))
|
||||
|
||||
return results
|
||||
|
||||
def default_config():
|
||||
"""Initialize config file for BIND"""
|
||||
f = open(CONFIG_FILE, "r")
|
||||
contents = f.readlines()
|
||||
f.close()
|
||||
|
||||
contents.insert(0, value1)
|
||||
contents.insert(4, value2)
|
||||
contents.insert(15, value3)
|
||||
|
||||
f = open(CONFIG_FILE, "w")
|
||||
contents = "".join(contents)
|
||||
f.write(contents)
|
||||
f.close()
|
||||
|
||||
def get_default():
|
||||
"""Get initial value for forwarding"""
|
||||
f = open(CONFIG_FILE, "r")
|
||||
contents = f.readlines()
|
||||
if '// forwarders {' in contents:
|
||||
conf = {
|
||||
'set_forwarding': False}
|
||||
else:
|
||||
conf = {
|
||||
'set_forwarding': True}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user