mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
Tests:
- Config app description is as expected.
- Config form does not show domain name field anymore.
- Submitting the form with changes works.
- Names app has correct link for configuring static domain name. Clicking it
takes to page for setting domain name.
- On startup, static domian name signal is sent properly if set. Otherwise no
signal is send.
- Change domain name form shows correct value for current domain name.
- Change domain name form sets the value for domain name properly.
- Page title is correct.
- Validations works.
- Add/remove domain name signals are sent properly.
- Success message as shown expected
- /etc/hosts is updated as expected.
- Unit tests work.
- Functional tests on ejabberd, letsencrypt, matrix, email, jsxc, openvpn
- After freshly starting the service. Visiting names app shows correct list of
domains.
- ejabberd:
- Installs works as expected. Currently set domain_name is setup properly.
Copy certificate happens on proper domain.
- Changing the domain sets the domain properly in ejabberd configuration.
- Ejabberd app page shows link to name services instead of config app.
Clicking works as expected.
- letsencrypt:
- When no domains are configured, the link to 'Configure domains' is to the
names app.
- matrix-synapse:
- Domain name is properly shown in the status.
- email:
- Primary domain name is shows properly in the app page.
- Setting new primary domain works.
- When installing, domain set as static domain name is prioritized as primary
domain.
- jsxc:
- Show the current static domain name in the domain field. BOSH server is
available.
- openvpn:
- Show the current static domain in profile is set otherwise show the current
hostname.
- If domain name is not set, downloaded OpenVPN profile shows hostname.
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""FreedomBox views for basic system configuration."""
|
|
|
|
from django.contrib import messages
|
|
from django.utils.translation import gettext as _
|
|
|
|
from plinth import views
|
|
from plinth.modules import config
|
|
|
|
from . import privileged
|
|
from .forms import ConfigurationForm
|
|
|
|
|
|
class ConfigAppView(views.AppView):
|
|
"""Serve configuration page."""
|
|
|
|
form_class = ConfigurationForm
|
|
app_id = 'config'
|
|
|
|
def get_initial(self):
|
|
"""Return the current status."""
|
|
return {
|
|
'homepage': config.get_home_page(),
|
|
'advanced_mode': config.get_advanced_mode(),
|
|
'logging_mode': privileged.get_logging_mode(),
|
|
}
|
|
|
|
def form_valid(self, form):
|
|
"""Apply the form changes."""
|
|
old_status = form.initial
|
|
new_status = form.cleaned_data
|
|
|
|
is_changed = False
|
|
|
|
if old_status['homepage'] != new_status['homepage']:
|
|
try:
|
|
config.change_home_page(new_status['homepage'])
|
|
except Exception as exception:
|
|
messages.error(
|
|
self.request,
|
|
_('Error setting webserver home page: {exception}').format(
|
|
exception=exception))
|
|
else:
|
|
messages.success(self.request, _('Webserver home page set'))
|
|
|
|
if old_status['advanced_mode'] != new_status['advanced_mode']:
|
|
try:
|
|
config.set_advanced_mode(new_status['advanced_mode'])
|
|
except Exception as exception:
|
|
messages.error(
|
|
self.request,
|
|
_('Error changing advanced mode: {exception}').format(
|
|
exception=exception))
|
|
else:
|
|
if new_status['advanced_mode']:
|
|
messages.success(self.request,
|
|
_('Showing advanced apps and features'))
|
|
else:
|
|
messages.success(self.request,
|
|
_('Hiding advanced apps and features'))
|
|
|
|
if old_status['logging_mode'] != new_status['logging_mode']:
|
|
privileged.set_logging_mode(new_status['logging_mode'])
|
|
is_changed = True
|
|
|
|
if is_changed:
|
|
messages.success(self.request, _('Configuration updated'))
|
|
|
|
return super().form_valid(form)
|