Diaspora: Checking whether domain name is setup before certain actions

This commit is contained in:
Joseph Nuthalpati 2017-04-25 17:56:41 +05:30 committed by James Valleroy
parent 5ffcf42278
commit 3a6dc03ee9
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
4 changed files with 28 additions and 16 deletions

View File

@ -21,7 +21,6 @@ Configuration helper for diaspora* pod.
"""
import argparse
import socket
import subprocess
from plinth import action_utils
@ -31,7 +30,7 @@ def parse_arguments():
"""Return parsed command line arguments as dictionary."""
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')
pre_install = subparsers.add_parser(
subparsers.add_parser(
'pre-install',
help='Preseed debconf values before packages are installed.')
@ -87,6 +86,7 @@ def subcommand_disable_ssl(_):
Disable ssl in the diaspora configuration
as the apache server takes care of ssl
"""
# Using sed because ruamel.yaml has a bug for this kind of files
subprocess.call([
"sed", "-i", "s/#require_ssl: true/require_ssl: false/g",
"/etc/diaspora/diaspora.yml"

View File

@ -38,3 +38,11 @@ class DomainRegistrationError(PlinthError):
class PackageNotInstalledError(PlinthError):
"""Could not complete module setup due to missing package."""
pass
class DomainNotRegisteredError(PlinthError):
"""
An action couldn't be performed because this
FreedomBox doesn't have a registered domain
"""
pass

View File

@ -1,4 +1,3 @@
#
# This file is part of Plinth.
#
# This program is free software: you can redistribute it and/or modify
@ -15,14 +14,15 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import subprocess
import os
from django.utils.translation import ugettext_lazy as _
from plinth.modules import names
from plinth.utils import format_lazy
from plinth import actions, action_utils, cfg, frontpage, service as service_module
from plinth import actions, action_utils, cfg, frontpage, \
service as service_module
from plinth.errors import DomainNotRegisteredError
domain_name_file = "/etc/diaspora/domain_name"
lazy_domain_name = None # To avoid repeatedly reading from file
@ -33,15 +33,16 @@ def is_setup():
def get_configured_domain_name():
global lazy_domain_name
if lazy_domain_name:
return lazy_domain_name
if not is_setup():
return ""
raise DomainNotRegisteredError()
with open(domain_name_file) as dnf:
global lazy_domain_name
lazy_domain_name = dnf.read().rstrip()
lazy_domain_name = dnf.read().rstrip()
return lazy_domain_name
@ -60,12 +61,14 @@ managed_services = ['diaspora']
managed_packages = ['diaspora']
description = [
_('diaspora* is a decentralized social network where you can store and control your own data.'
),
_('diaspora* is a decentralized social network where you can store '
'and control your own data.'),
format_lazy(
'When enabled, the diaspora* pod will be available from '
'<a href="https://diaspora.{host}">diaspora.{host}</a> path on the web server.'.
format(host=get_configured_domain_name()))
'<a href="https://diaspora.{host}">diaspora.{host}</a> path on the '
'web server.'.format(host=get_configured_domain_name()) if is_setup()
else 'Please register a domain name for your FreedomBox to be able to'
' federate with other diaspora* pods.')
]
@ -126,11 +129,11 @@ def get_domain_names():
def add_shortcut():
"""Add shortcut to diaspora on the Plinth homepage"""
frontpage.add_shortcut(
'diaspora',
title,
url='https://diaspora.{}'.format(get_configured_domain_name()),
login_required=True)
if is_setup():
frontpage.add_shortcut(
'diaspora', title,
url='https://diaspora.{}'.format(get_configured_domain_name()),
login_required=True)
def is_enabled():

View File

@ -40,6 +40,7 @@ class DiasporaSetupView(FormView):
domain_name = form.cleaned_data['domain_name']
actions.superuser_run('diaspora',
['setup', '--domain-name', domain_name])
diaspora.add_shortcut()
return super().form_valid(form)