From d0fcc179a7db02426e46cccf41c22708bc9236e7 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 4 Feb 2020 14:21:46 +0000 Subject: [PATCH] bind: views show served domains in main view Signed-off-by: Nektarios Katakis Reviewed-by: James Valleroy --- plinth/modules/bind/templates/bind.html | 55 +++++++++++++++++++++++++ plinth/modules/bind/views.py | 32 ++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 plinth/modules/bind/templates/bind.html diff --git a/plinth/modules/bind/templates/bind.html b/plinth/modules/bind/templates/bind.html new file mode 100644 index 000000000..fcadda74d --- /dev/null +++ b/plinth/modules/bind/templates/bind.html @@ -0,0 +1,55 @@ +{% extends "app.html" %} +{% comment %} +# +# This file is part of FreedomBox. +# +# 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 . +# +{% endcomment %} +{% load bootstrap %} +{% load i18n %} + +{% block status %} + {{ block.super }} + +

{% trans "Serving Domains" %}

+ + + + + + + + + + + + {% for domain in domains_table %} + + + + + + + {% endfor %} + +
{% trans "Type" %}{% trans "Domain Names" %}{% trans "Serving" %}{% trans "IP addresses" %}
{{ domain.type}}{{ domain.domain_name}}{{ domain.serving }}{{ domain.ip_address }}
+
+ + + {% trans 'Refresh IP address and domains' %} + +
+{% endblock %} diff --git a/plinth/modules/bind/views.py b/plinth/modules/bind/views.py index fe01456ae..8649b7c01 100644 --- a/plinth/modules/bind/views.py +++ b/plinth/modules/bind/views.py @@ -23,6 +23,7 @@ from django.utils.translation import ugettext_lazy as _ from plinth import actions from plinth.views import AppView +from plinth.modules import bind, names from . import description, get_config, name, port_forwarding_info from .forms import BindForm @@ -35,8 +36,39 @@ class BindAppView(AppView): # pylint: disable=too-many-ancestors description = description show_status_block = True form_class = BindForm + template_name = 'bind.html' port_forwarding_info = port_forwarding_info + def get_context_data(self, *args, **kwargs): + """ + Get/append information for domains bind is configured to respond for + and additional names from the names module + """ + context = super().get_context_data(**kwargs) + + served_domains = bind.get_served_domains() + context['domains_table'] = [] + for key, val in served_domains.items(): + if key == 'localhost.': + continue + + context['domains_table'].append({ + 'type': 'Domain Name', + 'domain_name': key[:-1:], + 'serving': 'Yes', + 'ip_address': ', '.join(val), + }) + + for item in names.components.DomainName.list(): + context['domains_table'].append({ + 'type': item.domain_type.display_name, + 'domain_name': item.name, + 'serving': '-', + 'ip_address': '' + }) + + return context + def get_initial(self): """Return the values to fill in the form.""" initial = super().get_initial()