diff --git a/actions/diaspora b/actions/diaspora index b904aae96..9ed2ca462 100755 --- a/actions/diaspora +++ b/actions/diaspora @@ -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" diff --git a/plinth/errors.py b/plinth/errors.py index 0c9273228..946c37c16 100644 --- a/plinth/errors.py +++ b/plinth/errors.py @@ -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 diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 34e353bad..0a15d929d 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -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 . # -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 ' - 'diaspora.{host} path on the web server.'. - format(host=get_configured_domain_name())) + 'diaspora.{host} 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(): diff --git a/plinth/modules/diaspora/views.py b/plinth/modules/diaspora/views.py index c271aff11..092798fb5 100644 --- a/plinth/modules/diaspora/views.py +++ b/plinth/modules/diaspora/views.py @@ -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)