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)